有幾個先要條件:php
備註:pingpp,ping plus plus 簡稱 ping++html
大體的配置內容以下:node
通常的 pingpp 支付請求處理是根據上圖所示:git
參考:www.pingxx.com/docs/overvi…github
這裏是 pingpp 幫咱們封裝好了微信小程序的支付流程,只須要傳入wx_app_id公衆號惟一標示和受權後跳轉的地址就能夠了,正常的流程並非這麼簡單,具體能夠參考微信公衆號的支付開發文檔:pay.weixin.qq.com/wiki/doc/ap…json
小程序的 pingpp 調用支付流程是:gulp
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);
複製代碼
這裏能夠參看官方小程序的支付流程圖微信小程序
這裏須有幾個地方須要注意:api
下載 pingpp 專門給小程序用的js sdk,在這個地址下載github.com/PingPlusPlu…
這裏是須要本身構建的,使用 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 的目錄須要本身放置到小程序的開發項目目錄裏面,目錄根據本身須要肯定
全文參考網址: