微信小程序發起wx.requestPayment的支付請求時-簽名失敗問題

從昨天到今天微信小程序客戶端始終都有這個問題,一直覺得是服務端這裏有問題,後面才發現原來微信有個神坑,通常來講統一下單接口會返回相似以下數據php

{
        "return_code": "SUCCESS",
        "return_msg": "OK",
        "appid": "wxc123456789",
        "mch_id": "12345678",
        "nonce_str": "tlI5Oy3QigCQHQQM",
        "sign": "8EAB94045E948AD7D126937ED7EF9032",
        "result_code": "SUCCESS",
        "prepay_id": "wx221639448194778a79a9510a2883548319",
        "trade_type": "JSAPI"
    }

這個時候客戶端拿到,就能夠拉起微信支付了,因而客戶端就這麼幹了:json

wx.requestPayment({
              timeStamp: timestamp,
              nonceStr: res.data.nonce_str,
              package: 'prepay_id=' + res.data.prepay_id,//這裏也要注意去拼接這個prepay_id=,略坑,可是很容易搜到解決辦法
              signType: 'MD5',
              paySign: res.data.sign,//這裏是剛纔請求統一下單接口拿到的sign,放這裏直接用是錯誤的,坑就在這裏,巨坑
              success(res) {
                console.log(res)
              },
              fail(res) {
                console.log(res)
              }
            })

而後就會報錯 支付驗證簽名失敗,那麼這個paySign到底應該咋獲取呢,這裏有文檔,不少人都不知道要在微信小程序客戶端再作一次這個加密過程動做:小程序

  1. wx.requestPayment將要準備發起請求的參數中的:'appId' 'timeStamp' 'nonceStr' 'package' 'signType' 等字段進行字典序排序,而後拼接上API安全key(key設置路徑:微信商戶平臺(pay.weixin.qq.com)-->帳戶設置-->API安全-->密鑰設置)
  2. 而後就能夠獲取到正確的paySign了
相關文章
相關標籤/搜索