微信支付統一下單接口(正式環境突然簽名失敗)

程序早就上線,放阿里雲,代理無任何改動,怎麼會突然簽名錯誤,怎麼想都不通。

 

第一:排除代碼錯誤

之前能正常支付的,現在突然不行,代碼是沒問題的。

可以驗證  微信簽名驗證工具

 

第二:修改商戶API密鑰

驗證工具只能校驗簽名算法是否正確,無法校驗商戶KEY是否正確,所有確保萬一,還是重置一下key

 

 

 

 

 

 

 

 

 

 

第三:替換籤名方法(工具類)

本人好生奇怪(服務器上工具類的修改時間,和本地修改時間一致),但是就是重新替換一下就成功了,

想來想去,唯一的解釋服務器上的class文件損壞了,有大牛知道具體原因還請留言賜教

附上簽名算法

    @SuppressWarnings("unchecked")
	public static String getSign(Object o) throws IllegalAccessException {
        ArrayList<String> list = new ArrayList<String>();
        Class cls = o.getClass();
        Field[] fields = cls.getDeclaredFields();
        for (Field f : fields) {
            f.setAccessible(true);
            if (f.get(o) != null && f.get(o) != "") {
                list.add(f.getName() + "=" + f.get(o) + "&");
            }
        }
        int size = list.size();
        String [] arrayToSort = list.toArray(new String[size]);
        Arrays.sort(arrayToSort, String.CASE_INSENSITIVE_ORDER);
        StringBuilder sb = new StringBuilder();
        for(int i = 0; i < size; i ++) {
            sb.append(arrayToSort[i]);
        }
        String result = sb.toString();
        result += "key=" + ParamConfig.key;
        result = MD5.MD5Encode(result).toUpperCase();
        return result;
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章