有几个先要条件: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:由于支付接口和流程异常复杂而且常常容易变更,若是维护起来是至关麻烦的,经过使用这种第三方封装的,且有专人维护的接口,会减小至关一部分的开发成本和后续维护成本
全文参考网址: