1、介紹php
今天跟你們分享微信小程序集成支付。html
2、分析算法
一、小程序支付API小程序
地址:https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-pay.html#wxrequestpaymentobject微信小程序
註釋:api
經過接口的查看,咱們知道,小程序端要想使用支付的接口,必需要拿到相應的值安全
timeStamp:Linux時間戳,可獲取本地時間。服務器
nonceStr:隨機字符串,從服務器統一下單接口返回。微信
package:統一下單接口返回的prepay_id參數值,發送提交時格式‘prepay_id=*’app
signType:算法簽名直接寫MD5
paySign:簽名,簽名算法。簽名必須嚴格按按照以下規則進行簽名,注意必定拼接上key,關於key後面再說。
舉例:paySign = MD5(appId=wxd678efh567hg6787&nonceStr=5K8264ILTKCH16CQ2502SI8ZNMTM67VS&package=prepay_id=wx2017033010242291fcfe0db70013231072&signType=MD5&timeStamp=1490840662&key=qazwsxedcrfvtgbyhnujmikolp111111) = 22D9B4E54AB1950F51E0649E8810ACD6
二、微信支付接口
雖然咱們已經查看了小程序的支付接口,可是到此時,咱們仍是不知道這些參數怎麼得來,接下來咱們選擇支付接口中的瞭解更多信息,查看微信支付接口文檔。
打開後,咱們能夠看到以下的截圖。
第一步:開發步驟:
地址: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)後面就是支付成功失敗的回調和顯示了。
三.服務器代碼分析
一、總覽
服務器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。
二、代碼結構,以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
日誌文件
三、配置指南
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。
4、效果
點擊支付後,會彈出二維碼,用相應的微信掃描二維碼,便可完成支付。
若有任何問題可加入微信小程序QQ羣(418177552)諮詢