QuanmeiPayment.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2019/3/4
  6. * Time: 18:40
  7. */
  8. namespace Biz\Pay\Payment;
  9. use Biz\Pay\NewBasePayment;
  10. class QuanmeiPayment extends NewBasePayment
  11. {
  12. /**
  13. * 接收通知
  14. * @param array $data
  15. * @return void
  16. */
  17. function notify(array $data)
  18. {
  19. $param = array(
  20. 'extras' => trim(strip_tags($data['extras'])),
  21. 'merchant_code' => trim(strip_tags($data['merchant_code'])),
  22. 'order_amount' => trim(strip_tags($data['order_amount'])),
  23. 'order_no' => trim(strip_tags($data['order_no'])),
  24. 'order_time' => trim(strip_tags($data['order_time'])),
  25. 'trade_no' => trim(strip_tags($data['trade_no'])),
  26. 'trade_status' => trim(strip_tags($data['trade_status'])),
  27. 'trade_time' => trim(strip_tags($data['trade_time'])),
  28. );
  29. $sign = trim(strip_tags($data['sign']));
  30. $order_no = $param['orderNo'];
  31. $price = $param['order_amount'];
  32. $real_price = $param['order_amount'];
  33. $bill_no = $param['trade_no'];
  34. $this->checkSign($param, $sign, $order_no, $price, $real_price, $is_bill_no = 0, $bill_no);
  35. }
  36. /**
  37. * 返回跳转
  38. * @param array $data
  39. * @return void [type] [description]
  40. */
  41. function redirect(array $data)
  42. {
  43. // TODO: Implement redirect() method.
  44. }
  45. /**
  46. * 检查支付信息
  47. * @return void [type] 0=失败,1=成功
  48. */
  49. function check()
  50. {
  51. // TODO: Implement check() method.
  52. }
  53. /**
  54. * 构建订单提交数组
  55. * @return array
  56. */
  57. function buildOrder(): array
  58. {
  59. $param = array(
  60. 'notify_url' => $this->notifyUrl, // 服务器异步通知地址
  61. 'return_url' => $this->redirectUrl, //页面同步跳转通知地址
  62. 'trade_type' => $this->dataAccess->payType,//1 微信扫码,2 支付宝扫码,3 QQ扫码(暂无) 4微信H5(暂无) 5支付宝H5 6QQ扫码H5(暂无)
  63. 'merchant_code' => $this->paymentConfig['merchant_id'],
  64. 'order_no' => $this->dataAccess->orderSn,
  65. 'amount' => number_format($this->dataAccess->money, 2, '.', ''),
  66. 'source_ip' => $this->getRealIp(), // 商户ip
  67. 'create_time' => date('Y-m-d H:i:s'), //订单时间
  68. 'extras' => $this->dataAccess->extra ?? 'OrderDetail' . time(), // 附加参数
  69. );
  70. $param['sign'] = $this->buildSign($param, $this->paymentConfig['merchant_md5_secret']);
  71. return $param;
  72. }
  73. /**
  74. * 生成签名函数
  75. * @param array $param
  76. * @param string $merchantSecret
  77. * @return mixed
  78. */
  79. function buildSign(array $param, $merchantSecret)
  80. {
  81. if (!is_array($param)) {
  82. return false;
  83. }
  84. ksort($param);
  85. $signStr = '';
  86. foreach ($param as $k => $v) {
  87. if ('' !== $v) {
  88. $signStr .= "{$k}={$v}&";
  89. }
  90. }
  91. $signStr .= "key=" . $merchantSecret;
  92. return md5($signStr);
  93. }
  94. /**
  95. * 基础配置
  96. * @return void
  97. */
  98. function config()
  99. {
  100. $this->apiUrl = 'https://api.hpay88.com/gateway';
  101. $this->setReturnType();//根据客户端类型返回支付接口类型
  102. // $this->success = 'success';
  103. }
  104. /**
  105. * 设置返回类型
  106. * @param string $type
  107. */
  108. function setReturnType($type = 'HTML')
  109. {
  110. // TODO: Implement setReturnType() method.
  111. }
  112. /**
  113. * 发起支付函数
  114. * @return mixed
  115. */
  116. function goPay()
  117. {
  118. $this->debug = 0;
  119. $this->method = "POST";
  120. $this->prePay();
  121. }
  122. }