【微信小程序】支付過程詳解

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)諮詢

 

 

相關文章
相關標籤/搜索