$data['partner_id'], 'OrderId' => $data['orderSn'], 'Money' => $data['money'], 'notifyUrl' => $data['notify_url'] ]; $md5Sign = md5("CustomerId={$data['partner_id']}&key={$this->publicKey}&Money={$data['money']}¬ifyUrl={$data['notify_url']}&OrderId={$data['order_sn']}"); $sRes = $this->httpGet($this->payUrl . '?CustomerId=' . $data['partner_id'] . '&OrderId=' . $data['orderSn']. '&Money=' . $data['money'] . '¬ifyUrl=' . $data['notify_url'] . '&MD5sign=' . $md5Sign); if (empty($sRes)) { $this->_lastError = '请求异常'; payLogger(__CLASS__,'请求异常data='.$sRes,$payInfo); return ''; } $aRes = json_decode($sRes, true); if (empty($aRes)) { $this->_lastError = '请求异常!'; payLogger(__CLASS__,'请求异常 (解析) data='.$sRes,$payInfo); return ''; } if ($aRes['result_state'] != 'true' || $aRes['msg'] != '成功') { $this->_lastError = '请求异常,请求失败'; payLogger(__CLASS__,'请求异常,请求失败 data='.$sRes,$payInfo); return ''; } return $aRes['payUrl']; } public function queryOrder($data, &$orderSn, &$money, $partnerId) { $sign = strtoupper(md5("CustomerId={$partnerId}&key={$this->publicKey}&OrderId={$orderSn}")); $queryUrl = $this->queryUrl . '?CustomerId=' . $partnerId . '&OrderId=' . $orderSn . '&MD5sign=' . $sign; $sRes = $this->httpGet($queryUrl); if (empty($sRes)) { $this->_lastError = '查询请求异常'; payLogger(__CLASS__,'查询请求异常 $queryInfo=' . $queryUrl ,$data); return ''; } $aRes = json_decode($sRes, true); if (empty($aRes)) { $this->_lastError = '查询解析异常'; payLogger(__CLASS__,'查询解析异常 data='.$sRes,$data); return ''; } if ($aRes['result_state'] != true || $aRes['msg'] != '支付成功') { $this->_lastError = '查询订单状态异常'; payLogger(__CLASS__,'查询订单状态异常 data='.$sRes,$data); return ''; } return true; } public function notify(&$orderSn, &$tradeNo, &$money, $partnerId) { $data = request()->all(); if ($data['code'] != self::SUCESS_CODE) { payLogger(__CLASS__,'回调订单状态失败',$data); return false; } $sign = strtoupper(md5("code={$data['code']}&key={$this->publicKey}&money={$data['money']}&orderDate={$data['orderDate']}&OrderId={$data['OrderId']}&OrderNumber={$data['OrderNumber']}")); if ($sign != $data['sign']) { $this->_lastError = '验证失败!'; payLogger(__CLASS__, '验证失败 $sign=' . $sign, $data); return false; } $money = $data['money']; $res = $this->queryOrder($data, $data['OrderId'], $money, $partnerId); if (empty($res)) { return ''; } $orderSn = $data['OrderId']; $tradeNo = $data['OrderNumber']; return true; } public function stopNotify() { return 'success'; } }