php小程序支付代码接口 带源码

    前段时间由于业务需求又开始接触了小程序支付调用代码  原来没有整理,现在又要重新看了 太麻烦。

现在把代码整理出来方便以后直接用。


大概给说下  调用流程吧


首先 小程序  授权 授权成功   开始调用 小程序的登录 

//调用登录接口
wx.login({
success: function (re) {
wx.getUserInfo({
success: function (res) {
typeof cb == "function" && cb(that.globalData.userInfo)
wx.request({
url: 'session_key.php',
method: 'GET',
data: { "code": re.code, supplier_id: that.globalData.shopId},//这个只需要code就可以
header: {
'Accept': 'application/json'
},

截图看下请求参数

// success: function (ree) {
// wx.request({
// url: 'demo.php',
// method: 'GET',
// data: { "sessionKey": ree.data.session_key, "iv": res.iv, "encryptedData": res.encryptedData, supplier_id: that.globalData.shopId },
// header: {
// 'Accept': 'application/json'
// },
请求 参数 截图

supplier_id 是自己加的不需要!!

})
}
})
}
})


后端代码   session_key.php

echo file_get_contents("https://api.weixin.qq.com/sns/jscode2session?appid=".$appid."&secret=".$appsecret."&js_code=".$code."&grant_type=authorization_code");

这个其实就是为了返回这个值 给小程序


小程序接到这个值  然后发起 demo.php 请求   具体看上面代码


demo.php 代码

<?php
define('IN_ECS', true);
define('IN_CTRL', true);
include_once "wxBizDataCrypt.php";

$appid = $res['appid'];
/* //调用登录接口
      wx.login({
        success: function (rres) {
          wx.getUserInfo({
            success: function (res) {
              //that.globalData.userInfo = res.userInfo
              that.globalData.userInfo = res.encryptedData+'wangt'+res.iv+'code'+rres.code;
              //that.globalData.userInfo = res.code
              //console.log(res.userInfo)
              typeof cb == "function" && cb(that.globalData.userInfo)
            }
          })
        }
      })
*/
// $iv  : res.iv
//js_code : rres.code
//$encryptedData : res.encryptedData
// https://api.weixin.qq.com/sns/jscode2session?appid=wx397f8d585bdb2557&secret=78e40f84f7392ee199e3adaa6ea72d0a&js_code=021VFFTF0wdcIh2JwUTF0ULGTF0VFFTj&grant_type=authorization_code
//返回值为  $sessionKey
// $sessionKey = 'P0jnPQP7B2lvWFx7lne8zQ==';

$sessionKey = $_REQUEST['sessionKey'];
$encryptedData =$_REQUEST['encryptedData'];
// $encryptedData="kkXRS3sZdoIlEAmC29484HLXmW1b7RfUAJMsG3uOFelvRQy+i2N4NzqYR+VtJpy4AzQgEYwmueYfOQkj6Gh52mhpkSPn0eBM6Jky9WCazmrW9kaKmv2BkwDHFyJ5DYSg6bWVBeJrY7ddiihrbEDxR/aMvB2o6ZspzQ/7dcc1Ufwwyj6PM/L2l34mviJ/R/vtclxaOdbojiwx8ujVJh1Pk7QGgZSL0m6+h+em1Is999EHPiOjM6oqCLWz8qxe080U0wFlUwxwdSn3apopyWwt7ZI9EdHLGRSfl/zWG/JEyhYcJXcml3xYdL3wpfc3qdjgofhXv7+yp/hkN5HRzlV6fkIk66JL14jmzaN3kJhktQ0d+Y3SFGUsh5FpBJ6CPvXwZQ21mh30Oi6LYkhmRCVWfF7j1RUngEs8+bZml672OqVhnFMwihW/kiNLbFVb+fHkK2QN8rYhOKbjSaSYVr3QwF26Mb3oK/qoy41iU/uiPQvjn7mikHP0si2a8TbFRRzy5i/EkoltKHtONcOum8kMVQ==";
//$iv = 'r7BXXKkLb8qrSNn05n0qiA==';
// $iv = '+TYATEUZvFiBxLZmSUFyJw==';
$iv = $_REQUEST['iv'];
$pc = new WXBizDataCrypt($appid, $sessionKey);
$errCode = $pc->decryptData($encryptedData, $iv, $data );
function object2array(&$object) {
    $object =  json_decode($object,true);
    return  $object;
}
if ($errCode == 0) {

    // print_r($data);

    $data = object2array(&$data);
    unset($data['watermark']);

    die(json_encode($data));
    // var_dump($data['unionId']);
} else {
    print($errCode . "\n");
}

输出用户的信息 以及 openid  



注意   要是 关联 了公众平台 还会 多返回一个参数  unid 

前面调用 用户信息大概就是这个样子

下面就是支付的 调用 



PaypayOrder: function(){
// xcx_suppliers / zhu_life_wxpay
/**处理支付 */
var total_fee=wx.getStorageSync( 'order_amount')
var order_sn = wx.getStorageSync( 'order_sn')
var order_id = wx.getStorageSync( 'order_id')
var userInfo = app.globalData.userInfo;
wx.request({
url: URL + '/example/jsapi.php',
method: 'GET',
// data: { "openId": app.globalData.userInfo.openId, "body": "商品结算", "total_fee": total_fee*100, "out_trade_no": order_sn },
data: { "openId": app.globalData.userInfo.openId, "body": "商品结算", "total_fee": total_fee * 100, "out_trade_no": order_sn, "supplier_id": app.globalData.shopId },
header: {
'Accept': 'application/json'
},
success: function (res) {
var pay_arg = res.data;
wx.requestPayment({
"timeStamp": pay_arg.timeStamp,
"nonceStr": pay_arg.nonceStr,
"package": pay_arg.package,
"signType": pay_arg.signType,
"paySign": pay_arg.paySign,
"success": function (res) {
},
"fail": function (res) {
},
"complete": function (res) {
if (res.errMsg == 'requestPayment:ok') {
wx.request({
url: URL+ 'flow.php',
method: 'GET',
data: { "act": "change_order_status", order_id: order_id },
header: {
'Accept': 'application/json'
},
success: function (res) {
wx.showToast({
title: '支付成功',
})
setTimeout( function(){
wx.switchTab({
url: '../my/my'
})
}, 2000)
}
})
}
}
})
}
})
},


请求的 参数






2.  微信SDK 下载链接:https://pay.weixin.qq.com/wiki/doc/api/download/WxpayAPI_php_v3.zip

 解压在lib文件夹下可以看到:



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值