提交 33f3ff6c 编写于 作者: D devil

qq小程序支持微信支付

上级 c1499a40
......@@ -106,7 +106,7 @@ class QQ
{
// 请求获取session_key
$url = 'https://api.q.qq.com/sns/jscode2session?appid='.$this->_appid.'&secret='.$this->_appsecret.'&js_code='.$authcode.'&grant_type=authorization_code';
$result = json_decode(file_get_contents($url), true);
$result = $this->HttpRequestGet($url);
if(!empty($result['openid']))
{
// 从缓存获取用户信息
......@@ -118,5 +118,62 @@ class QQ
}
return false;
}
/**
* 公共获取access_token
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-08-26
* @desc description
*/
public function GetAccessToken()
{
// 缓存key
$key = $this->_appid.'_access_token';
$result = cache($key);
if(!empty($result))
{
if($result['expires_in'] > time())
{
return $result['access_token'];
}
}
// 网络请求
$url = 'https://api.q.qq.com/api/getToken?grant_type=client_credential&appid='.$this->_appid.'&secret='.$this->_appsecret;
$result = $this->HttpRequestGet($url);
if(!empty($result['access_token']))
{
// 缓存存储
$result['expires_in'] += time();
cache($key, $result);
return $result['access_token'];
}
return false;
}
/**
* [HttpRequestGet get请求]
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @datetime 2018-01-03T19:21:38+0800
* @param [string] $url [url地址]
* @return [array] [返回数据]
*/
public function HttpRequestGet($url)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 500);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_URL, $url);
$res = curl_exec($curl);
curl_close($curl);
return json_decode($res, true);
}
}
?>
\ No newline at end of file
......@@ -161,8 +161,11 @@ class Weixin
return DataReturn('支付缺少配置', -1);
}
// 平台
$client_type = ApplicationClientType();
// 微信中打开
if(ApplicationClientType() == 'h5' && IsWeixinEnv())
if($client_type == 'h5' && IsWeixinEnv())
{
exit(header('location:'.PluginsHomeUrl('weixinwebauthorization', 'pay', 'index', input())));
}
......@@ -174,8 +177,26 @@ class Weixin
return $ret;
}
// QQ小程序使用微信支付
if($client_type == 'qq')
{
// 获取QQ access_token
$qq_appid = MyC('common_app_mini_qq_appid');
$qq_appsecret = MyC('common_app_mini_qq_appsecret');
$access_token = (new \base\QQ($qq_appid, $qq_appsecret))->GetAccessToken();
if($access_token === false)
{
return DataReturn('QQ凭证AccessToken获取失败', -1);
}
// QQ小程序代理下单地址
$request_url = 'https://api.q.qq.com/wxpay/unifiedorder?appid='.$qq_appid.'&access_token='.$access_token.'&real_notify_url='.urlencode($this->GetNotifyUrl($params));
} else {
$request_url = 'https://api.mch.weixin.qq.com/pay/unifiedorder';
}
// 请求接口处理
$result = $this->XmlToArray($this->HttpRequest('https://api.mch.weixin.qq.com/pay/unifiedorder', $this->ArrayToXml($ret['data'])));
$result = $this->XmlToArray($this->HttpRequest($request_url, $this->ArrayToXml($ret['data'])));
if(!empty($result['return_code']) && $result['return_code'] == 'SUCCESS' && !empty($result['prepay_id']))
{
return $this->PayHandleReturn($ret['data'], $result, $params);
......@@ -352,7 +373,7 @@ class Weixin
$appid = ($client_type == 'weixin') ? $this->config['mini_appid'] : $this->config['appid'];
// 异步地址处理
$notify_url = (__MY_HTTP__ == 'https' && isset($this->config['agreement']) && $this->config['agreement'] == 1) ? 'http'.mb_substr($params['notify_url'], 5, null, 'utf-8') : $params['notify_url'];
$notify_url = ($client_type == 'qq') ? 'https://api.q.qq.com/wxpay/notify' : $this->GetNotifyUrl($params);
// 请求参数
$data = [
......@@ -373,6 +394,20 @@ class Weixin
return DataReturn('success', 0, $data);
}
/**
* 获取异步通知地址
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-09-19
* @desc description
* @param [array] $params [输入参数]
*/
private function GetNotifyUrl($params)
{
return (__MY_HTTP__ == 'https' && isset($this->config['agreement']) && $this->config['agreement'] == 1) ? 'http'.mb_substr($params['notify_url'], 5, null, 'utf-8') : $params['notify_url'];
}
/**
* 获取支付交易类型
* @author Devil
......
......@@ -235,8 +235,9 @@ Page({
switch (res.data.data.is_payment_type) {
// 正常线上支付
case 0 :
var data = res.data.data;
my.tradePay({
tradeNO: res.data.data.data,
tradeNO: data.data,
success: res => {
if (res.resultCode == 9000) {
// 数据设置
......
......@@ -230,8 +230,9 @@ Page({
switch (res.data.data.is_payment_type) {
// 正常线上支付
case 0:
var data = res.data.data;
swan.requestPolymerPayment({
orderInfo: res.data.data.data,
orderInfo: data.data,
success: function (res) {
// 数据设置
self.order_item_pay_success_handle(order_ids);
......
......@@ -75,9 +75,6 @@ Page({
// 初始化配置
this.init_config();
// 显示分享菜单
app.show_share_menu();
},
// 初始化配置
......
......@@ -220,23 +220,38 @@ Page({
success: res => {
qq.hideLoading();
if (res.data.code == 0) {
var data = res.data.data.data;
qq.requestPayment({
package: data,
success: function (res) {
// 数据设置
self.order_item_pay_success_handle(index);
// 跳转支付页面
qq.navigateTo({
url: "/pages/paytips/paytips?code=9000&total_price=" +
self.data.data_list[index]['money']
var data = res.data.data;
// 是否微信支付
if(data.payment.payment == 'Weixin') {
qq.requestWxPayment({
url: data.data,
referer: app.data.request_url,
success: function(res) {
app.alert({msg: '支付成功后、请不要重复支付、如果订单状态未成功请联系客服处理', is_show_cancel: 0});
self.get_data_list();
},
fail: function (res) {
app.showToast('支付失败');
}
});
},
fail: function (res) {
app.showToast('支付失败');
}
});
} else {
qq.requestPayment({
package: data.data,
success: function (res) {
// 数据设置
self.order_item_pay_success_handle(index);
// 跳转支付页面
qq.navigateTo({
url: "/pages/paytips/paytips?code=9000&total_price=" +
self.data.data_list[index]['money']
});
},
fail: function (res) {
app.showToast('支付失败');
}
});
}
} else {
app.showToast(res.data.msg);
}
......
......@@ -233,19 +233,15 @@ Page({
switch (res.data.data.is_payment_type) {
// 正常线上支付
case 0 :
var data = res.data.data;
// 是否微信支付
if(res.data.data.payment.payment == 'Weixin') {
if(data.payment.payment == 'Weixin') {
qq.requestWxPayment({
url: res.data.data.data,
url: data.data,
referer: app.data.request_url,
success: function(res) {
// 数据设置
self.order_item_pay_success_handle(order_ids);
// 跳转支付页面
qq.navigateTo({
url: "/pages/paytips/paytips?code=9000"
});
app.alert({msg: '支付成功后、请不要重复支付、如果订单状态未成功请联系客服处理', is_show_cancel: 0});
self.get_data_list();
},
fail: function (res) {
app.showToast('支付失败');
......@@ -253,7 +249,7 @@ Page({
});
} else {
qq.requestPayment({
package: res.data.data.data,
package: data.data,
success: function(res) {
// 数据设置
self.order_item_pay_success_handle(order_ids);
......
......@@ -256,9 +256,10 @@ Page({
switch (res.data.data.is_payment_type) {
// 正常线上支付
case 0:
var data = res.data.data;
tt.pay({
orderInfo: res.data.data.order_info,
service: res.data.data.service,
orderInfo: data.order_info,
service: data.service,
success(res) {
// if (res.code == 0) {
// // 数据设置
......
......@@ -233,12 +233,13 @@ Page({
switch (res.data.data.is_payment_type) {
// 正常线上支付
case 0 :
var data = res.data.data;
wx.requestPayment({
timeStamp: res.data.data.data.timeStamp,
nonceStr: res.data.data.data.nonceStr,
package: res.data.data.data.package,
signType: res.data.data.data.signType,
paySign: res.data.data.data.paySign,
timeStamp: data.data.timeStamp,
nonceStr: data.data.nonceStr,
package: data.data.package,
signType: data.data.signType,
paySign: data.data.paySign,
success: function (res) {
// 数据设置
self.order_item_pay_success_handle(order_ids);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册