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文件夹下可以看到:
现在把代码整理出来方便以后直接用。
大概给说下 调用流程吧
首先 小程序 授权 授权成功 开始调用 小程序的登录
//调用登录接口 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文件夹下可以看到:
相关文章推荐
- Dcloud中mui 微信支付和支付宝支付接口完美实现付款代码(PHP支付宝demo)
- 小程序支付demo,微信小程序支付php代码
- 第三方支付程序 点卡api支付程序 点卡消耗平台 支持多家接口源码
- [置顶] 微信小程序支付demo, php开发小程序支付接口实例
- 微信小程序支付源码 Demo 后台服务端代码
- php 支付宝接口程序源码(完整版带实例)
- 财付通支付接口完整源码实例php版
- Dcloud中mui 微信支付和支付宝支付接口完美实现付款代码(PHP支付宝demo)
- PHP--解决微信小程序上传图片(wx.uploadFile)接口代码
- 微信小程序支付源码 Demo 后台服务端代码
- 微信小程序支付功能 php后台对接完整代码分享
- 微信小程序支付PHP代码
- 财付通支付接口完整源码实例php版
- Dcloud中mui 微信支付和支付宝支付接口完美实现付款代码(PHP支付宝demo)
- PHP网站备份程序代码分享
- php抓取百度快照、百度收录、百度热词程序代码
- 微信小程序 支付功能实现PHP实例详解
- 完整的PHP图形验证码程序源码!
- PHP接口项目程序开发浅析