您的位置:首页 > 移动开发 > 微信开发

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

2018-02-24 10:11 585 查看
    前段时间由于业务需求又开始接触了小程序支付调用代码  原来没有整理,现在又要重新看了 太麻烦。
现在把代码整理出来方便以后直接用。

大概给说下  调用流程吧

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

//调用登录接口 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文件夹下可以看到:


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: