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';
}