零云技术分享之:微信小程序支付开发

CoreThink 发布于 2017/05/15 15:17
阅读 359
收藏 1

欢迎交流:产品开发解决方案“零云”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);

 

图片展示流程是这样:




可以扫描我们的小程序体验下:

相关链接

加载中
返回顶部
顶部