本文目錄一覽:
PHP 的API介面
使用PHP寫api介面是經常做的,PHP寫好介面後,前台就可以通過鏈接獲取介面提供的數據,而返回的數據一般分為兩種情況,xml和json,在這個過程中,伺服器並不知道,請求的來源是什麼,有可能是別人非法調用我們的介面,獲取數據,因此就要使用安全驗證
原理
從圖中可以看得很清楚,前台想要調用介面,需要使用幾個參數生成簽名。
時間戳:當前時間
隨機數:隨機生成的隨機數
口令:前後台開發時,一個雙方都知道的標識,相當於暗號
演算法規則:商定好的運算規則,上面三個參數可以利用演算法規則生成一個簽名。前台生成一個簽名,當需要訪問介面的時候,把時間戳,隨機數,簽名通過URL傳遞到後台。後台拿到時間戳,隨機數後,通過一樣的演算法規則計算出簽名,然後和傳遞過來的簽名進行對比,一樣的話,返回數據。
演算法規則
在前後台交互中,演算法規則是非常重要的,前後台都要通過演算法規則計算出簽名,至於規則怎麼制定,看你怎麼高興怎麼來。
我這個演算法規則是
時間戳,隨機數,口令按照首字母大小寫順序排序
然後拼接成字元串
進行sha1加密
再進行MD5加密
轉換成大寫。
PHP版調用淘寶API提示25簽名錯誤Invalid signature
Invalid signature
你的appkey無效,這個API是在你對應的appkey生成的SDK文件裡面的嗎?
換個appkey試試
微信支付遇到簽名驗證失敗的解決方法
1.下單的簽名方式使用MD5方式
2.利用下單獲取到的prepay_id,來進行調起支付階段的paySign的簽名
3.如果提示簽名驗證失敗:
①首先檢查你的5個參數是否完整:timeStamp,nonceStr,package,signType,paySign
②signType 必須是MD5,官方demo不是MD5,改為MD5,這也是大坑,當然我自己用python 寫的時候直接用的MD5
③在做paySign簽名的時候,需要6個參數,上述5個參數去掉paySign(不參與簽名),加上appId(注意是大寫I,這是個大坑,這個錯了那簽名必然失敗)和key
④如果上述步驟沒問題還是失敗,那麼去驗證以下你的簽名是否通過
⑤還有一點簽名的時候必須把所有英文全部轉為大寫
4.歡迎評論,多多交流
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/182204.html