適合沒(méi)有微信支付接入經(jīng)驗(yàn)的開(kāi)發(fā)者。
1. 申請(qǐng)微信支付
小程序認(rèn)證以后,可以在小程序后臺(tái),微信支付菜單欄,申請(qǐng)微信支付。
填寫企業(yè)信息和對(duì)公賬戶,微信支付會(huì)打一筆隨機(jī)金額到對(duì)公賬戶,輸入金額完成驗(yàn)證后,在線簽署協(xié)議,這樣整個(gè)微信支付的申請(qǐng)流程完成了。
微信支付申請(qǐng)完,會(huì)發(fā)送微信支付商戶號(hào),商戶平臺(tái)用戶名密碼等信息到注冊(cè)者郵箱。
2. 準(zhǔn)備工作
2.1 配置小程序密鑰
在小程序后臺(tái)設(shè)置頁(yè),點(diǎn)擊生成,管理員驗(yàn)證二維碼后,會(huì)隨機(jī)生成 AppSecret。請(qǐng)妥善保管好 Appsecret,不要明文存儲(chǔ)于服務(wù)器,AppSecret 用于和微信服務(wù)器交互。比如獲取用戶的 openid 接口就需要用到。
2.2 設(shè)置密鑰和下載證書(shū)
用申請(qǐng)微信支付獲得的用戶名和密碼,登錄商戶平臺(tái) (pay.weixin.qq.com),在賬戶中心,API 安全中下載證書(shū)和設(shè)置密鑰。
密鑰是 32 位,設(shè)置以后需要妥善保管,因?yàn)闊o(wú)法查看密鑰,所有微信支付相關(guān)的接口都會(huì)使用這個(gè)密鑰加密。
2.3 配置 Https 服務(wù)器
小程序的前端是使用微信提供的框架開(kāi)發(fā),但是后臺(tái)依然是開(kāi)發(fā)者自己的服務(wù)器。小程序發(fā)起的是 https 請(qǐng)求,意味著小程序開(kāi)發(fā)者必須配置 https 服務(wù)器。
配置 https 服務(wù)器之前,先要獲取證書(shū),證書(shū)可以向相關(guān)機(jī)構(gòu)購(gòu)買,騰訊云目前可以向用戶提供免費(fèi)的證書(shū)。
證書(shū)安裝指引在這里查看:
https://www.qcloud.com/doc/pr...
3. 微信支付流程
微信支付有多種支付方式,包括刷卡支付,公眾號(hào)支付,掃碼支付,APP 支付,在這里微信支付的所有接口:https://pay.weixin.qq.com/wik...
小程序是在微信里調(diào)起支付的,其實(shí)是公眾號(hào)支付。關(guān)于公眾號(hào)支付的詳細(xì)文檔可在這里查看:https://pay.weixin.qq.com/wik...
所有公眾號(hào)支付相關(guān)的鏈接都可以在此鏈接找到,開(kāi)發(fā)者首先需要大概了解這些接口。
小程序公眾號(hào)支付的主要流程如下(本圖只考慮了正常流程,異常流程參考公眾號(hào)支付文檔):
3.1 關(guān)于 openid
上述流程中請(qǐng)求 openid,用的是小程序最新 api 中的接口,開(kāi)發(fā)者可以查看小程序的登錄接口。
開(kāi)發(fā)者從第三方服務(wù)器獲得的 openid,在統(tǒng)一下單的接口里面需要使用到。
3.2 關(guān)于小程序調(diào)起微信支付
上述流程中的小程序調(diào)起微信支付,用的是小程序微信支付接口 wx.requestPayment,該接口的詳細(xì)描述可以查看小程序的微信支付 API。
這個(gè)接口中的 package 和 timeStamp 參數(shù)是從開(kāi)發(fā)者的第三方服務(wù)器返回的,package 是第三方服務(wù)器從統(tǒng)一下單接口回復(fù)中獲得。
接口中其他的參數(shù),appId,noceStr,signType 以及 paySign 則由小程序這邊存儲(chǔ)或者計(jì)算而得。
其中 paySign 是簽名,簽名算法文檔在這里:
https://pay.weixin.qq.com/wik...
整個(gè)公眾號(hào)支付的主要流程基本都是在第三方服務(wù)器上實(shí)現(xiàn),開(kāi)發(fā)者需要熟讀公眾號(hào)支付文檔,了解消息交互流程以及每個(gè)接口。
這里并沒(méi)有描述正常微信支付必不可少的一些功能:異常處理,查詢訂單,發(fā)起退款,下載對(duì)賬單等等。
微信小程序支付流程;
文字展示
1、小程序內(nèi)調(diào)用登錄接口,獲取到用戶的openid,api參見(jiàn)公共api【小程序登錄API】
2、商戶server調(diào)用支付統(tǒng)一下單,api參見(jiàn)公共api【統(tǒng)一下單API】
3、商戶server調(diào)用再次簽名,api參見(jiàn)公共api【再次簽名】
4、商戶server接收支付通知,api參見(jiàn)公共api【支付結(jié)果通知API】
5、商戶server查詢支付結(jié)果,api參見(jiàn)公共api【查詢訂單API】
小程序調(diào)起支付API的形成的參數(shù):
paySign = MD5(appId=wxd678efh567hg6787&nonceStr=5K8264ILTKCH16CQ2502SI8ZNMTM67VS&package=prepay_id=wx2017033010242291fcfe0db70013231072&signType=MD5&timeStamp=1490840662&key=qazwsxedcrfvtgbyhnujmikolp111111) = 22D9B4E54AB1950F51E0649E8810ACD6
代碼形式展示
wx.requestPayment(
{
‘timeStamp’: ‘’,
‘nonceStr’: ‘’,
‘package’: ‘’,
‘signType’: ‘MD5’,
‘paySign’: ‘’,
‘success’:function(res){},
‘fail’:function(res){},
‘complete’:function(res){}
})
個(gè)人思考:
1,首先聊一聊開(kāi)發(fā)模式[自己也是第一次看,進(jìn)行總結(jié),接下來(lái)即將用到項(xiàng)目中去。
1.1普通模式
場(chǎng)景是適用于自己開(kāi)發(fā)或者外包開(kāi)發(fā),申請(qǐng)自己的appId,mch_id
1.2商戶服務(wù)模式
該模式包含普通服務(wù)商模式與銀行類服務(wù)商模式。
2, 業(yè)務(wù)說(shuō)明
申請(qǐng)注冊(cè)小程序,開(kāi)通支付流程,即可,一下幾點(diǎn)注意:
appid必須為最后拉起收銀臺(tái)的小程序appid;
mch_id為和appid成對(duì)綁定的支付商戶號(hào),收款資金會(huì)進(jìn)入該商戶號(hào);
trade_type請(qǐng)?zhí)顚?/span>JSAPI;
openid為appid對(duì)應(yīng)的用戶標(biāo)識(shí),即使用wx.login接口獲得的openid
3,業(yè)務(wù)流程
請(qǐng)參考以上圖片顯示展示與文字說(shuō)明
4, 開(kāi)發(fā)步驟
5, 小程序調(diào)用支付API
6, sub_appId的使用說(shuō)明
sub_appid可為公眾號(hào),APP或小程序的appid,服務(wù)商在服務(wù)商商戶平臺(tái)可手動(dòng)為每個(gè)特約商戶綁定與渠道商主體或特約商戶主體一致的公眾號(hào),APP或小程序的appid;針對(duì)小程序,還支持綁定服務(wù)商主體的小程序appid。目前最多配置5個(gè). 手工配置路徑:”服務(wù)商商戶平臺(tái)-服務(wù)商功能-子商戶管理-開(kāi)發(fā)配置-特約商戶APPID配置”。
文章內(nèi)容來(lái)源于網(wǎng)絡(luò),侵刪