| @@ -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(); | ||||
| } | } | ||||