pay_order($userId, $payAmt, $userPhone, $userEmail, $userName, $GiftsID, $buyIP, $AdId, $eventType); } catch (\Exception $exception) { Redis::set("PayErro_Crypto",1); Redis::expire("PayErro_Crypto",600); Util::WriteLog('Crypto_error', $exception->getMessage().json_encode($logic->result)); TelegramBot::getDefault()->sendMsgWithEnv("Crypto Except ".$exception->getMessage().$exception->getTraceAsString() ); return apiReturnFail($logic->getError()); } if (!empty($res)) { TelegramBot::getDefault()->sendMsg(json_encode($res)); $data = [ 'content' => urldecode($res['redirectURL']), 'money' => $payAmt, 'prdOrdNo' => $res['mchOrderNo'], 'redirectURL' => urldecode($res['redirectURL']), ]; return apiReturnSuc($data); // header("Location: {$res['url']}"); } else if($res==false) { return apiReturnFail($logic->getError()); }else{ if($this->retryTimes>0 || true) { Redis::set("PayErro_Crypto",1); Redis::expire("PayErro_Crypto",600); TelegramBot::getDefault()->sendProgramNotify("Crypto RetrunFail ", $logic->getError()." | ".json_encode($res)); return apiReturnFail($logic->getError()); }else{ $this->retryTimes++; return $this->pay_order($userId, $payAmt, $userName, $userEmail, $userPhone, $GiftsID, $buyIP, $AdId, $eventType); } } } // 支付异步回调 public function notify(Request $request) { $post = $request->all(); if (!is_array($post)) { $post = \GuzzleHttp\json_decode($post, true); } Util::WriteLog('Crypto', $post); $post = @$post['data']; $order_sn = @$post['externalOrderId']; $logic = new CryptoLogic(); try { $redis = Redis::connection(); $ret= $logic->notify($post); if($ret=='SUCCESS')$redis->set($order_sn, $order_sn, 3600 * 24); return $ret; }catch (\Exception $exception){ Redis::set("PayErro_Crypto",1); Redis::expire("PayErro_Crypto",600); TelegramBot::getDefault()->sendProgramNotify("Crypto 订单回调执行 异常 ", json_encode($post),$exception); Util::WriteLog("Crypto_error",$post); return 'fail'; } } public function sync_notify(Request $request) { Log::info('同步回调'); echo '同步回调'; } // 提现异步回调 public function cash_notify(Request $request) { $headers = [ "X-Account" => $request->header("X-Account"), "X-Signature" => $request->header("X-Signature"), ]; $payload = file_get_contents('php://input'); $service = new SitoBank(); $verify = $service->verify($payload, $headers['X-Signature']); $post = json_decode($payload, true); Util::WriteLog('SitoBank', "SitoBank cash 异步回调\n".json_encode(compact("payload", "headers", 'verify'))); if ($headers['X-Account']==$service->config['merchantCode']) { //稍后处理verify }else if(!$verify){ Util::WriteLog('SitoBank cash','签名错误'); return 'fail'; } $logic = new SitoBankCashierLogic(); try { return $logic->notify($post); }catch (\Exception $exception){ TelegramBot::getDefault()->sendProgramNotify("SitoBank 提现异步回调执行 异常 ", json_encode($post),$exception); Util::WriteLog("SitoBank_error",$post); return '{"success":false,"message":"商户自定义出错信息"}'; } } }