frontend\controllers\PaymentController::actionAlipayOrderNotify PHP 메소드

actionAlipayOrderNotify() 공개 메소드

    public function actionAlipayOrderNotify()
    {
        Yii::$app->response->format = Response::FORMAT_RAW;
        require_once Yii::getAlias('@vendor') . "/payment/alipay/alipay.config.php";
        require_once Yii::getAlias('@vendor') . "/payment/alipay/lib/alipay_notify.class.php";
        $alipayNotify = new \AlipayNotify($alipay_config);
        $verify_result = $alipayNotify->verifyNotify();
        if ($verify_result) {
            $out_trade_no = $_POST['out_trade_no'];
            $trade_no = $_POST['trade_no'];
            $trade_status = $_POST['trade_status'];
            $model = Order::findOne(['order_sn' => $out_trade_no, 'status' => [Order::STATUS_UNPAID, Order::STATUS_CANCELLED]]);
            if ($model) {
                if ($trade_status === 'TRADE_SUCCESS' || $trade_status === 'TRADE_FINISHED') {
                    if ($model->pay()) {
                        $this->_sendMsg($model);
                        Yii::info("订单支付成功!订单号:{$out_trade_no}");
                    } else {
                        Yii::error("订单支付失败!订单号:{$out_trade_no}");
                        return 'fail';
                    }
                }
            }
        } else {
            return 'fail';
        }
        return 'success';
    }