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


一、介紹

今天跟大家分享微信小程序集成支付。

二、分析

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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM