|
@@ -26,12 +26,12 @@ class pay_helper
|
|
|
const real_order = 2;
|
|
|
|
|
|
private $mOrderType;
|
|
|
- private $logic_payment;
|
|
|
+ private $mPaymentLogic;
|
|
|
private $mPaysn;
|
|
|
|
|
|
public function __construct($paysn)
|
|
|
{
|
|
|
- $this->logic_payment = Logic('payment');
|
|
|
+ $this->mPaymentLogic = Logic('payment');
|
|
|
$order_pay_info = Model('order')->getOrderPayInfo(array('pay_sn' => $paysn),true);
|
|
|
if (empty($order_pay_info)) {
|
|
|
$this->mOrderType = pay_helper::virtual_order;
|
|
@@ -45,7 +45,7 @@ class pay_helper
|
|
|
{
|
|
|
$pay_sn = $this->mPaysn;
|
|
|
$member_info = array('member_id' => session_helper::memberid(), 'member_name' => session_helper::nickname());
|
|
|
- $this->logic_payment->payPredepositEx($pay_sn,$member_info);
|
|
|
+ $this->mPaymentLogic->payPredepositEx($pay_sn,$member_info);
|
|
|
}
|
|
|
|
|
|
public function pay($payment,$usebonus,&$err)
|
|
@@ -64,8 +64,7 @@ class pay_helper
|
|
|
$this->pay_bonus();
|
|
|
}
|
|
|
|
|
|
- $logic_payment = Logic('payment');
|
|
|
- $payinfo = $logic_payment->getRealOrderInfo($pay_sn, $_SESSION['member_id'],true);
|
|
|
+ $payinfo = $this->mPaymentLogic->getRealOrderInfo($pay_sn, $_SESSION['member_id'],true);
|
|
|
if (intval($payinfo['data']['api_pay_state']) != 0) {
|
|
|
$err = array('code' => errcode::ErrPayment, 'msg' => $payinfo['msg']);
|
|
|
return false;
|
|
@@ -76,8 +75,9 @@ class pay_helper
|
|
|
{
|
|
|
$output['need_pay'] = false;
|
|
|
$output['tips'] = "已经用红包支付完成";
|
|
|
+ $output['is_virtual'] = false;
|
|
|
|
|
|
- $payinfo = self::update_order($pay_sn, $pay_sn, 'bonus'); // 更新订单
|
|
|
+ $payinfo = $this->update_order($pay_sn, 'bonus'); // 更新订单
|
|
|
if (isset($payinfo) && $payinfo['state'])
|
|
|
{
|
|
|
if(is_pushoms())
|
|
@@ -100,9 +100,7 @@ class pay_helper
|
|
|
private function virtual_pay($payment,$usebonus,&$err)
|
|
|
{
|
|
|
$order_sn = $this->mPaysn;
|
|
|
-
|
|
|
- $logic_payment = Logic('payment');
|
|
|
- $payinfo = $logic_payment->getVrOrderInfo($order_sn, $_SESSION['member_id'],true);
|
|
|
+ $payinfo = $this->mPaymentLogic->getVrOrderInfo($order_sn, null,true);
|
|
|
|
|
|
if(!$payinfo['state']) goto onerror;
|
|
|
if ($payinfo['data']['order_state'] != ORDER_STATE_NEW || empty($payinfo['data']['api_pay_amount'])) goto onerror;
|
|
@@ -111,19 +109,11 @@ class pay_helper
|
|
|
if($left_cents == 0)
|
|
|
{
|
|
|
$output['need_pay'] = false;
|
|
|
- $output['tips'] = "已经用红包支付完成";
|
|
|
+ $output['tips'] = "支付完成";
|
|
|
+ $output['is_virtual'] = true;
|
|
|
|
|
|
- $payinfo = self::update_order($order_sn, $pay_sn, 'bonus'); // 更新订单
|
|
|
- if (isset($payinfo) && $payinfo['state'])
|
|
|
- {
|
|
|
- if(is_pushoms())
|
|
|
- {
|
|
|
- $logic_delivery = Logic('delivery');
|
|
|
- $ret = $logic_delivery->putOrder($pay_sn, $pay_sn);
|
|
|
- if(empty($ret)) { //todo must add to 定时任务
|
|
|
- Log::record("Put order to oms error: pay_sn={$pay_sn},bonus pay.",Log::ERR);
|
|
|
- }
|
|
|
- }
|
|
|
+ $payinfo = $this->update_order($order_sn, 'bonus'); // 更新订单
|
|
|
+ if ($payinfo['state']) {
|
|
|
$this->OnSuccess();
|
|
|
}
|
|
|
return $output;
|
|
@@ -132,7 +122,6 @@ class pay_helper
|
|
|
return $this->third_pay($payment,$payinfo,$left_cents,$err);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
onerror:
|
|
|
$err = array('code' => errcode::ErrPayment, 'msg' => $payinfo['msg']);
|
|
|
return false;
|
|
@@ -183,38 +172,69 @@ class pay_helper
|
|
|
public function confirm(&$err,&$amount,&$fcode_state)
|
|
|
{
|
|
|
$pay_sn = $this->mPaysn;
|
|
|
- $logic_payment = Logic('payment');
|
|
|
- $result = $logic_payment->getRealOrderInfo($pay_sn,null,true);
|
|
|
- if(empty($result)) {
|
|
|
- $err = ['code'=> errcode::ErrOrder,'msg' => '无此订单.'];
|
|
|
- return false;
|
|
|
- }
|
|
|
- $amount = $result['data']['api_pay_amount'];
|
|
|
- $fcode_state = intval($result['data']['fcode_state']);
|
|
|
|
|
|
- if (intval($result['data']['api_pay_state']) == 0) {
|
|
|
- $err = ['code'=> errcode::ErrOrder,'msg' => '此订单未完成支付.'];
|
|
|
- return false;
|
|
|
+ if($this->mOrderType == pay_helper::real_order)
|
|
|
+ {
|
|
|
+ $result = $this->mPaymentLogic->getRealOrderInfo($pay_sn,null,true);
|
|
|
+ if(empty($result)) {
|
|
|
+ $err = ['code'=> errcode::ErrOrder,'msg' => '无此订单.'];
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ $amount = $result['data']['api_pay_amount'];
|
|
|
+ $fcode_state = intval($result['data']['fcode_state']);
|
|
|
+
|
|
|
+ if (intval($result['data']['api_pay_state']) == 0) {
|
|
|
+ $err = ['code'=> errcode::ErrOrder,'msg' => '此订单未完成支付.'];
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
}
|
|
|
- else {
|
|
|
- return true;
|
|
|
+ else
|
|
|
+ {
|
|
|
+ $result = $this->mPaymentLogic->getVrOrderInfo($pay_sn, null,true);
|
|
|
+ if(!$result['state']) {
|
|
|
+ $err = ['code'=> errcode::ErrOrder,'msg' => '无此订单.'];
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if ($result['data']['order_state'] != ORDER_STATE_NEW) {
|
|
|
+ $fcode_state = 1;
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ $err = ['code'=> errcode::ErrOrder,'msg' => '订单未完成支付.'];
|
|
|
+ return false;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public function check_fee($total_fee,&$need_pay)
|
|
|
{
|
|
|
$pay_sn = $this->mPaysn;
|
|
|
- $logic_payment = Logic('payment');
|
|
|
- $result = $logic_payment->getRealOrderInfo($pay_sn,null,true);
|
|
|
|
|
|
- if (intval($result['data']['api_pay_state']) != 0) {
|
|
|
- return false;
|
|
|
+ if($this->mOrderType == pay_helper::real_order)
|
|
|
+ {
|
|
|
+ $result = $this->mPaymentLogic->getRealOrderInfo($pay_sn,null,true);
|
|
|
+
|
|
|
+ if (intval($result['data']['api_pay_state']) != 0) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ $need_pay = intval($result['data']['api_pay_amount'] * 100 + 0.5);
|
|
|
+ $total_fee = intval($total_fee * 100 + 0.5);
|
|
|
+
|
|
|
+ return ($need_pay === $total_fee);
|
|
|
}
|
|
|
+ else
|
|
|
+ {
|
|
|
+ $result = $this->mPaymentLogic->getVrOrderInfo($pay_sn);
|
|
|
+ if(!$result['state']) return false;
|
|
|
|
|
|
- $need_pay = intval($result['data']['api_pay_amount'] * 100 + 0.5);
|
|
|
- $total_fee = intval($total_fee * 100 + 0.5);
|
|
|
+ $need_pay = intval($result['data']['api_pay_amount'] * 100 + 0.5);
|
|
|
+ $total_fee = intval($total_fee * 100 + 0.5);
|
|
|
|
|
|
- return ($need_pay === $total_fee);
|
|
|
+ return ($need_pay === $total_fee);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
public function paied()
|
|
@@ -222,13 +242,18 @@ class pay_helper
|
|
|
$pay_sn = $this->mPaysn;
|
|
|
if($this->mOrderType == self::real_order)
|
|
|
{
|
|
|
- $result = $this->logic_payment->getRealOrderInfo($pay_sn,null,true);
|
|
|
+ $result = $this->mPaymentLogic->getRealOrderInfo($pay_sn,null,true);
|
|
|
if (intval($result['data']['api_pay_state']) != 0) {
|
|
|
return true;
|
|
|
}
|
|
|
}
|
|
|
- else {
|
|
|
-
|
|
|
+ else
|
|
|
+ {
|
|
|
+ $result = $this->mPaymentLogic->getVrOrderInfo($pay_sn);
|
|
|
+ if(!$result['state']) return false;
|
|
|
+ if ($result['data']['order_state'] != ORDER_STATE_NEW) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
return false;
|
|
@@ -239,8 +264,7 @@ class pay_helper
|
|
|
$pay_sn = $this->mPaysn;
|
|
|
if ($this->mOrderType == self::real_order)
|
|
|
{
|
|
|
- $logic_payment = Logic('payment');
|
|
|
- $result = $logic_payment->getRealOrderInfo($pay_sn,null,true);
|
|
|
+ $result = $this->mPaymentLogic->getRealOrderInfo($pay_sn,null,true);
|
|
|
|
|
|
if($result['state'] != true) {
|
|
|
return false;
|
|
@@ -249,8 +273,15 @@ class pay_helper
|
|
|
return true;
|
|
|
}
|
|
|
}
|
|
|
- else {
|
|
|
-
|
|
|
+ else
|
|
|
+ {
|
|
|
+ $result = $this->mPaymentLogic->getVrOrderInfo($pay_sn,null,true);
|
|
|
+ if($result['state'] != true) {
|
|
|
+ return false;
|
|
|
+ } else {
|
|
|
+ QueueClient::push('onAsyncOrderPaied',['pay_sn' => $pay_sn]);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -259,20 +290,25 @@ class pay_helper
|
|
|
$paysn = $this->mPaysn;
|
|
|
if ($this->mOrderType == self::real_order)
|
|
|
{
|
|
|
- $result = $this->logic_payment->getRealOrderInfo($paysn,null,true);
|
|
|
+ $result = $this->mPaymentLogic->getRealOrderInfo($paysn,null,true);
|
|
|
if (intval($result['data']['api_pay_state'])) {
|
|
|
return ['state' => true];
|
|
|
}
|
|
|
$order_list = $result['data']['order_list'];
|
|
|
- $result = $this->logic_payment->updateRealOrder($paysn, $payment, $order_list, $trade_no);
|
|
|
+ $result = $this->mPaymentLogic->updateRealOrder($paysn, $payment, $order_list, $trade_no);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- $result = $this->logic_payment->getVrOrderInfo($paysn);
|
|
|
+ $result = $this->mPaymentLogic->getVrOrderInfo($paysn);
|
|
|
+ if(!$result['state']) {
|
|
|
+ return ['state' => false];
|
|
|
+ }
|
|
|
+
|
|
|
if ($result['data']['order_state'] != ORDER_STATE_NEW) {
|
|
|
return ['state' => true];
|
|
|
}
|
|
|
- $result = $this->logic_payment->updateVrOrder($paysn, $payment, $result['data'], $trade_no);
|
|
|
+
|
|
|
+ $result = $this->mPaymentLogic->updateVrOrder($paysn, $payment, $result['data'], $trade_no);
|
|
|
}
|
|
|
|
|
|
return $result;
|