public function actionIndex() { U::W([__METHOD__, $_GET, $_POST]); $this->layout = false; $alipay_config = Alipay::getAlipayConfig(); $alipayNotify = new AlipayNotify($alipay_config); $verify_result = $alipayNotify->verifyNotify(); if (!$verify_result) { Alipay::logResult(['Alipaynotify sign error', __METHOD__, $_GET, $_POST]); return "fail"; } if ($alipay_config['sign_type'] == 'MD5') { $respObject = @simplexml_load_string($_POST['notify_data']); } else { if ($alipay_config['sign_type'] == '0001') { $respObject = @simplexml_load_string($alipayNotify->decrypt($_POST['notify_data'])); } else { Alipay::logResult(['Alipaynotify sign_type error', __METHOD__, $_GET, $_POST]); } } $arr = json_decode(json_encode($respObject), true); U::W($arr); $oid = $arr['out_trade_no']; $model = MOrder::findOne($oid); if ($model === null) { U::W(['Invalid oid', $_GET, $_POST, $arr]); return "success"; } $model->pay_kind = MOrder::PAY_KIND_ALIWAP; $model->aliwap_trade_no = $arr['trade_no']; $model->aliwap_total_fee = $arr['total_fee']; $model->aliwap_trade_status = $arr['trade_status']; $model->aliwap_buyer_email = $arr['buyer_email']; $model->aliwap_quantity = $arr['quantity']; $model->aliwap_gmt_payment = $arr['gmt_payment']; if ($arr['trade_status'] == 'TRADE_FINISHED' || $arr['trade_status'] == 'TRADE_SUCCESS') { $model->status = MOrder::STATUS_SUCCEEDED; } else { U::W(['trade_status is not TRADE_FINISHED', $_GET, $_POST, $arr]); } if (!$model->save(false)) { U::W(['save db error', $_GET, $_POST, $arr, $model->getErrors()]); } return "success"; }