1. 程式人生 > >支付寶電腦網站支付漢字亂碼導致驗籤失敗處理

支付寶電腦網站支付漢字亂碼導致驗籤失敗處理

由於支付寶產品的全面升級,需要將支付寶電腦網站支付的介面升級至新版介面,介面文件地址:https://docs.open.alipay.com/270/105899/,按照快速接入文件的介紹完成程式碼改造後,準備進行測試,由於系統的特殊性,在呼叫統一收單下單並支付頁面介面的時候沒有使用提供的SDK包生成表單頁面的形式,而是自己呼叫AlipaySignature.rsaSign方法進行簽名,實際測試的時候發現支付寶提示簽名錯誤,尷尬!!!一開始沒有注意支付寶錯誤頁面上顯示的錯誤資訊,以為是簽名寫的有問題,所以該用支付寶的DEMO進行表單的生成,依然出現驗籤錯誤,在確定金鑰資訊無誤後看了下支付寶的錯誤頁面,部分中文出現了亂碼,所以就猜想是由於雙方字元編碼不一致導致的驗籤錯誤。
我們系統使用的是utf-8

,檢查了一下請求引數,在公共引數中charset傳入的確實是utf-8,這樣就很詭異了,然後就考慮是不是與請求方式有關係,目前引數提交的方式是post,所有請求引數都是放在表單的隱藏域中提交,考慮是這種提交方式會導致支付寶獲取編碼錯誤導致亂碼,所以就在介面的請求地址後面拼接了編碼資訊,即將原請求地址:https://openapi.alipay.com/gateway.do更改為:https://openapi.alipay.com/gateway.do?charset=utf-8,再次提交測試成功,驗籤通過,付款頁面正常顯示。

將原請求地址:https://openapi.alipay.com/gateway.do

更改為:https://openapi.alipay.com/gateway.do?charset=utf-8
將原請求地址:https://openapi.alipay.com/gateway.do更改為:https://openapi.alipay.com/gateway.do?charset=utf-8
將原請求地址:https://openapi.alipay.com/gateway.do更改為:https://openapi.alipay.com/gateway.do?charset=utf-8

重要的事情說三遍,哈哈哈!!!

如果使用支付寶的SDK包,一定不能新增引數,否則會報空指標異常

這是目前我的解決方法,網上還有一些設定Tomcat

的URI請求編碼的方法,如果遇到這樣的問題,大家也可以去嘗試一下。