/** * 支付完成后,外部网关的通知地址,在此会进行订单状态的改变,这里严格验证,改变订单状态 * * @author Garbin * @return void */ function actionNotify() { //这里是支付宝,财付通等当订单状态改变时的通知地址 $order_id = 0; if (isset($_POST['order_id'])) { $order_id = intval($_POST['order_id']); } else { $order_id = intval($_GET['order_id']); } if (!$order_id) { /* 无效的通知请求 */ $this->show_warning('no_such_order'); Yii::app()->end(); } /* 获取订单信息 */ //$order_info = JpOrder::model()->findByPk($order_id); // $order_info = JporderService::getOrder($order_id); $order_info = OrderService::getOrder($order_id); if (empty($order_info)) { /* 没有该订单 */ $this->show_warning('no_such_order'); Yii::app()->end(); } /* 获取支付方式 */ $paymentMethod = $order_info['Payment']; if ($paymentMethod != '1') { /* 支付方式方式错误 */ $this->show_warning('no_alipay_payment'); Yii::app()->end(); } $payment = Yii::app()->alipay; /* ----------通知验证开始---------- */ $notify_result = $payment->verify_notify($order_info, true); if ($notify_result === false) { /* 支付失败 */ $payment->verify_result(false); /* 记录错误日志 */ //$payment->put_log(false,'notify'); Yii::app()->end(); } /* ----------通知验证结束---------- */ //改变订单状态 $this->_change_order_status($order_id, $notify_result); $payment->verify_result(true); /* 记录成功日志 */ //$payment->put_log(true,'notify'); // if ($notify_result['target'] == ORDER_ACCEPTED) // { // /* 发送邮件给卖家,提醒付款成功 */ // $model_member =& m('member'); // $seller_info = $model_member->get($order_info['seller_id']); // $mail = get_mail('toseller_online_pay_success_notify', array('order' => $order_info)); // $this->_mailto($seller_info['email'], addslashes($mail['subject']), addslashes($mail['message'])); // /* 同步发送 */ // $this->_sendmail(true); // } }
/** * Get a Worldpay order * @param string $orderCode * @return array Worldpay order response * */ public function getOrder($orderCode = false) { if (empty($orderCode) || !is_string($orderCode)) { Error::throwError('ip', Error::$errors['orderInput']['orderCode']); } $response = OrderService::getOrder($orderCode); if (!isset($response["orderCode"])) { Error::throwError("apierror"); } return $response; }