| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- <?php
- namespace App\Repositories\Service\Payment;
- class KaopuPayment extends PaymentInterface
- {
- /**
- * 支付请求地址
- *
- * @var string
- */
- private $payUrl = 'http://116.62.180.111:8888/WebHandler/H5PayHandler.ashx';
- /**
- * 查询请求地址
- *
- * @var string
- */
- private $queryUrl = 'http://116.62.180.111:8888/WebHandler/H5PayStateHandler.ashx';
- const SUCESS_CODE = 200;
- /**
- * @var null
- */
- private static $_instance = null;
- /**
- * @return WhiteSharkPayment|null
- */
- public static function getInstance()
- {
- if (is_null(self::$_instance)) {
- self::$_instance = new self();
- }
- return self::$_instance;
- }
- /**
- * 私钥
- *
- * @var string
- */
- private $publicKey = 'MIZFYK0C';
- public function createPayLink($data = array())
- {
- $payInfo = [
- 'CustomerId' => $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';
- }
- }
|