微信小程序支付功能完整流程記錄(前端)
微信小程序中,常見付款給商家的場景,下面列出企業(yè)小程序中,從0起步完整微信支付流程。
一,注冊微信支付商戶號(hào)(由上級(jí)或法人注冊)
此商戶號(hào),需要由主管及更上級(jí)領(lǐng)導(dǎo)進(jìn)行注冊,會(huì)成為公司收款賬戶(不是由前端程序員注冊?。。〔皇怯汕岸顺绦騿T注冊?。?!不是由前端程序員注冊?。。。?/p>
注冊非常簡單,重點(diǎn)是需要提供企業(yè)資料,一般程序員沒有權(quán)限獲取這些材料,所以需要由上級(jí)注冊
企業(yè)注冊需要材料:營業(yè)執(zhí)照,對(duì)公銀行賬戶信息,法人身份證
二,注冊小程序賬號(hào)(由上級(jí)或者領(lǐng)導(dǎo)注冊)
注冊流程簡單,企業(yè)一般注冊為企業(yè)小程序,非個(gè)人,需要上傳營業(yè)執(zhí)照等。
三,登錄商戶號(hào)綁定小程序
登錄之前注冊好的商戶賬號(hào),將當(dāng)前小程序ID綁定至此商戶,表明此小程序可以調(diào)用此商戶支付相關(guān)接口。
微信支付 - 中國領(lǐng)先的第三方支付平臺(tái) | 微信支付提供安全快捷的支付方式
四,后端工程師書寫接口
返回核心數(shù)據(jù)如下:
"appId":?"xxxx", ????????"nonceStr":?"xxxx", ????????"packageValue":?"prepay_id=xxxxx", ????????"paySign":?"xxxxxx", ????????"signType":?"MD5", ????????"timeStamp":?"xxxxxx"
這個(gè)接口是你們公司后端程序員自己寫的接口,由后端工程師書寫,JAVA,PHP,C++,NODE,.NET等...不是前端寫!不是前端寫!不是前端寫!如果沒有此接口就與后端工程師溝通,讓他書寫。
五,前端工程師調(diào)用接口
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ā)送請(qǐng)求調(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); } })
2. 調(diào)用公司后端接口,獲取支付核心數(shù)據(jù)
// 調(diào)用后端接口 uni.request({ url: '你們公司的后端接口地址,獲取支付核心數(shù)據(jù)', method: 'POST', data: { 接口需要什么參數(shù)就傳給接口,包含扣款金額,訂單id等 }, success(obj) { console.log(obj) } })
此接口必須返回以下6個(gè)核心數(shù)據(jù),都是由后臺(tái)計(jì)算生成。
"appId":?"xxxx", ????????"nonceStr":?"xxxx", ????????"packageValue":?"prepay_id=xxxxx", ????????"paySign":?"xxxxxx", ????????"signType":?"MD5", ????????"timeStamp":?"xxxxxx"
3. 調(diào)用微信官方支付接口,彈出支付界面
uni.request({ url: '你們公司的后端接口地址,獲取支付核心數(shù)據(jù)', method: 'POST', data: { 接口需要什么參數(shù)就傳給接口,包含扣款金額,訂單id等 }, success(obj) { //調(diào)用微信官方支付接口彈出付款界面,輸入密碼扣款 wx.requestPayment({ timeStamp: obj.xxxx.timeStamp, //后端返回的時(shí)間戳 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)試會(huì)直接彈出微信付款界面。
六,總結(jié)
- 前端調(diào)用uni.login/wx.login調(diào)用微信接口,獲取code,code相當(dāng)于臨時(shí)身份證
- 前端調(diào)公司后臺(tái)獲取openid的接口,獲取openid
- 前端調(diào)公司后臺(tái)預(yù)支付接口,傳遞openid、商品id、商品單價(jià)、商品數(shù)量,獲取那5個(gè)參數(shù)?!緯r(shí)間戳timeStamp,隨機(jī)字符串nonceStr,預(yù)支付id package,簽名算法signType,簽名paySign】
- 前端調(diào)用uni/wx.requestPayment調(diào)用微信支付方法,傳遞5個(gè)參數(shù),獲取支付結(jié)果(成功或失敗)
到此這篇關(guān)于微信小程序支付功能完整流程的文章就介紹到這了,更多相關(guān)微信小程序支付流程內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript之瀏覽器對(duì)象_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
JavaScript可以獲取瀏覽器提供的很多對(duì)象,并進(jìn)行操作。下面通過本文給大家介紹JavaScript之瀏覽器對(duì)象的相關(guān)知識(shí),一起看看吧2017-07-07jQuery和JavaScript節(jié)點(diǎn)插入元素的方法對(duì)比
本文主要介紹jQuery與JavaScript節(jié)點(diǎn)的插入方法,以及他們的具體代碼實(shí)現(xiàn)方法,大家可以對(duì)比下他們之間的不同,希望對(duì)大家編寫代碼有所幫助2016-11-11JavaScript正則表達(dá)式和級(jí)聯(lián)效果
正則表達(dá)式(regular expression)是一種字符串匹配的模式,用來檢查一個(gè)字符串中是否包含指定模式的字符串。下面通過本文給大家分享JavaScript_正則表達(dá)式和級(jí)聯(lián)效果,感興趣的朋友一起看看吧2017-09-09JavaScript中undefined和is?not?defined的區(qū)別與異常處理
這篇文章主要給大家介紹了關(guān)于JavaScript中undefined和is?not?defined的區(qū)別與異常處理的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-03-03如何讓每個(gè)Http請(qǐng)求都自動(dòng)帶上token
這篇文章主要介紹了如何讓每個(gè)Http請(qǐng)求都自動(dòng)帶上token問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03JS實(shí)現(xiàn)點(diǎn)擊拉拽輪播圖pc端移動(dòng)端適配
本文通過實(shí)例代碼給大家介紹了JS點(diǎn)擊拉拽輪播圖pc端移動(dòng)端適配 ,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-09-09