一、介紹
今天跟大家分享微信小程序集成支付。
二、分析
1、小程序支付API
地址:https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-pay.html#wxrequestpaymentobject
注釋:
通過接口的查看,我們知道,小程序端要想使用支付的接口,必須要拿到相應的值
timeStamp:Linux時間戳,可獲取本地時間。
nonceStr:隨機字符串,從服務器統一下單接口返回。
package:統一下單接口返回的prepay_id參數值,發送提交時格式‘prepay_id=*’
signType:算法簽名直接寫MD5
paySign:簽名,簽名算法。簽名必須嚴格按按照如下規則進行簽名,注意一定拼接上key,關於key后面再說。
舉例:paySign = MD5(appId=wxd678efh567hg6787&nonceStr=5K8264ILTKCH16CQ2502SI8ZNMTM67VS&package=prepay_id=wx2017033010242291fcfe0db70013231072&signType=MD5&timeStamp=1490840662&key=qazwsxedcrfvtgbyhnujmikolp111111) = 22D9B4E54AB1950F51E0649E8810ACD6
2、微信支付接口
雖然我們已經查看了小程序的支付接口,但是到此時,我們還是不知道這些參數怎么得來,接下來我們選擇支付接口中的了解更多信息,查看微信支付接口文檔。
打開后,我們可以看到如下的截圖。
第一步:開發步驟:
地址:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_3&index=1
從上面我們得到的有用信息是:
1)小程序支付跟JSAPI和JSSDK很相似
2)統一下單,都需要首先獲取到Openid,調用相同的API,通過下面的我們的得知是https://api.mch.weixin.qq.com/pay/unifiedorder
3)調起支付頁面協議,小程序只支持HTTPS,
4)注意點,支付目錄和授權域名,小程序都是無。
5)小程序的回調函數
第二步:業務流程
地址:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_4&index=2
分析上面的時序圖,
1)用戶進入小程序,通過小程序發送下單支付請求,到我們的商戶系統。
過程拆解:商戶系統可以理解為我們自己的商戶服務器,存放我們服務器的代碼,這個過程就是,用戶發送一個請求到我們自己的服務器,參數就是商品的一些信息。
2)服務器調用小程序登錄API,微信服務器后台返回openid,商戶服務器生成訂單,調用統一下單API,返回預付單信息(prepay_id),將組合再次簽名。
過程拆解:我們自己的商戶服務器,調用微信登錄的API,這時候從微信的服務器拿到用戶的openid,拿到openid之后,我們自己的服務器要組合生成一條訂單,通過過程1發送過來的商品信息,組合生成一條訂單(可以參看統一下單API所需的參數),然后調用統一下單API,這時候微信服務器就返回給了我們prepay_id,我們自己的服務器通過再次簽名,可以拿到五個參數和sign
3)返回支付參數(5個參數和sign),小程序中發起下單請求到我們商戶服務器,這時候就可把相應的把小程序支付API需要的信息都返回給我們的小程序了。
4)調用wx.requestPayment,按照規則傳入我們需要的信息。
5)后面就是支付成功失敗的回調和顯示了。
三.服務器代碼分析
1、總覽
服務器demo下載地址:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1
微信支付開發文檔:https://pay.weixin.qq.com/wiki/doc/api/index.html
證書下載地址:商戶平台下載證書,賬戶中心->賬戶設置->API安全 下載證書&設置秘鑰
這里的秘鑰就是最開始說的key。
2、代碼結構,以PHP為例(WxpayAPI_php_v3)
SDK目錄結構
|-- cert
| |-- apiclient_cert.pem
| `-- apiclient_key.pem
|-- download.php
|-- index.php
|-- lib
| |-- WxPay.Api.php
| |-- WxPay.Config.php
| |-- WxPay.Data.php
| |-- WxPay.Exception.php
| `-- WxPay.Notify.php
|-- logs
| |-- 2015-03-06.log
| `-- 2015-03-11.log
|-- micropay.php
|-- native.php
|-- native_notify.php
|-- notify.php
|-- orderquery.php
|-- qrcode.php
|-- refund.php
|-- refundquery.php
|-- unifiedorder.php
`-- unit
|-- WxPay.JsApiPay.php
|-- WxPay.MicroPay.php
|-- WxPay.NativePay.php
|-- log.php
`-- phpqrcode
目錄功能簡介
lib
API接口封裝代碼
WxPay.Api.php 包括所有微信支付API接口的封裝
WxPay.Config.php 商戶配置
WxPay.Data.php 輸入參數封裝
WxPay.Exception.php 異常類
WxPay.Notify.php 回調通知基類
cert
證書存放路徑,證書可以登錄商戶平台https://pay.weixin.qq.com/index.php/account/api_cert下載
unit
工具類
unit/phpqrcode
開源二維碼php代碼
logs
日志文件
3、配置指南
MCHID = '1225312702';
這里填開戶郵件中的商戶號
APPID = 'wx426b3015555a46be';
這里填開戶郵件中的(公眾賬號APPID或者應用APPID或者小程序APPID)
KEY = 'e10adc3949ba59abbe56e057f20f883e'
這里請使用商戶平台登錄賬戶和密碼登錄http://pay.weixin.qq.com 平台設置的“API密鑰”,為了安全,請設置為32字符串。
APPSECRET = '01c6d59a3f9024db6336662ac95c8e74'
改參數在JSAPI支付(open平台賬戶不能進行JSAPI支付)的時候需要用來獲取用戶openid,可使用APPID對應的公眾平台登錄http://mp.weixin.qq.com的開發者中心獲取AppSecret。小程序后台獲取小程序的AppSecret。
四、效果
點擊支付后,會彈出二維碼,用相應的微信掃描二維碼,即可完成支付。
如有任何問題可加入微信小程序QQ群(418177552)咨詢