第一次做支付寶支付,由於不能在線上單獨測試,所以只能在外網上建立一個臨時的頁面接收支付寶異步回調的數據,然后再拿回到本地,修改回調處理接收數據的方式post變成get,拼接一下參數走一下回調,方法很笨。
現在我在外網測試頁面用http_build_query函數直接把$_POST數組生成query_string,直接輸出query_string,會出現一個有趣的現象,其中的參數¬會被解析成¬這個字符,大爺的,請注意這不是支付寶那邊返回的數據不正確,而是我這邊輸出
在瀏覽器解析出現了問題,后來我手動把¬改成¬,最后測試,成功了,簽名正確!
其實另外還有一個問題也會造成數字簽名不一致,就是需要簽名的參數中摻雜了其他參數,如果是url上一定要帶上的,記得在簽名驗證前把不需要簽名的參數給過濾掉,這樣就沒問題了。