$data['partner_id'], //商户号 'pay_orderid' => $data['order_sn'], 'pay_applydate' => date('Y-m-d H:i:s'), 'pay_bankcode' => $data['pay_attr_code'], 'pay_notifyurl' => $data['notify_url'], 'pay_callbackurl' => $data['pay_url'], 'pay_amount' => sprintf('%.2f', $data['money']), ]; $payInfo['pay_md5sign'] = strtoupper(md5($this->getSign($payInfo) . "key=" . $this->publicKey)); $sRes = $this->httpPost($this->payUrl, $payInfo); 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 ((isset($aRes['code']) && $aRes['code'] != 200) || (isset($aRes['status']) && $aRes['status']== 'error')) { $this->_lastError = '请求异常,请求失败'; payLogger(__CLASS__,'请求异常,请求失败 data='.$sRes,$payInfo); return ''; } return $aRes['data']; } public function queryOrder($data, &$orderSn, &$money, $partnerId) { $queryInfo = [ 'pay_memberid' => $partnerId, 'pay_orderid' => $orderSn ]; $queryInfo['pay_md5sign'] = strtoupper(md5($this->getSign($queryInfo) . "key=" . $this->publicKey)); $sRes = $this->httpPost($this->queryUrl, $queryInfo); if (empty($sRes)) { $this->_lastError = '查询请求异常'; payLogger(__CLASS__,'查询请求异常 $queryInfo='.json_encode($queryInfo),$data); return ''; } $aRes = json_decode($sRes, true); if (empty($aRes)) { $this->_lastError = '查询解析异常'; payLogger(__CLASS__,'查询解析异常 data='.$sRes,$data); return ''; } if ($aRes['returncode'] != self::SUCESS_CODE || $aRes['trade_state'] !== 'SUCCESS') { $this->_lastError = '查询订单状态异常'; payLogger(__CLASS__,'查询订单状态异常 data='.$sRes,$data); return ''; } if ($money != $aRes['amount']) { $this->_lastError = '查询订单金额异常'; payLogger(__CLASS__,'查询订单金额异常 data='.$sRes,$data); return ''; } return true; } public function notify(&$orderSn, &$tradeNo, &$money, $partnerId) { $data = request()->all(); if ($data['returncode'] != self::SUCESS_CODE) { payLogger(__CLASS__,'回调订单状态失败',$data); return false; } $info = [ 'memberid' => $partnerId, 'orderid' => $data['orderid'], 'amount' => $data['amount'], 'transaction_id' => $data['transaction_id'], 'datetime' => $data['datetime'], 'returncode' => $data['returncode'] ]; $sign = strtoupper(md5($this->getSign($info) . "key=" . $this->publicKey)); if ($sign != $data['sign']) { $this->_lastError = '验证失败!'; payLogger(__CLASS__,'验证失败 $sign='.$sign,$data); return false; } $money = $data['amount']; $res = $this->queryOrder($data, $data['orderid'], $money, $partnerId); if (empty($res)) { return ''; } $orderSn = $data['orderid']; $tradeNo = $data['transaction_id']; return true; } public function stopNotify() { return 'ok'; } public function queryRradeNo($orderSn, $partnerId) { $queryInfo = [ 'pay_memberid' => $partnerId, 'pay_orderid' => $orderSn ]; $queryInfo['pay_md5sign'] = strtoupper(md5($this->getSign($queryInfo) . "key=" . $this->publicKey)); $sRes = $this->httpPost($this->queryUrl, $queryInfo); if (empty($sRes)) { $this->_lastError = '查询请求异常'; payLogger(__CLASS__,'查询请求异常 $queryInfo='.json_encode($queryInfo)); return ''; } $aRes = json_decode($sRes, true); if (empty($aRes)) { $this->_lastError = '查询解析异常'; payLogger(__CLASS__,'查询解析异常 data='.$sRes); return ''; } return $aRes['transaction_id']; } }