From cc618a66eaf74022131e81b759af56e82d483fd3 Mon Sep 17 00:00:00 2001 From: tping Date: Mon, 1 Mar 2021 15:17:44 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E6=B1=87=E4=BB=98=E5=AE=9D=E6=94=AF?= =?UTF-8?q?=E4=BB=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controller/NotifyController.class.php | 60 ++++--------------- .../Sdk/Controller/PayH5Controller.class.php | 25 ++++---- 2 files changed, 26 insertions(+), 59 deletions(-) diff --git a/Application/Callback/Controller/NotifyController.class.php b/Application/Callback/Controller/NotifyController.class.php index d8d5f1c8..113915a5 100644 --- a/Application/Callback/Controller/NotifyController.class.php +++ b/Application/Callback/Controller/NotifyController.class.php @@ -501,7 +501,7 @@ class NotifyController extends BaseController 'identifier' => $merNo ])->find(); if (!$merchant) { - $this->record_logs("找不到商户!".$notify['auth_app_id']); + $this->record_logs("找不到商户!".$merNo); echo 'fail'; exit(); } @@ -543,101 +543,65 @@ class NotifyController extends BaseController public function heepay_callback() { - $result = $_GET['result']; - $pay_message = $_GET['pay_message']; - $agent_id = $_GET['agent_id']; - $jnet_bill_no = $_GET['jnet_bill_no']; - $agent_bill_id = $_GET['agent_bill_id']; - $pay_type = $_GET['pay_type']; - $pay_amt = $_GET['pay_amt']; - $remark = $_GET['remark']; - $return_sign = $_GET['sign']; - + $merchant = M('payment_merchant', 'tab_')->where([ + 'identifier' => $agent_id + ])->find(); + if (!$merchant) { + $this->record_logs("找不到商户!".$agent_id); + echo 'fail'; + exit(); + } $remark = iconv("GB2312", "UTF-8//IGNORE", urldecode($remark));//签名验证中的中文采用UTF-8编码; - $signStr = ''; - $signStr = $signStr . 'result=' . $result; - $signStr = $signStr . '&agent_id=' . $agent_id; - $signStr = $signStr . '&jnet_bill_no=' . $jnet_bill_no; - $signStr = $signStr . '&agent_bill_id=' . $agent_bill_id; - $signStr = $signStr . '&pay_type=' . $pay_type; - - $signStr = $signStr . '&pay_amt=' . $pay_amt; - $signStr = $signStr . '&remark=' . $remark; - - $signStr = $signStr . '&key=' . C('heepay.key'); //商户签名密钥 - - - $sign = ''; - + $payConf = json_decode($merchant['config'], true); + $secret = strtoupper(md5($payConf['secret']));//支付秘钥 + $signStr = $signStr . '&key=' . $secret; //商户签名密钥 $sign = strtolower(md5($signStr)); if ($sign == $return_sign) { //比较签名密钥结果是否一致,一致则保证了数据的一致性 - //商户自行处理自己的业务逻辑 - $pay_where = substr($agent_bill_id, 0, 2); - $data['trade_no'] = $_GET['jnet_bill_no']; - $data['out_trade_no'] = $_GET['agent_bill_id']; - switch ($pay_where) { - case 'SP': - $result = $this->set_spend($data); - break; - case 'PF': - $result = $this->set_deposit($data); - break; - case 'AG': - $result = $this->set_agent($data); - break; - default: - exit('accident order data'); - break; - } echo 'ok'; } else { - echo 'error'; - //商户自行处理,可通过查询接口更新订单状态,也可以通过商户后台自行补发通知,或者反馈运营人工补发 - } - } diff --git a/Application/Sdk/Controller/PayH5Controller.class.php b/Application/Sdk/Controller/PayH5Controller.class.php index 693b52bb..5a7a2bff 100644 --- a/Application/Sdk/Controller/PayH5Controller.class.php +++ b/Application/Sdk/Controller/PayH5Controller.class.php @@ -775,15 +775,15 @@ class PayH5Controller extends BaseController{ // redirect(U('Spend/notice',array('user_id'=>$user_id, 'is_platform' => 1,'game_id'=>$game_id,'msg'=>'支付失败', 'user_token' => $this->userToken)));exit; } }elseif ($pay_info['channel'] == 5) { // 汇付宝 - $request['pay_way'] = C('PAY_WAY.WFT_PAY'); // 威富通wx + $request['pay_way'] = self::WX_PAY; // 威富通wx - $pay['agent_id'] = C('heepay.partner');//商户号 + $pay['agent_id'] = $pay_info['merno'];//商户号 $pay['order_no'] = $request['pay_order_number']; $pay['time'] = date('YmdHis', time()); $pay['pay_type'] = 30; $pay['amount'] = $request['price']; $pay['user_ip'] = get_client_ip(); - $pay['sign_key'] = C('heepay.key');//密钥 + $pay['sign_key'] = $pay_info['secret'];//密钥 $pay['payerName'] = iconv("UTF-8", "gb2312//IGNORE", "万盟天下"); $pay['number'] = 1; $pay['goods_note']= "消费-".$request["pay_order_number"]; @@ -793,7 +793,10 @@ class PayH5Controller extends BaseController{ $heepay = new Heepay(); $url = $heepay->wxh5_pay($pay); $request['pay_url'] = $url;//."&tx_client=hideopen"; - + $request['merchant_id'] = $pay_info['id']; + $request['merchant_way'] = self::WX_PAY; + $request['main_id'] = $main_id; + $this->add_deposit($request, 1); }elseif(get_wx_pay_type() == 2){ @@ -1400,11 +1403,8 @@ class PayH5Controller extends BaseController{ */ public function weixin_pay($user_id,$game_id) { - /* $file=file_get_contents("./Application/Sdk/OrderNo/".$user_id."-".$game_id.".txt"); - $request = json_decode(think_decrypt($file),true); */ - + $request = $this->get_sdk_request($game_id); - // $request['pay_order_number'] = "SP_".date('Ymd').date('His').sp_random_string(4); $request['pay_status'] = 0; $request['pay_way'] = C("PAY_WAY.WEIXIN"); $request['spend_ip'] = get_client_ip(); @@ -1499,15 +1499,15 @@ class PayH5Controller extends BaseController{ // redirect(U('Spend/notice',array('user_id'=>$user_id,'game_id'=>$game_id,'msg'=>'支付失败', 'user_token' => $this->userToken)));exit; } }elseif ($pay_info['channel'] == 5) { - $request['pay_way'] = C('PAY_WAY.WFT_PAY'); // 威富通wx + $request['pay_way'] = self::WX_PAY; - $pay['agent_id'] = C('heepay.partner');//商户号 + $pay['agent_id'] = $pay_conf['merno'];//商户号 $pay['order_no'] = $request['pay_order_number']; $pay['time'] = date('YmdHis', time()); $pay['pay_type'] = 30; $pay['amount'] = $request['price']; $pay['user_ip'] = get_client_ip(); - $pay['sign_key'] = C('heepay.key');//密钥 + $pay['sign_key'] = $pay_conf['secret'];//密钥 $pay['payerName'] = iconv("UTF-8", "gb2312//IGNORE", "万盟天下"); $pay['number'] = 1; $pay['goods_note']= "消费-".$request["pay_order_number"]; @@ -1519,6 +1519,9 @@ class PayH5Controller extends BaseController{ $json_data = $heepay->wxh5_pay($pay); if($json_data['ret_code'] == "0000"){ $request['pay_url'] = $json_data['url'] . "&tx_client=hideopen"; + $request['merchant_id'] = $pay_info['id']; + $request['merchant_way'] = self::WX_PAY; + $request['main_id'] = $main_id; $this->add_spend($request,1); } else { echo json_encode(['code'=>0,'msg'=> '支付失败,请重试'.$json_data['ret_msg']]); From ad98d04edc767f178d9255f3e477f7f89d16504b Mon Sep 17 00:00:00 2001 From: tping Date: Mon, 1 Mar 2021 16:15:15 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E6=B1=87=E4=BB=98=E5=AE=9D=E6=94=AF?= =?UTF-8?q?=E4=BB=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Application/Callback/Controller/NotifyController.class.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Application/Callback/Controller/NotifyController.class.php b/Application/Callback/Controller/NotifyController.class.php index 113915a5..082b1cbb 100644 --- a/Application/Callback/Controller/NotifyController.class.php +++ b/Application/Callback/Controller/NotifyController.class.php @@ -543,6 +543,8 @@ class NotifyController extends BaseController public function heepay_callback() { + Log::write(serialize($_REQUEST), Log::DEBUG); + $result = $_GET['result']; $pay_message = $_GET['pay_message']; $agent_id = $_GET['agent_id']; @@ -573,8 +575,7 @@ class NotifyController extends BaseController $signStr = $signStr . '&remark=' . $remark; $payConf = json_decode($merchant['config'], true); - $secret = strtoupper(md5($payConf['secret']));//支付秘钥 - $signStr = $signStr . '&key=' . $secret; //商户签名密钥 + $signStr = $signStr . '&key=' . $payConf['secret']; //商户签名密钥 $sign = strtolower(md5($signStr)); if ($sign == $return_sign) { //比较签名密钥结果是否一致,一致则保证了数据的一致性 From adccc9cb7fe35fbe7574e9479a8d2cfd26b49f17 Mon Sep 17 00:00:00 2001 From: tping Date: Mon, 1 Mar 2021 16:17:31 +0800 Subject: [PATCH 3/5] 1 --- Application/Sdk/Controller/PayH5Controller.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Application/Sdk/Controller/PayH5Controller.class.php b/Application/Sdk/Controller/PayH5Controller.class.php index 5a7a2bff..c03e8ea5 100644 --- a/Application/Sdk/Controller/PayH5Controller.class.php +++ b/Application/Sdk/Controller/PayH5Controller.class.php @@ -777,13 +777,13 @@ class PayH5Controller extends BaseController{ }elseif ($pay_info['channel'] == 5) { // 汇付宝 $request['pay_way'] = self::WX_PAY; // 威富通wx - $pay['agent_id'] = $pay_info['merno'];//商户号 + $pay['agent_id'] = $pay_conf['merno'];//商户号 $pay['order_no'] = $request['pay_order_number']; $pay['time'] = date('YmdHis', time()); $pay['pay_type'] = 30; $pay['amount'] = $request['price']; $pay['user_ip'] = get_client_ip(); - $pay['sign_key'] = $pay_info['secret'];//密钥 + $pay['sign_key'] = $pay_conf['secret'];//密钥 $pay['payerName'] = iconv("UTF-8", "gb2312//IGNORE", "万盟天下"); $pay['number'] = 1; $pay['goods_note']= "消费-".$request["pay_order_number"]; From d306bd1f18e0236261dc32759da9c25bda98b1ac Mon Sep 17 00:00:00 2001 From: tping Date: Mon, 1 Mar 2021 16:22:17 +0800 Subject: [PATCH 4/5] 1 --- .../Sdk/Controller/PayH5Controller.class.php | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/Application/Sdk/Controller/PayH5Controller.class.php b/Application/Sdk/Controller/PayH5Controller.class.php index c03e8ea5..3337cfe5 100644 --- a/Application/Sdk/Controller/PayH5Controller.class.php +++ b/Application/Sdk/Controller/PayH5Controller.class.php @@ -791,13 +791,17 @@ class PayH5Controller extends BaseController{ $pay['bank_card_type'] = 0; $pay['return_url'] = C('PAY_DOMAIN')."sdk.php/Spend/paycallback/orderno/{$request['pay_order_number']}/user_token/".$this->userToken."/paytype/weixinpay/game_id/{$game_id}"; $heepay = new Heepay(); - $url = $heepay->wxh5_pay($pay); - $request['pay_url'] = $url;//."&tx_client=hideopen"; - $request['merchant_id'] = $pay_info['id']; - $request['merchant_way'] = self::WX_PAY; - $request['main_id'] = $main_id; - - $this->add_deposit($request, 1); + $json_data = $heepay->wxh5_pay($pay); + if($json_data['ret_code'] == "0000"){ + $request['pay_url'] = $json_data['url'] . "&tx_client=hideopen"; + $request['merchant_id'] = $pay_info['id']; + $request['merchant_way'] = self::WX_PAY; + $request['main_id'] = $main_id; + $this->add_deposit($request, 1); + } else { + jsonOutput(0, "支付失败"); + exit; + } }elseif(get_wx_pay_type() == 2){ if($request['code']==1){ From 7f5f113db2f4f7c7e86de4e12738a47e1260b351 Mon Sep 17 00:00:00 2001 From: tping Date: Mon, 1 Mar 2021 17:39:01 +0800 Subject: [PATCH 5/5] 1 --- Application/Sdk/Controller/PayH5Controller.class.php | 1 + 1 file changed, 1 insertion(+) diff --git a/Application/Sdk/Controller/PayH5Controller.class.php b/Application/Sdk/Controller/PayH5Controller.class.php index 3337cfe5..4a27baa2 100644 --- a/Application/Sdk/Controller/PayH5Controller.class.php +++ b/Application/Sdk/Controller/PayH5Controller.class.php @@ -789,6 +789,7 @@ class PayH5Controller extends BaseController{ $pay['goods_note']= "消费-".$request["pay_order_number"]; $pay['device'] = "wap"; $pay['bank_card_type'] = 0; + $pay['notify_url'] = C('PAY_DOMAIN')."/callback.php/Notify/heepay_callback"; $pay['return_url'] = C('PAY_DOMAIN')."sdk.php/Spend/paycallback/orderno/{$request['pay_order_number']}/user_token/".$this->userToken."/paytype/weixinpay/game_id/{$game_id}"; $heepay = new Heepay(); $json_data = $heepay->wxh5_pay($pay);