1、注冊微信支付商戶號(由上級或法人注冊)
注冊鏈接:https://pay.weixin.qq.com/index.php/apply/applyment_home/guide_normal#none
此商戶號,需要由主管及更上級領(lǐng)導(dǎo)進(jìn)行注冊,會成為公司收款賬戶
企業(yè)注冊需要材料:營業(yè)執(zhí)照,對公銀行賬戶信息,法人身份證
2、注冊小程序賬號(由上級或者領(lǐng)導(dǎo)注冊)
企業(yè)一般注冊為企業(yè)小程序,非個人,需要上傳營業(yè)執(zhí)照等。注冊地址
3、登錄商戶號綁定小程序
登錄之前注冊好的商戶賬號,將當(dāng)前小程序ID綁定至此商戶,表明此小程序可以調(diào)用此商戶支付相關(guān)接口。
4、后端工程師書寫接口
后端書寫接口,根據(jù)前端傳入數(shù)據(jù),返回微信支付核心數(shù)據(jù),后端需要什么數(shù)據(jù),前端調(diào)用此接口時,傳給后端即可。
返回核心數(shù)據(jù)如下:
"appId": "xxxx",
"nonceStr": "xxxx",
"packageValue": "prepay_id=xxxxx",
"paySign": "xxxxxx",
"signType": "MD5",
"timeStamp": "xxxxxx"
5、前端工程師調(diào)用接口
5.1 獲取openid(當(dāng)前用戶真實(shí)id)
openid為當(dāng)前用戶真實(shí)id,無法直接用任何接口獲得,需要先調(diào)用微信login接口登錄,獲取登錄憑證code,在通過此code(登錄憑證,5分鐘有效),向微信服務(wù)器換取用戶openid。
原生小程序登錄:
wx.login({
success (res) {
if (res.code) {
//code: 用戶登錄憑證(有效期五分鐘)使用 code 可以換取 openid、unionid、session_key 等核心信息
} else {
console.log('登錄失??!' + res.errMsg)
}
}
})
uniapp登錄:
uni.login({
provider: 'weixin',
success (res) {
if (res.code) {
//code: 用戶登錄憑證(有效期五分鐘)使用 code 可以換取 openid、unionid、session_key 等核心信息
} else {
console.log('登錄失??!' + res.errMsg)
}
}
})
發(fā)送請求調(diào)用微信官方接口,用code憑證換取用戶openid(真實(shí)用戶id)
原生小程序:wx.request uniapp: uni.request, 流程無差別
uni.request({
url: `https://api.weixin.qq.com/sns/jscode2session`, //微信官方接口
data: {
appid: '小程序appId',
secret: '小程序密鑰,在小程序appId下一行,放一塊在',
js_code: '剛才獲取的code',
grant_type: 'authorization_code' //固定值
},
success: (res) => {
//獲取openid:用戶真實(shí)唯一id
console.log(res.data.openid);
}
})
5.2 調(diào)用公司后端接口,獲取支付核心數(shù)據(jù)
// 調(diào)用后端接口
uni.request({
url: '你們公司的后端接口地址,獲取支付核心數(shù)據(jù)',
method: 'POST',
data: { 接口需要什么參數(shù)就傳給接口,包含扣款金額,訂單id等 },
success(obj) {
console.log(obj)
}
})
此接口必須返回以下6個核心數(shù)據(jù),都是由后臺計(jì)算生成。
"appId": "xxxx",
"nonceStr": "xxxx",
"packageValue": "prepay_id=xxxxx",
"paySign": "xxxxxx",
"signType": "MD5",
"timeStamp": "xxxxxx"
5.3 調(diào)用微信官方支付接口,彈出支付界面
uni.request({
url: '你們公司的后端接口地址,獲取支付核心數(shù)據(jù)',
method: 'POST',
data: { 接口需要什么參數(shù)就傳給接口,包含扣款金額,訂單id等 },
success(obj) {
//調(diào)用微信官方支付接口彈出付款界面,輸入密碼扣款
wx.requestPayment({
timeStamp: obj.xxxx.timeStamp, //后端返回的時間戳
nonceStr: obj.xxxx.nonceStr, //后端返回的隨機(jī)字符串
package: obj.xxxx.packageValue, //后端返回的prepay_id
signType: 'MD5', //后端簽名算法,根據(jù)后端來,后端MD5這里即為MD5
paySign: obj.xxxx.paySign, //后端返回的簽名
success (res) {
console.log('用戶支付扣款成功', res)
},
fail (res) {
console.log('用戶支付扣款失敗', res)
}
})
}
})
調(diào)用后,彈出付款界面,模擬器需要掃碼支付。
點(diǎn)擊真機(jī)調(diào)試會直接彈出微信付款界面。文章來源:http://www.zghlxwxcb.cn/news/detail-688797.html
總結(jié)
文章來源地址http://www.zghlxwxcb.cn/news/detail-688797.html
到了這里,關(guān)于微信小程序支付完整流程的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!