2020.02新版

This commit is contained in:
Blokura
2020-02-21 16:20:55 +08:00
parent 45e2415d71
commit a2f29a310b
755 changed files with 95144 additions and 0 deletions

156
paypage/inc.php Normal file
View File

@@ -0,0 +1,156 @@
<?php
include("../includes/common.php");
function showerror($msg){
include ROOT.'paypage/error.php';
exit;
}
function showerrorjson($msg){
$result = ['code'=>-1, 'msg'=>$msg];
exit(json_encode($result));
}
function check_paytype(){
if(strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger/')!==false){
$type='wxpay';
}elseif(strpos($_SERVER['HTTP_USER_AGENT'], 'AlipayClient/')!==false){
$type='alipay';
}elseif(strpos($_SERVER['HTTP_USER_AGENT'], 'QQ/')!==false){
$type='qqpay';
}
return $type;
}
function alipayOpenId($channel){
global $DB,$siteurl;
$channel = \lib\Channel::get($channel);
if(!$channel)showerror('支付通道不存在');
define("PAY_ROOT", PLUGIN_ROOT.$channel['plugin'].'/');
require_once(PAY_ROOT."inc/AlipayOauthService.php");
$config['redirect_uri'] = $siteurl.'paypage/';
$oauth = new AlipayOauthService($config);
if(isset($_GET['auth_code'])){
$result = $oauth->getToken($_GET['auth_code']);
if($result['user_id']){
return $result['user_id'];
}else{
showerror('支付宝快捷登录失败!['.$result['sub_code'].']'.$result['sub_msg']);
}
}else{
$oauth->oauth();
}
}
function weixinOpenId($channel){
global $DB;
$channel = \lib\Channel::get($channel);
if(!$channel)showerror('支付通道不存在');
define("PAY_ROOT", PLUGIN_ROOT.$channel['plugin'].'/');
require_once PAY_ROOT."inc/WxPay.Api.php";
require_once PAY_ROOT."inc/WxPay.JsApiPay.php";
$tools = new JsApiPay();
$openId = $tools->GetOpenid();
if(!$openId)showerror('OpenId获取失败');
return $openId;
}
function alipay_jspay($channel,$trade_no,$money,$name,$openid){
global $DB,$conf;
$channel = \lib\Channel::get($channel);
if(!$channel)showerrorjson('支付通道不存在');
define("PAY_ROOT", PLUGIN_ROOT.$channel['plugin'].'/');
define("TRADE_NO", $trade_no);
require_once(PAY_ROOT."inc/model/builder/AlipayTradeCreateContentBuilder.php");
require_once(PAY_ROOT."inc/AlipayTradeService.php");
// 创建请求builder设置请求参数
$qrPayRequestBuilder = new AlipayTradeCreateContentBuilder();
$qrPayRequestBuilder->setOutTradeNo(TRADE_NO);
$qrPayRequestBuilder->setTotalAmount($money);
$qrPayRequestBuilder->setSubject($name);
$qrPayRequestBuilder->setBuyerId($openid);
// 调用qrPay方法获取当面付应答
$qrPay = new AlipayTradeService($config);
$qrPayResult = $qrPay->create($qrPayRequestBuilder);
// 根据状态值进行业务处理
$status = $qrPayResult->getTradeStatus();
$response = $qrPayResult->getResponse();
if($status == 'SUCCESS'){
$trade_no = $response->trade_no;
return $trade_no;
}elseif($status == 'FAILED'){
showerrorjson('支付宝创建订单失败!['.$response->sub_code.']'.$response->sub_msg);
}else{
showerrorjson('系统异常,状态未知!');
}
}
function wxpay_jspay($channel,$trade_no,$money,$name,$openid){
global $DB,$conf;
$channel = \lib\Channel::get($channel);
if(!$channel)showerrorjson('支付通道不存在');
define("PAY_ROOT", PLUGIN_ROOT.$channel['plugin'].'/');
define("TRADE_NO", $trade_no);
require_once PAY_ROOT."inc/WxPay.Api.php";
require_once PAY_ROOT."inc/WxPay.JsApiPay.php";
$input = new WxPayUnifiedOrder();
$input->SetBody($name);
$input->SetOut_trade_no(TRADE_NO);
$input->SetTotal_fee($money*100);
$input->SetTime_start(date("YmdHis"));
$input->SetTime_expire(date("YmdHis", time() + 600));
$input->SetNotify_url($conf['localurl'].'pay/wxpay/notify/'.TRADE_NO.'/');
$input->SetTrade_type("JSAPI");
$input->SetProduct_id("01001");
$input->SetOpenid($openid);
$order = WxPayApi::unifiedOrder($input);
if($order["result_code"]=='SUCCESS'){
$tools = new JsApiPay();
$jsApiParameters = $tools->GetJsApiParameters($order);
return $jsApiParameters;
}else{
showerrorjson('微信支付下单失败!['.$order["return_code"].'] '.$order["return_msg"].'['.$order["err_code"].'] '.$order["err_code_des"]);
}
}
function qqpay_jspay($channel,$trade_no,$money,$name){
global $DB,$conf;
$channel = \lib\Channel::get($channel);
if(!$channel)showerrorjson('支付通道不存在');
define("PAY_ROOT", PLUGIN_ROOT.$channel['plugin'].'/');
define("TRADE_NO", $trade_no);
require_once (PAY_ROOT.'inc/qpayMchAPI.class.php');
//入参
$params = array();
$params["out_trade_no"] = TRADE_NO;
$params["body"] = $name;
$params["fee_type"] = "CNY";
$params["notify_url"] = $conf['localurl'].'pay/qqpay/notify/'.TRADE_NO.'/';
$params["spbill_create_ip"] = real_ip();
$params["total_fee"] = $money*100;
$params["trade_type"] = "JSAPI";
//api调用
$qpayApi = new QpayMchAPI('https://qpay.qq.com/cgi-bin/pay/qpay_unified_order.cgi', null, 10);
$ret = $qpayApi->reqQpay($params);
$result = QpayMchUtil::xmlToArray($ret);
//print_r($result);
if($result['return_code']=='SUCCESS' && $result['result_code']=='SUCCESS'){
$prepay_id = $result['prepay_id'];
return $prepay_id;
}elseif(isset($result["err_code"])){
showerrorjson('QQ钱包支付下单失败['.$result["err_code"].'] '.$result["err_code_des"]);
}else{
showerrorjson('QQ钱包支付下单失败['.$result["return_code"].'] '.$result["return_msg"]);
}
}