鍍金池/ 問答/HTML/ 小程序微信支付中,統(tǒng)一下單請求后返回提示XML格式錯誤

小程序微信支付中,統(tǒng)一下單請求后返回提示XML格式錯誤

clipboard.png

clipboard.png
有大神知道是怎么回事嗎??

回答
編輯回答
落殤

微信支付發(fā)起統(tǒng)一下單的接口好像是不接受json格式的post參數(shù)的,你需要轉(zhuǎn)成xml格式發(fā)起。

2018年3月14日 22:32
編輯回答
只愛你

普通支付行不行?
如果可以,參考
https://segmentfault.com/n/13...

2017年12月10日 19:06
編輯回答
女流氓

那個請求https://api.mch....是交給后臺處理的,
下面代碼里的data就是后臺處理后的數(shù)據(jù),prepay_id也是后臺去請求你那個地址獲取到的。

我的步驟是這樣的:

  1. 調(diào)用wx.login獲取code
  2. code和你的訂單信息傳給后臺
  3. 后臺用code獲取到用戶openid,然后去獲取訂單對應的prepay_id,并返回給前端需要的信息,即代碼里的data
  4. 前端拿到返回data后拼接出需要的東西(這個sign其實也可以由后端拼接好放到data里返回),然后調(diào)用wx.requestPayment發(fā)起支付。

而且小程序是沒法把https://api.mch...添加到服務器域名列表的。如果不是測試環(huán)境,可以說是必須交給后臺處理的。

微信文檔里好像有寫好的專門api去處理微信返回的xml數(shù)據(jù)的。

var timestamp = data.timestamp + ''

var appId = data.appid
var key = data.key
var prepay_id = data.prepay_id
var nonce_str = data.nonce_str

var sign = '';
var signA = "appId=" + appId + "&nonceStr=" + nonce_str + "&package=prepay_id=" + prepay_id + "&signType=MD5&timeStamp=" + timestamp;
var signB = signA + "&key=" + key;
sign = MD5Util.md5(signB).toUpperCase();

wx.requestPayment({
    timeStamp: timestamp,
    nonceStr: nonce_str,
    package: "prepay_id=" + prepay_id,
    signType: 'MD5',
    paySign: sign,
    success: function (data) {
        success(data)
    },
    fail: function (res) {
        fail(res)
    }
})
2018年1月12日 03:13