|
@@ -5,49 +5,71 @@ require_once(BASE_HELPER_PATH . '/rbridge/wsd/config.php');
|
|
|
require_once(BASE_HELPER_PATH . '/refill/RefillFactory.php');
|
|
|
|
|
|
use rbridge\IBridge;
|
|
|
+use rbridge\wsd\config;
|
|
|
use refill\RefillFactory;
|
|
|
use refill_proxy;
|
|
|
use Log;
|
|
|
use member_info;
|
|
|
use Exception;
|
|
|
-use rbridge\wsd\config;
|
|
|
|
|
|
class Bridge implements IBridge
|
|
|
{
|
|
|
public function add($params)
|
|
|
{
|
|
|
- if($this->verify($params) === false) {
|
|
|
- return [false,"签名不成功"];
|
|
|
+ if ($this->verify($params) === false) {
|
|
|
+ return json_encode($this->errbody("签名不成功",$params));
|
|
|
}
|
|
|
|
|
|
$action = $params['action'];
|
|
|
$chargeType = intval($params['chargeType']);
|
|
|
|
|
|
- if($action != 'CZ') {
|
|
|
- return [false,"不支持该业务"];
|
|
|
+ if ($action != 'CZ') {
|
|
|
+ return json_encode($this->errbody("不支持该业务",$params));
|
|
|
}
|
|
|
|
|
|
//业务类型
|
|
|
//0:话费 1:Q币 2:QQ会员 3:游戏
|
|
|
//4:水电气 5:流量 6:票务 7:固话 8:宽带 9:油卡
|
|
|
- if($chargeType !== 0 && $chargeType !== 9) {
|
|
|
- return false;
|
|
|
+ if ($chargeType !== 0 && $chargeType !== 9) {
|
|
|
+ return json_encode($this->errbody("不支持该类型业务",$params));
|
|
|
+
|
|
|
}
|
|
|
|
|
|
$mchid = config::MCHID;
|
|
|
- Model('merchant_query')->add_info(config::MCHID,$params['chargeId'],json_encode($params));
|
|
|
+ Model('merchant_query')->add_info(config::MCHID, $params['chargeId'], json_encode($params));
|
|
|
$mchinfo = Model('merchant')->getMerchantInfo(['mchid' => $mchid]);
|
|
|
$userid = intval($mchinfo['admin_id']);
|
|
|
- [$code,$msg] = RefillFactory::instance()->add($mchid,$userid,$params['chargeCash'],$params['chargeAcct'],$params['chargeId'],config::MCH_NOTIFY_URL);
|
|
|
+ [$code, $msg] = RefillFactory::instance()->add($mchid, $userid, $params['chargeCash'], $params['chargeAcct'], $params['chargeId'], config::MCH_NOTIFY_URL);
|
|
|
|
|
|
- $ret = $this->retbody($code,$msg,$params);
|
|
|
+ $ret = $this->retbody($code, $msg, $params);
|
|
|
return json_encode($ret);
|
|
|
}
|
|
|
|
|
|
- private function retbody($code,$msg,$params)
|
|
|
+ private function errbody($msg,$params)
|
|
|
{
|
|
|
//交易结果 0:未处理 1:充值成功 2:充值结果不确定 3:充值失败
|
|
|
- if($code === true) {
|
|
|
+ $retCode = 3;
|
|
|
+ $retDetail = $msg;
|
|
|
+
|
|
|
+ $result = [
|
|
|
+ 'action' => 'CZ',
|
|
|
+ 'chargeId' => $params['chargeId'],
|
|
|
+ 'retCode' => $retCode,
|
|
|
+ 'retDetail' => $retDetail,
|
|
|
+ 'retRsn' => $params['retRsn']];
|
|
|
+
|
|
|
+ $body = "{$params['chargeId']}{$retCode}{$params['retRsn']}" . config::BridgeKey;
|
|
|
+ $sign = md5($body);
|
|
|
+ $result['sign'] = $sign;
|
|
|
+
|
|
|
+ return $result;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private function retbody($code, $msg, $params)
|
|
|
+ {
|
|
|
+ //交易结果 0:未处理 1:充值成功 2:充值结果不确定 3:充值失败
|
|
|
+ if ($code === true) {
|
|
|
$retCode = 0;
|
|
|
$retDetail = '定单已接收';
|
|
|
} else {
|
|
@@ -58,9 +80,9 @@ class Bridge implements IBridge
|
|
|
$result = [
|
|
|
'action' => 'CZ',
|
|
|
'chargeId' => $params['chargeId'],
|
|
|
- 'retCode' => $retCode,
|
|
|
+ 'retCode' => $retCode,
|
|
|
'retDetail' => $retDetail,
|
|
|
- 'retRsn' => $params['retRsn'] ];
|
|
|
+ 'retRsn' => $params['retRsn']];
|
|
|
|
|
|
$body = "{$params['chargeId']}{$retCode}{$params['retRsn']}" . config::BridgeKey;
|
|
|
$sign = md5($body);
|
|
@@ -72,30 +94,27 @@ class Bridge implements IBridge
|
|
|
public function notify($params)
|
|
|
{
|
|
|
$proxy = new refill_proxy(config::MCH_KEY);
|
|
|
- [$verify,$data] = $proxy->notify($params);
|
|
|
+ [$verify, $data] = $proxy->notify($params);
|
|
|
$mchid = config::MCHID;
|
|
|
|
|
|
- if($verify)
|
|
|
- {
|
|
|
+ if ($verify) {
|
|
|
$body = $this->notify_body($data);
|
|
|
- if($body === false) {
|
|
|
+ if ($body === false) {
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
$header = ['Content-Type: application/json'];
|
|
|
- $resp = http_post_data(config::BridgeNotifyURL,$body,$header);
|
|
|
+ $resp = http_post_data(config::BridgeNotifyURL, $body, $header);
|
|
|
|
|
|
- if($resp === false) {
|
|
|
+ if ($resp === false) {
|
|
|
$url = config::BridgeNotifyURL;
|
|
|
- Log::record("通知mchid = {$mchid} {$url}失败",Log::ERR);
|
|
|
+ Log::record("通知mchid = {$mchid} {$url}失败", Log::ERR);
|
|
|
return false;
|
|
|
- }
|
|
|
- else {
|
|
|
+ } else {
|
|
|
return true;
|
|
|
}
|
|
|
- }
|
|
|
- else {
|
|
|
- Log::record("内部回调签名错误 mchid = {$mchid}",Log::ERR);
|
|
|
+ } else {
|
|
|
+ Log::record("内部回调签名错误 mchid = {$mchid}", Log::ERR);
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
@@ -104,14 +123,13 @@ class Bridge implements IBridge
|
|
|
private function notify_body($params)
|
|
|
{
|
|
|
$mch_ordersn = $params['order_sn'];
|
|
|
- $query_info = Model('merchant_query')->query_info(config::MCHID,$mch_ordersn);
|
|
|
- if(empty($query_info)) {
|
|
|
+ $query_info = Model('merchant_query')->query_info(config::MCHID, $mch_ordersn);
|
|
|
+ if (empty($query_info)) {
|
|
|
$mchid = config::MCHID;
|
|
|
- Log::record("查不到mchid={$mchid},mch_order:{$mch_ordersn}的原始订单信息",Log::ERR);
|
|
|
+ Log::record("查不到mchid={$mchid},mch_order:{$mch_ordersn}的原始订单信息", Log::ERR);
|
|
|
return false;
|
|
|
- }
|
|
|
- else {
|
|
|
- $query_info = json_decode($query_info['request'],true);
|
|
|
+ } else {
|
|
|
+ $query_info = json_decode($query_info['request'], true);
|
|
|
}
|
|
|
|
|
|
$success = $params['state'] == 'SUCCESS';
|
|
@@ -124,9 +142,9 @@ class Bridge implements IBridge
|
|
|
"retDetail" => $retCode == 1 ? "充值成功" : "充值失败",
|
|
|
"retRsn" => $query_info['retRsn'],
|
|
|
"userContent" => "",
|
|
|
- "retCost" => number_format($this->getCost(config::MCHID,$mch_ordersn),3),
|
|
|
- "retBalance" => number_format($this->getBalance(config::MCHID),3),
|
|
|
- "retCash" => number_format($query_info['chargeCash'],3)
|
|
|
+ "retCost" => number_format($this->getCost(config::MCHID, $mch_ordersn), 3),
|
|
|
+ "retBalance" => number_format($this->getBalance(config::MCHID), 3),
|
|
|
+ "retCash" => number_format($query_info['chargeCash'], 3)
|
|
|
];
|
|
|
$sign = md5("{$body['chargeId']}{$body['retCode']}{$body['retRsn']}" . config::BridgeKey);
|
|
|
$body['sign'] = $sign;
|
|
@@ -140,22 +158,21 @@ class Bridge implements IBridge
|
|
|
$mchinfo = Model('merchant')->getMerchantInfo(['mchid' => $mchid]);
|
|
|
$userid = intval($mchinfo['admin_id']);
|
|
|
$info = new member_info($userid);
|
|
|
- return round($info->available_predeposit(),3);
|
|
|
- }
|
|
|
- catch(Exception $ex) {
|
|
|
- Log::record("Bridge getBalance mchid={$mchid} what : {$ex->getMessage()}",Log::ERR);
|
|
|
+ return round($info->available_predeposit(), 3);
|
|
|
+ } catch (Exception $ex) {
|
|
|
+ Log::record("Bridge getBalance mchid={$mchid} what : {$ex->getMessage()}", Log::ERR);
|
|
|
return 0.000;
|
|
|
}
|
|
|
}
|
|
|
- private function getCost($mchid,$mch_ordersn)
|
|
|
+
|
|
|
+ private function getCost($mchid, $mch_ordersn)
|
|
|
{
|
|
|
$refill_order = Model('refill_order');
|
|
|
- $items = $refill_order->getOrderInfo(['mchid' => $mchid,'mch_order' => $mch_ordersn,'inner_status' => 0]);
|
|
|
- if(!empty($items)) {
|
|
|
+ $items = $refill_order->getOrderInfo(['mchid' => $mchid, 'mch_order' => $mch_ordersn, 'inner_status' => 0]);
|
|
|
+ if (!empty($items)) {
|
|
|
$order = $items[0];
|
|
|
return $order['mch_amount'];
|
|
|
- }
|
|
|
- else {
|
|
|
+ } else {
|
|
|
return 0;
|
|
|
}
|
|
|
}
|
|
@@ -163,7 +180,7 @@ class Bridge implements IBridge
|
|
|
private function verify($params)
|
|
|
{
|
|
|
//md5(chargeId + chargeAcct + var1 + var2 + var3 + var4 + chargeCash + md5key)
|
|
|
- $keys = ['chargeId','chargeAcct','var1','var2','var3','var4','chargeCash'];
|
|
|
+ $keys = ['chargeId', 'chargeAcct', 'var1', 'var2', 'var3', 'var4', 'chargeCash'];
|
|
|
$body = "";
|
|
|
foreach ($keys as $key) {
|
|
|
$body .= $params[$key] ?? "";
|