微信小程序正在各行各業(yè)如火如荼的進(jìn)行中,大多數(shù)的小程序應(yīng)用中都可能會(huì)用到微信的支付接口。(這或許也是阿里所擔(dān)心的,微信小程序會(huì)一步步跳轉(zhuǎn)支付寶的地位,這就是為什么支付寶也要推出小程序的一大原因吧)!小程序的微信支付功能是隨著小程序的發(fā)布一并推出的,然而小程序文檔里關(guān)于微信支付接口只有一個(gè)requestPayment函數(shù)的描述。這個(gè)requestPayment函數(shù)確實(shí)是小程序前端唯一需要調(diào)用的函數(shù),但是微信支付的成功接入實(shí)際遠(yuǎn)遠(yuǎn)不止這一個(gè)函數(shù),對(duì)于沒(méi)有接入過(guò)微信支付的開(kāi)發(fā)者,會(huì)覺(jué)得一頭霧水,完全沒(méi)法下手。今天我們就為各位介紹一下如何從零開(kāi)始接入小程序支付,尤其適合那些沒(méi)有微信支付接入經(jīng)驗(yàn)的開(kāi)發(fā)者。1. 申請(qǐng)微信支付小程序認(rèn)證以后(如何申請(qǐng)認(rèn)證小程序參見(jiàn)文章:
怎么提交小程序給微信?微信小程序的提交審核流程
),可以在小程序后臺(tái),微信支付菜單欄,申請(qǐng)微信支付。填寫企業(yè)信息和對(duì)公賬戶,微信支付會(huì)打一筆隨機(jī)金額到對(duì)公賬戶,輸入金額完成驗(yàn)證后,在線簽署遷移,即完成了微信支付的申請(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ū)。
appId:"wx3*******6"//小程序id nonceStr:"qdpys6rdizbnpj12ahwvkf568a6c1sr9" //隨機(jī)字符串 package:"prepay_id=wx2016***********3" //wx的預(yù)支付交易單 paySign:"8A7DC1A560B3B6DB0C656AC382D3E6F1" signType:"MD5" timeStamp:"1481167418"
3. 微信支付流程微信支付有多種支付方式,包括刷卡支付,公眾號(hào)支付,掃碼支付,APP支付,所有微信支付的接口都可以在這里找到:
https://pay.weixin.qq.com/wiki/doc/api/index.html。小程序是在微信里調(diào)起支付的,其實(shí)是公眾號(hào)支付,關(guān)于公眾號(hào)支付的詳細(xì)文檔可以這里找到:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_1。所有公眾號(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/wiki/doc/api/jsapi.php?chapter=4_3&t=20161107整個(gè)公眾號(hào)支付的主要流程基本都是在第三方服務(wù)器上實(shí)現(xiàn),開(kāi)發(fā)者需要熟讀公眾號(hào)支付文檔,了解消息交互流程以及每個(gè)接口。這里并沒(méi)有描述正常微信支付必不可少的一些功能:異常處理,查詢訂單,發(fā)起退款,下載對(duì)賬單等等。
小程序demo
const wechatData = payRes.data.payment;//wechatData就是上面的驗(yàn)證信息 console.log(wechatData); wx.requestPayment({ 'appId' : wechatData.appId, 'timeStamp': wechatData.timeStamp, 'nonceStr': wechatData.nonceStr, 'package': wechatData.package, 'signType': 'MD5', 'paySign': wechatData.paySign, 'success':function(res){ console.log(res); console.log('success'); }, 'fail':function(res){ console.log(res); console.log('fail'); }, 'complete': function(res){ console.log(res);console.log('complete'); } }); console.log(2);
小結(jié)
:
小程序與JSSDK微信支付比較JSSDK的微信支付接口是公眾號(hào)里用JS調(diào)起公眾號(hào)支付的方法,具體可以參考公眾平臺(tái)的文檔。可以看到,小程序和JSSDK的微信支付非常類似,這里比較一下兩者的區(qū)別:如下圖所示:
愛(ài)盈利(aiyingli.com)移動(dòng)互聯(lián)網(wǎng)最具影響力的盈利指導(dǎo)網(wǎng)站。定位于服務(wù)移動(dòng)互聯(lián)網(wǎng)創(chuàng)業(yè)者,移動(dòng)盈利指導(dǎo)。我們的目標(biāo)是讓盈利目標(biāo)清晰可見(jiàn)!降低門檻,讓缺乏經(jīng)驗(yàn)、資金有限的個(gè)人和團(tuán)隊(duì)獲得經(jīng)驗(yàn)和機(jī)會(huì),提高熱情,激發(fā)產(chǎn)品。
【轉(zhuǎn)載說(shuō)明】  若上述素材出現(xiàn)侵權(quán),請(qǐng)及時(shí)聯(lián)系我們刪除及進(jìn)行處理:[email protected]