@@ -0,0 +1,94 @@ | |||||
<?php | |||||
/** | |||||
* 支付回调 | |||||
* | |||||
* @version $id:notify.php$ | |||||
* @package DedeBIZ.Site | |||||
* @copyright Copyright (c) 2023 DedeBIZ.COM | |||||
* @license https://www.dedebiz.com/license | |||||
* @link https://www.dedebiz.com | |||||
*/ | |||||
require_once(dirname(__FILE__)."/../system/common.inc.php"); | |||||
$dopost = isset($dopost)? $dopost : ''; | |||||
$buyid = isset($out_trade_no)? $out_trade_no : ''; | |||||
if ($dopost === 'alipay') { | |||||
$moRow = $dsql->GetOne("SELECT * FROM `#@__member_operation` WHERE buyid='$buyid'"); | |||||
if (empty($moRow)) { | |||||
ShowMsg("订单查询错误,请确保是您自己发起的订单", "javascript:;"); | |||||
exit; | |||||
} | |||||
if ($moRow['sta'] == 2) { | |||||
ShowMsg("已完成支付,无需重复付款", "javascript:;"); | |||||
exit; | |||||
} | |||||
$pInfo = $dsql->GetOne("SELECT * FROM `#@__sys_payment` WHERE id = 2"); | |||||
$pData = (array)json_decode($pInfo['config']); | |||||
$config = array( | |||||
"sign_type" => $pData['SignType'], | |||||
"appid" => $pData['APPID'], | |||||
"private_key" => $pData['PrivateKey'], | |||||
"public_key" => $pData['CertPublicKey'], | |||||
); | |||||
//支付宝 | |||||
try { | |||||
// 实例支付对象 | |||||
$pay = \AliPay\Web::instance($config); | |||||
unset($_REQUEST['dopost']); | |||||
unset($_REQUEST['sign_type']); | |||||
$data = $pay->notify(false, $_REQUEST); | |||||
if (isset($data['trade_no']) && !empty($data['trade_no'])) { | |||||
// $pay = \AliPay\Transfer::instance($config); | |||||
$result = $pay->query($data['out_trade_no']); | |||||
if ($result['trade_status']=== "TRADE_SUCCESS") { | |||||
$row = $dsql->GetOne("SELECT * FROM `#@__moneycard_type` WHERE tid='{$moRow['pid']}'"); | |||||
$query = "UPDATE `#@__member_operation` SET sta = '2' WHERE buyid = '$buyid'"; | |||||
$dsql->ExecuteNoneQuery($query); | |||||
$query = "UPDATE `#@__member` SET money = money+{$row['num']} WHERE mid = '{$moRow['mid']}'"; | |||||
$dsql->ExecuteNoneQuery($query); | |||||
ShowMsg("已经完成付款", $cfg_memberurl."/index.php"); | |||||
exit; | |||||
} | |||||
} else { | |||||
ShowMsg("尚未完成付款操作", $cfg_memberurl."/index.php"); | |||||
exit; | |||||
} | |||||
} catch (Exception $e) { | |||||
ShowMsg("付款错误", "javascript:;"); | |||||
exit; | |||||
} | |||||
} else if ($dopost === 'wechat') { | |||||
$pInfo = $dsql->GetOne("SELECT * FROM `#@__sys_payment` WHERE id = 1"); | |||||
$pData = (array)json_decode($pInfo['config']); | |||||
$config = array( | |||||
"appid" => $pData['AppID'], | |||||
"mch_id" => $pData['MchID'], | |||||
"mch_key" => $pData['APIv2Secret'], | |||||
); | |||||
$wechat = new \WeChat\Pay($config); | |||||
$data = $wechat->getNotify(); | |||||
if ($data['return_code'] === 'SUCCESS' && $data['result_code'] === 'SUCCESS') { | |||||
$buyid = $data['out_trade_no']; | |||||
$moRow = $dsql->GetOne("SELECT * FROM `#@__member_operation` WHERE buyid='$buyid'"); | |||||
if (empty($moRow)) { | |||||
ShowMsg("订单查询错误,请确保是您自己发起的订单", "javascript:;"); | |||||
exit; | |||||
} | |||||
$row = $dsql->GetOne("SELECT * FROM `#@__moneycard_type` WHERE tid='{$moRow['pid']}'"); | |||||
$query = "UPDATE `#@__member_operation` SET sta = '2' WHERE buyid = '$buyid'"; | |||||
$dsql->ExecuteNoneQuery($query); | |||||
$query = "UPDATE `#@__member` SET money = money+{$row['num']} WHERE mid = '{$moRow['mid']}'"; | |||||
$dsql->ExecuteNoneQuery($query); | |||||
echo "success"; | |||||
exit; | |||||
} else { | |||||
echo "error"; | |||||
exit; | |||||
} | |||||
} else { | |||||
ShowMsg("未知支付方式", "javascript:;"); | |||||
exit; | |||||
} |
@@ -0,0 +1,63 @@ | |||||
<?php | |||||
/** | |||||
* 支付返回页 | |||||
* | |||||
* @version $id:return.php$ | |||||
* @package DedeBIZ.Site | |||||
* @copyright Copyright (c) 2023 DedeBIZ.COM | |||||
* @license https://www.dedebiz.com/license | |||||
* @link https://www.dedebiz.com | |||||
*/ | |||||
require_once(dirname(__FILE__)."/../system/common.inc.php"); | |||||
$dopost = isset($dopost)? $dopost : ''; | |||||
$buyid = isset($out_trade_no)? $out_trade_no : ''; | |||||
if ($dopost === 'alipay') { | |||||
$moRow = $dsql->GetOne("SELECT * FROM `#@__member_operation` WHERE buyid='$buyid'"); | |||||
if (empty($moRow)) { | |||||
ShowMsg("订单查询错误,请确保是您自己发起的订单", "javascript:;"); | |||||
exit; | |||||
} | |||||
if ($moRow['sta'] == 2) { | |||||
ShowMsg("已完成支付,无需重复付款", "javascript:;"); | |||||
exit; | |||||
} | |||||
$pInfo = $dsql->GetOne("SELECT * FROM `#@__sys_payment` WHERE id = 2"); | |||||
$pData = (array)json_decode($pInfo['config']); | |||||
$config = array( | |||||
"sign_type" => $pData['SignType'], | |||||
"appid" => $pData['APPID'], | |||||
"private_key" => $pData['PrivateKey'], | |||||
"public_key" => $pData['CertPublicKey'], | |||||
); | |||||
//支付宝 | |||||
try { | |||||
// 实例支付对象 | |||||
$pay = \AliPay\Web::instance($config); | |||||
unset($_REQUEST['dopost']); | |||||
unset($_REQUEST['sign_type']); | |||||
$data = $pay->notify(); | |||||
if (isset($data['trade_no']) && !empty($data['trade_no'])) { | |||||
// $pay = \AliPay\Transfer::instance($config); | |||||
$result = $pay->query($data['out_trade_no']); | |||||
if ($result['trade_status']=== "TRADE_SUCCESS") { | |||||
$row = $dsql->GetOne("SELECT * FROM `#@__moneycard_type` WHERE tid='{$moRow['pid']}'"); | |||||
$query = "UPDATE `#@__member_operation` SET sta = '2' WHERE buyid = '$buyid'"; | |||||
$dsql->ExecuteNoneQuery($query); | |||||
$query = "UPDATE `#@__member` SET money = money+{$row['num']} WHERE mid = '{$moRow['mid']}'"; | |||||
$dsql->ExecuteNoneQuery($query); | |||||
ShowMsg("已经完成付款", $cfg_memberurl."/index.php"); | |||||
exit; | |||||
} | |||||
} else { | |||||
ShowMsg("尚未完成付款操作", $cfg_memberurl."/index.php"); | |||||
exit; | |||||
} | |||||
} catch (Exception $e) { | |||||
ShowMsg("付款错误", "javascript:;"); | |||||
exit; | |||||
} | |||||
} |
@@ -19,6 +19,7 @@ $pname = ''; | |||||
$price = ''; | $price = ''; | ||||
$mtime = time(); | $mtime = time(); | ||||
$paytype = isset($paytype)? intval($paytype) : 0; | $paytype = isset($paytype)? intval($paytype) : 0; | ||||
$buyid = isset($buyid)? HtmlReplace($buyid, 1) : ''; | |||||
if ($dopost === "bank_ok") { | if ($dopost === "bank_ok") { | ||||
$moRow = $dsql->GetOne("SELECT * FROM `#@__member_operation` WHERE buyid='$buyid' AND mid={$mid}"); | $moRow = $dsql->GetOne("SELECT * FROM `#@__member_operation` WHERE buyid='$buyid' AND mid={$mid}"); | ||||
if (empty($moRow)) { | if (empty($moRow)) { | ||||
@@ -33,6 +34,36 @@ if ($dopost === "bank_ok") { | |||||
$dsql->ExecuteNoneQuery($query); | $dsql->ExecuteNoneQuery($query); | ||||
ShowMsg("已经完成付款,等待管理员审核", "operation.php"); | ShowMsg("已经完成付款,等待管理员审核", "operation.php"); | ||||
exit; | exit; | ||||
} else if ($dopost === "wechat_ok") { | |||||
$moRow = $dsql->GetOne("SELECT * FROM `#@__member_operation` WHERE buyid='$buyid' AND mid={$mid}"); | |||||
if (empty($moRow)) { | |||||
ShowMsg("订单查询错误,请确保是您自己发起的订单", "javascript:;"); | |||||
exit; | |||||
} | |||||
$pInfo = $dsql->GetOne("SELECT * FROM `#@__sys_payment` WHERE id = 1"); | |||||
$pData = (array)json_decode($pInfo['config']); | |||||
$config = array( | |||||
"appid" => $pData['AppID'], | |||||
"mch_id" => $pData['MchID'], | |||||
"mch_key" => $pData['APIv2Secret'], | |||||
); | |||||
$wechat = new \WeChat\Pay($config); | |||||
$options = array( | |||||
'out_trade_no' => $buyid, | |||||
); | |||||
$result = $wechat->queryOrder($options); | |||||
if ($result['return_code'] === "SUCCESS" && $result['trade_state'] === "SUCCESS") { | |||||
$row = $dsql->GetOne("SELECT * FROM `#@__moneycard_type` WHERE tid='{$moRow['pid']}'"); | |||||
$query = "UPDATE `#@__member_operation` SET sta = '2' WHERE buyid = '$buyid'"; | |||||
$dsql->ExecuteNoneQuery($query); | |||||
$query = "UPDATE `#@__member` SET money = money+{$row['num']} WHERE mid = '$mid'"; | |||||
$dsql->ExecuteNoneQuery($query); | |||||
ShowMsg("已经完成付款", "index.php"); | |||||
exit; | |||||
} else { | |||||
ShowMsg("尚未完成付款操作", "index.php"); | |||||
exit; | |||||
} | |||||
} | } | ||||
if (isset($pd_encode) && isset($pd_verify) && md5("payment".$pd_encode.$cfg_cookie_encode) == $pd_verify) { | if (isset($pd_encode) && isset($pd_verify) && md5("payment".$pd_encode.$cfg_cookie_encode) == $pd_verify) { | ||||
$result = json_decode(mchStrCode($pd_encode, 'DECODE')); | $result = json_decode(mchStrCode($pd_encode, 'DECODE')); | ||||
@@ -121,7 +152,6 @@ if ($paytype === 0) { | |||||
if($paytype === 1) { | if($paytype === 1) { | ||||
//微信支付 | //微信支付 | ||||
include_once(DEDEINC.'/sdks/include.php'); | |||||
include_once(DEDEINC.'/libraries/oxwindow.class.php'); | include_once(DEDEINC.'/libraries/oxwindow.class.php'); | ||||
$pInfo = $dsql->GetOne("SELECT * FROM `#@__sys_payment` WHERE id = $paytype"); | $pInfo = $dsql->GetOne("SELECT * FROM `#@__sys_payment` WHERE id = $paytype"); | ||||
$pData = (array)json_decode($pInfo['config']); | $pData = (array)json_decode($pInfo['config']); | ||||
@@ -133,11 +163,11 @@ if ($paytype === 0) { | |||||
$wechat = new \WeChat\Pay($config); | $wechat = new \WeChat\Pay($config); | ||||
$options = array( | $options = array( | ||||
'product_id' => $buyid, | 'product_id' => $buyid, | ||||
'body' => '测试商品', | |||||
'body' => $row['pname'], | |||||
'out_trade_no' => $buyid, | 'out_trade_no' => $buyid, | ||||
'total_fee' => $row['money']*100, | 'total_fee' => $row['money']*100, | ||||
'trade_type' => 'NATIVE', | 'trade_type' => 'NATIVE', | ||||
'notify_url' => 'https://www.dedebiz.com/notify?platform=wxpay', | |||||
'notify_url' => $GLOBALS['cfg_basehost'].$GLOBALS['cfg_phpurl'].'/notify.php?dopost=wechat', | |||||
); | ); | ||||
try { | try { | ||||
// 生成预支付码 | // 生成预支付码 | ||||
@@ -168,22 +198,21 @@ if ($paytype === 0) { | |||||
"appid" => $pData['APPID'], | "appid" => $pData['APPID'], | ||||
"private_key" => $pData['PrivateKey'], | "private_key" => $pData['PrivateKey'], | ||||
"public_key" => $pData['CertPublicKey'], | "public_key" => $pData['CertPublicKey'], | ||||
"notify_url" => 'https://www.dedebiz.com/alipay-notify.php', | |||||
"return_url" => 'https://www.dedebiz.com/alipay-notify.php', | |||||
"notify_url" => $GLOBALS['cfg_basehost'].$GLOBALS['cfg_phpurl'].'/notify.php?dopost=alipay', | |||||
"return_url" => $GLOBALS['cfg_basehost'].$GLOBALS['cfg_phpurl'].'/return.php?dopost=alipay', | |||||
); | ); | ||||
// var_dump($config);exit; | |||||
//支付宝 | //支付宝 | ||||
try { | try { | ||||
// 实例支付对象 | // 实例支付对象 | ||||
$pay = \AliPay\Web::instance($config); | $pay = \AliPay\Web::instance($config); | ||||
// 参考链接:https://docs.open.alipay.com/api_1/alipay.trade.page.pay | |||||
$result = $pay->apply(array([ | |||||
$result = $pay->apply(array( | |||||
'out_trade_no' => $buyid, // 商户订单号 | 'out_trade_no' => $buyid, // 商户订单号 | ||||
'total_amount' => sprintf("%d",$row['money']), // 支付金额 | |||||
'subject' => '支付订单描述', // 支付订单描述 | |||||
])); | |||||
var_dump(htmlspecialchars( $result)); | |||||
'total_amount' => $row['money'], // 支付金额 | |||||
'subject' => $row['pname'], // 支付订单描述 | |||||
)); | |||||
echo $result; | |||||
} catch (Exception $e) { | } catch (Exception $e) { | ||||
echo $e->getMessage(); | echo $e->getMessage(); | ||||
} | } | ||||