/** * 发货 * */ public function send_goods() { if ($this->isAjax()) { $id = intval($_REQUEST['id']); $record = M('payment')->where("id='{$id}'")->find(); if ($record['status'] == 104 || $record['status'] == 105) { $this->ajaxReturn('', '该交易已发货或已完成', 0); } import('@.Com.payment.PaymentFactory'); $payment = PaymentFactory::getPayment('AlipayWarrant'); $response = $payment->send_goods(array('trade_no' => $record['trade_no'])); if ($response) { M('payment')->where("id='{$id}'")->save(array('status' => 105)); $this->ajaxReturn('', '操作成功', 1); } else { $this->ajaxReturn('', '操作失败', 0); } } }
private function _pay_notify_alipay_warrant() { import('@.Com.payment.PaymentFactory'); $payment = PaymentFactory::getPayment('AlipayWarrant'); $result = $payment->verifyNotify(); if ($result !== false) { $result['trade_status'] = trim($result['trade_status']); if ($result['trade_status'] == 'WAIT_BUYER_PAY' || $result['trade_status'] == 'WAIT_SELLER_SEND_GOODS' || $result['trade_status'] == 'WAIT_BUYER_CONFIRM_GOODS' || $result['trade_status'] == 'TRADE_FINISHED') { $record = M('payment')->where("out_trade_no='{$result['out_trade_no']}'")->find(); if ($record['status'] == 104) { exit('success'); } if ($record && $record['amount'] == $result['total_fee']) { $status = 102; //等待买家付款 if ($result['trade_status'] == 'WAIT_BUYER_PAY') { $status = 103; } else { if ($result['trade_status'] == 'WAIT_SELLER_SEND_GOODS') { //自动发货 $response = $payment->send_goods(array('trade_no' => $result['trade_no'])); if ($response) { $status = 105; } else { $status = 102; } } else { if ($result['trade_status'] == 'WAIT_BUYER_CONFIRM_GOODS') { $status = 105; } else { if ($result['trade_status'] == 'TRADE_FINISHED') { if ($record && $record['amount'] == $result['total_fee']) { //记录日志 Consume::increase($record['user_id'], $result['total_fee'], Consume::TYPE_MONEY); $status = 104; } else { $status = $record['status']; } } } } } M('payment')->where("out_trade_no='{$result['out_trade_no']}'")->save(array('status' => $status, 'trade_no' => $result['trade_no'])); exit('success'); } else { exit('fail'); } } else { exit('fail'); } } else { exit('fail'); } }