Esempio n. 1
0
 public function notifyAction()
 {
     $pay = new Pay($this->alipayConfig);
     $checkResult = $pay->notifyVerify();
     $echoResult = function ($success, $msg = 'OK') {
         $result = $success ? 'success' : 'fail';
         echo $result;
     };
     if (is_int($checkResult)) {
         // 错误处理,
         // 100-xml解析异常,101-签名验证失败,102-返回状态码错误,103-业务结果异常
         switch ($checkResult) {
             case PayState::REQUEST_TYPE_ERROR:
                 $echoResult(false, 'not post request');
                 break;
             case PayState::ASYNC_FAIL_SIGN:
                 $echoResult(false, 'sign verify error');
                 break;
             case PayState::REQUEST_ERROR:
                 $echoResult(false);
                 break;
         }
         $this->savePayLog(0, 0, PayType::ALIPAY, $checkResult, $_POST);
         return;
     }
     $transactionId = $_POST['trade_no'];
     $outTradeNo = $_POST['out_trade_no'];
     // 拆分订单号
     $outTradeNoArr = explode('-', $outTradeNo);
     $outTradeNo = $outTradeNoArr[0];
     $totalFee = intval(floatval($_POST['total_fee']) * 100);
     if (!in_array($_POST['trade_status'], ['TRADE_FINISHED', 'TRADE_SUCCESS'])) {
         $this->savePayLog($outTradeNo, $transactionId, PayType::ALIPAY, PayState::NOT_HANDLE, $_POST);
         $echoResult(true);
         return;
     }
     $this->payHandle($echoResult, PayType::ALIPAY, $transactionId, $outTradeNo, $totalFee, $_POST);
 }