一、背景
開發(fā)微信小程序時(shí),涉及到微信支付的開發(fā)環(huán)節(jié),特此記錄一下
二、前提
2.1、注冊(cè)微信支付商戶號(hào)
官方注冊(cè)地址????:接入微信支付 - 微信商戶平臺(tái)
備注:此商戶號(hào)為超級(jí)管理員,一般由更上級(jí)領(lǐng)導(dǎo)進(jìn)行注冊(cè)(? ?非前端人員注冊(cè)??),會(huì)成為公司收款賬戶,主要填寫超管信息并上傳企業(yè)資料(如:營(yíng)業(yè)執(zhí)照,對(duì)公銀行賬戶信息,法人身份證)
2.2、小程序關(guān)聯(lián)商戶號(hào)
微信公眾平臺(tái)地址????:微信公眾平臺(tái)
已注冊(cè)的小程序,登錄微信公眾平臺(tái),在左側(cè)功能項(xiàng)找到微信支付,選擇商戶號(hào)管理,將小程序與商戶號(hào)關(guān)聯(lián)
如果已經(jīng)關(guān)聯(lián)了,就會(huì)顯示已關(guān)聯(lián)的商戶號(hào)信息??
三、微信支付流程
3.1、微信官方支付流程圖
官網(wǎng)地址????:pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_4&index=3
說(shuō)明:
1、小程序內(nèi)調(diào)用登錄接口,獲取到用戶的openid,api參見公共api【小程序登錄API】
2、商戶server調(diào)用支付統(tǒng)一下單,api參見公共api【統(tǒng)一下單API】
3、商戶server調(diào)用再次簽名,api參見公共api【再次簽名】
4、商戶server接收支付通知,api參見公共api【支付結(jié)果通知API】
5、商戶server查詢支付結(jié)果,如未收到支付通知的情況,商戶后臺(tái)系統(tǒng)可調(diào)用【查詢訂單API】 (查單實(shí)現(xiàn)可參考:支付回調(diào)和查單實(shí)現(xiàn)指引)
6、商戶小程序內(nèi)使用小程序調(diào)起支付API(wx.requestPayment)發(fā)起微信支付,詳見小程序API文檔
四、具體實(shí)現(xiàn)
4.1、獲取OpenID
OpenID是用戶唯一標(biāo)識(shí),通過(guò)臨時(shí)登錄憑證 code 換取的(登錄憑證code,5分鐘有效期),通過(guò)code向后端接口獲取OpenID
<script>
import {
getBindSocial,wxLogin_api
} from "@/action/action";
import {
MINITYPE
} from '@/constants/hostConfig';
export default{
data() {
return {
phone: '',
}
},
methods: {
wexin_login(){
wx.login({
success: (res) =>{
console.log(res.code,'code')
let userCode = res.code
//將code傳遞給服務(wù)器
getBindSocial({
jscode: userCode,
type: MINITYPE,
}).then(res =>{
console.log('res',res);
//將code傳遞給接口會(huì)返回openid,unionid,phone
})
}
})
}
},
}
</script>
備注:
getBindSocial()是封裝的api接口,將code傳遞給接口之后,會(huì)得到openid,unionid,phone等。如下圖??
4.2、調(diào)用預(yù)支付接口獲取支付核心數(shù)據(jù)
將獲取的openid與接口需要攜帶的參數(shù),調(diào)用接口,獲取支付核心數(shù)據(jù)
備注:
wx_advance_pay()是封裝的api接口,?openid在登錄的時(shí)候直接本地存儲(chǔ)在loginInfo對(duì)象中,參數(shù)wxOpenId是從本地存儲(chǔ)的loginInfo對(duì)象中獲取的openid,同時(shí)也包含接口需要攜帶的其他參數(shù);以下為接口返回的支付核心數(shù)據(jù),如下圖??
4.3、調(diào)用微信官方支付接口 wx.requestPayment(),彈出支付界面
微信支付接口地址????:wx.requestPayment(Object object) | 微信開放文檔
將?wx_advance_pay()接口返回的數(shù)據(jù)對(duì)象,作為wx.requestPayment()參數(shù)值,得到支付結(jié)果??
調(diào)用后,會(huì)彈出付款界面,微信開發(fā)者工具需要掃碼支付
如果是手機(jī)支付會(huì)彈出微信付款界面,支付完成后會(huì)收到賬單信息
4.4、微信支付流程總結(jié)
1、獲取OpenID:通過(guò)wx.login()獲得code,將code傳給接口獲得OpenID
2、獲取預(yù)支付核心數(shù)據(jù):調(diào)用預(yù)支付接口,將OpenID與接口需要攜帶的其他參數(shù),得到預(yù)支付核心數(shù)據(jù);
數(shù)據(jù)包含:【時(shí)間戳--timeStamp,隨機(jī)字符串--nonceStr,預(yù)支付id--package,簽名算法--signType,簽名--paySign】
3、發(fā)起微信支付:調(diào)用wx.requestPayment(),傳遞上一步獲取的5個(gè)預(yù)支付核心數(shù)據(jù),得到支付結(jié)果文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-851146.html
最后,???? ?????? ?????????文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-851146.html
到了這里,關(guān)于微信小程序 實(shí)現(xiàn)支付流程的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!