有幾個先要條件:php
備註:pingpp,ping plus plus 簡稱 ping++
大體的配置內容以下:html
通常的 pingpp 支付請求處理是根據上圖所示:node
參考:https://www.pingxx.com/docs/overview/transaction/charge?transaction=truegit
這裏是 pingpp 幫咱們封裝好了微信小程序的支付流程,只須要傳入wx_app_id公衆號惟一標示和受權後跳轉的地址就能夠了,正常的流程並非這麼簡單,具體能夠參考微信公衆號的支付開發文檔: https://pay.weixin.qq.com/wiki/doc/api/index.html
小程序的 pingpp 調用支付流程是:github
wx.login({ // 這個接口能夠在打開小程序的時候調用,而後保存code用來後續使用 success: function(res) { if(res.code){ // 獲取到 code console.log('code = ' + res.code); }else{ console.log('獲取用戶登陸態失敗!' + res.errMsg); } } });
這裏能夠參看官方小程序登陸流程圖
wx.request
),請求你本身的服務端。而後在服務端使用 code 來獲取 open_id,其中 $wx_app_id
是你的微信AppID(小程序ID) ,$wx_app_secret
是你的微信小程序密鑰。<?php $code = $_GET['code']; // 這裏會返回一個 open_id,這個open_id是微信用戶惟一標識 $open_id = \Pingpp\WxpubOAuth::getOpenid($wx_app_id, $wx_app_secret, $code);
這裏能夠參看官方小程序的支付流程圖
這裏須有幾個地方須要注意:web
關於用戶的 unionidjson
下載 pingpp 專門給小程序用的js sdk,在這個地址下載https://github.com/PingPlusPlus/pingpp-jsgulp
這裏是須要本身構建的,使用 gulp 構建:小程序
由於微信小程序中 不能使用其餘支付渠道,構建時請添加該參數
wx_lite
gulp build --channels=wx_lite
構建好後就會出現dist 目錄:微信小程序
pingpp-js-master tree . -L 1 . ├── CHANGELOG.md ├── README.md ├── alipay_in_weixin ├── demo ├── dist // 每次構建都會從新刪除 dist 目錄而後從新建立 ├── gulpfile.js ├── mods.js.tmpl ├── node_modules ├── package.json ├── src └── test
dist目錄下會生成pingpp.js
,咱們須要的就是這個。
在小程序的支付訂單頁面的 js 文件(這個頁面是根據本身開發的程序邏輯決定,總而言之,就是最終要在小程序支付的地方)
// 建立 pingpp charge 訂單 // apiGet.pingppCreateCharge是本身寫的封裝函數,用來發起 pingpp 的支付請求,不須要理會 apiGet.pingppCreateCharge(payId, 'wx_lite').then(function (res) { console.log('result_pingpp:' + JSON.stringify(res)); // pingpp 會返回一個 charge 的支付請求,這裏按需引入 pingpp 的 jssdk 包,而後發起真正的 pingpp 支付請求(即調起 pingpp 的支付控件) if (res.type == 1) { // 調起 pingpp 支付 let pingpp = require('../../utils/libs/pingpp.js'); // 執行 pingpp 的建立支付的方法pingpp.createPayment pingpp.createPayment(res.charge, function (result, err) { if (result == "success") { console.log(result); // payment succeeded 支付成功 } else { console.log(result + " " + err.msg + " " + err.extra); } }); }
pingpp.js 的目錄須要本身放置到小程序的開發項目目錄裏面,目錄根據本身須要肯定
A:由於支付接口和流程異常複雜而且常常容易變更,若是維護起來是至關麻煩的,經過使用這種第三方封裝的,且有專人維護的接口,會減小至關一部分的開發成本和後續維護成本
全文參考網址: