微信小程序支付繞坑指南
步驟
A:小程序向服務(wù)端發(fā)送商品詳情、金額、openid
B:服務(wù)端向微信統(tǒng)一下單
C:服務(wù)器收到返回信息二次簽名發(fā)回給小程序
D:小程序發(fā)起支付
E:服務(wù)端收到回調(diào)
首先準(zhǔn)備以一下信息

小程序發(fā)送小程序向服務(wù)端發(fā)送商品詳情、金額、openid

服務(wù)端接收小程序發(fā)來的信息

判斷信息是否為空,不為空將要參與簽名的信息組合成鍵值對,準(zhǔn)備簽名

簽名算法(首先進(jìn)行排序,連接商戶KEY,進(jìn)行MD5計算,結(jié)果轉(zhuǎn)成大寫)

將計算好的MD5值也加入到之前的鍵值對中,并且將整個鍵值對轉(zhuǎn)成XML格式發(fā)送給預(yù)下單地址https://api.mch.weixin.qq.com/pay/unifiedorder

等會支付服務(wù)器返回預(yù)支付信息,判斷返回結(jié)果

將返回的結(jié)果,和二次簽名的值一起返回給小程序

需要注意的是二次簽名的隨機(jī)字符串是微信服務(wù)器發(fā)來的不是自己隨機(jī)的,另外appid和Key也要參與簽名計算千萬別忘記了。
'appId='+appId+'&nonceStr='+nonceStr+'&package='+pkg+'&signType=MD5&timeStamp='+timeStamp+"&key=d27551c7803cf16*e536b192d5d03b"這才是完整的。
小程序收到結(jié)果發(fā)起支付

支付截圖

遇到的問題:
預(yù)支付請求簽名錯誤
解決辦法:首先確定appid商戶號KEY是否正確,參與簽名的字符串是否按照要求排序,是否是UTF8格式,如果實在不行可以重置一次KEY試一試。
返回錯誤說total_fee參數(shù)為空
解決辦法:如果total_fee參數(shù)不為空,可能是package格式不對應(yīng)該為"prepay_id="+prepay_id