Esempio n. 1
0
 protected function _paySuccess($pay_id, $money, $alipay_trade_no)
 {
     // 验证是否重复操作
     $payRow = M('loan_pay_alipay')->find($pay_id);
     if (!$payRow) {
         return '此交易记录不存在!';
     }
     if ($payRow['is_action'] > 0) {
         return true;
     }
     if (bccomp($money, $payRow['money'], 2) != 0) {
         return '支付金额与记录不符!';
     }
     if (!M('loan_pay_alipay')->where(['id' => $pay_id, 'is_action' => $payRow['is_action']])->setField('is_action', 1)) {
         return true;
     }
     $orderModel = new \Loan\Model\OrderModel();
     $billModel = new \Loan\Model\BillModel();
     $order_id = $payRow['order_id'];
     $month = $payRow['month'];
     $issue = $payRow['issue'];
     $money = $payRow['money'];
     $order = $orderModel->field('status')->where(['id' => $order_id])->field('status')->find();
     if (!$order) {
         return '订单信息不存在!';
     }
     if ($month == 1) {
         if ($issue == 0) {
             // 正常支付首付
             if ($order['status'] == $orderModel::STATUS_CHECK_SUCCESS) {
                 return true;
             }
             if ($orderModel->firstPay($order_id, 1, $alipay_trade_no)) {
                 return true;
             } else {
                 return $orderModel->getError();
             }
         } else {
             // 正常支付指定账单
             $bill = M('loan_bill')->field('issue,money_total,status')->where(['order_id' => $order_id, 'issue' => $issue])->find();
             if (!$bill) {
                 return '找不到此账单信息!';
             }
             // 判断是否已经支付
             if ($bill['status'] == 2) {
                 return true;
             }
             if ($billModel->repay($order_id, $issue, $money, 1, $alipay_trade_no)) {
                 return true;
             } else {
                 return $billModel->getError();
             }
         }
     } elseif ($month < 0) {
         return '未知month参数:' . $month;
     } else {
         if (!$billModel->repayAll($order_id, $month, $money, 1, $alipay_trade_no)) {
             return $billModel->getError();
         }
     }
     return true;
 }