小程序中微信支付的能力,是隨着小程序的發佈一併推出的,然而小程序文檔裏關於微信支付接口只有一個requestPayment函數的描述。php
這個requestPayment函數確實是小程序前端惟一須要調用的函數,可是微信支付的成功接入實際遠遠不止這一個函數,對於沒有接入過微信支付的開發者,會以爲一頭霧水,徹底無法下手。html
本文闡述如何從零開始接入小程序支付,尤爲適合那些沒有微信支付接入經驗的開發者。前端
1. 申請微信支付算法
小程序認證之後,能夠在小程序後臺,微信支付菜單欄,申請微信支付。小程序
填寫企業信息和對公帳戶,微信支付會打一筆隨機金額到對公帳戶,輸入金額完成驗證後,在線簽署遷移,即完成了微信支付的申請流程.。api
微信支付申請完,會發送微信支付商戶號,商戶平臺用戶名密碼等信息到註冊者郵箱。安全
2. 準備工做服務器
2.1 配置小程序密鑰微信
小程序後臺設置頁,點擊生成,管理員驗證二維碼後,會隨機生成AppSecret。請妥善保管好Appsecret,不要明文存儲於服務器,AppSecret用於和微信服務器交互。好比獲取用戶的openid接口就須要用到.app
2.2 設置密鑰和下載證書
用申請微信支付得到的用戶名和密碼,登陸商戶平臺(http://pay.weixin.qq.com),在帳戶中心,API安全中下載證書和設置密鑰。
密鑰是32位,設置之後須要妥善保管,由於沒法查看密鑰,全部微信支付相關的接口都會使用這個密鑰加密。
2.3 配置Https服務器
小程序的前端是使用微信提供的框架開發,可是後臺依然是開發者本身的服務器。小程序發起的是https請求,意味着小程序開發者必須配置https服務器。
配置https服務器以前,先要獲取證書,證書能夠向相關機構購買,騰訊雲目前能夠向用戶提供免費的證書.
證書安裝指引,能夠參考這裏: https://www.qcloud.com/doc/product/400/4143
3. 微信支付流程
微信支付有多種支付方式,包括刷卡支付,公衆號支付,掃碼支付,APP支付,全部微信支付的接口均可以在這裏找到:https://pay.weixin.qq.com/wiki/doc/api/index.html
小程序是在微信裏調起支付的,實際上是公衆號支付,關於公衆號支付的詳細文檔能夠這裏找到: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_1
全部公衆號支付相關的連接均可以在此連接找到,開發者首先須要大概瞭解這些接口
小程序公衆號支付的主要流程以下(本圖只考慮了正常流程,異常流程參考公衆號支付文檔):
3.1 關於openid
上述流程中請求openid,用的是小程序最新api中的接口,開發者能夠查看小程序的登陸接口。
開發者從第三方服務器得到的openid,在統一下單的接口裏面須要使用到.
3.2 關於小程序調起微信支付
上述流程中的小程序調起微信支付,用的是小程序微信支付接口wx.requestPayment,該接口的詳細描述能夠查看小程序的微信支付API。
這個接口中的package和timeStamp參數是從開發者的第三方服務器返回的,package是第三方服務器從統一下單接口回覆中得到。
接口中其餘的參數,appId,noceStr,signType以及paySign則由小程序這邊存儲或者計算而得。
其中paySign是簽名,簽名算法文檔在這裏:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_3&t=20161107
整個公衆號支付的主要流程基本都是在第三方服務器上實現,開發者須要熟讀公衆號支付文檔,瞭解消息交互流程以及每一個接口。
這裏並無描述正常微信支付必不可少的一些功能:異常處理,查詢訂單,發起退款,下載對帳單等等。
4. 小程序與JSSDK微信支付比較
JSSDK的微信支付接口是公衆號裏用JS調起公衆號支付的方法,具體能夠參考公衆平臺的文檔。
能夠看到,小程序和JSSDK的微信支付很是相似,這裏比較一下2者的區別: