欢迎交流:产品开发解决方案“零云”lingyun.net
首先你得有一个已经认证并且开通了微信支付的小程序。建议有认证公众号的直接用公众号创建,这样可以即时生效,避免重新走微信认证的审核机制多花好几天。
1.在小程序后台和微信商户后台拿到下列数据
小程序:appID/appSecret
微信支付:商户号/加密key
2.开发一个小程序的支付页面比如 pay.wxml
3.在pay.js里调用 wx.login()接口得到code
4.提交上一步得到的code到你的服务器后台接口
5.服务器接口根据code/appId/appSecret参数获取openid
$params = array(
'appid' => C('wxapp_config.appid'),
'secret' => C('wxapp_config.appsecret'),
'js_code' => $code,
'grant_type' => 'authorization_code',
);
echo $this->http('https://api.weixin.qq.com/sns/jscode2session', $params);
6.pay.js接收到返回的数据里面包含openid
7.pay.js根据openid/money想你的服务器后端支付接口发起请求
8.服务器支付接口接收到请求创建了一个自己的订单,然后调用微信支付统一下单接口得到预支付订单(这一步跟微信公众号支付的JSAPI一样的)
9.服务器用微信服务器返回的预支付订单数据构造签名数据(json格式)
$jsapi['appId'] = $UnifiedOrderResult["appid"];
$jsapi['timeStamp'] = (string) time();
$jsapi['nonceStr'] = $this->getNonceStr();
$jsapi['package'] = "prepay_id=" . $UnifiedOrderResult['prepay_id'];
$jsapi['signType'] = 'MD5';
$jsapi['paySign'] = $this->MakeSign($jsapi);
$parameters = json_encode($jsapi);
echo$parameters;
10.pay.js获得你的服务器支付接口返回的支付字符串
11.把字符串序列化为object然后添加success和fail回调方法
12.wx.requestPayment()发起微信客户端支付请求
var payobj = JSON.parse(json);
payobj.success = 'function(res){wx.showToast({title: "充值成功", icon: "success", duration: 2000});}';
payobj.fail = 'function(res){wx.showToast({title: "充值失败", icon: "success", duration: 2000});}';
console.log(payobj);
var result = wx.requestPayment(payobj);
console.log(result);
相关链接
- lyadmin 的详细介绍:点击查看
- lyadmin 的下载地址:点击下载
- QQ交流群号:252262604
- 欢迎交流:产品开发解决方案“零云”lingyun.net