JichuangPayment.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2019/3/6
  6. * Time: 16:53
  7. */
  8. namespace Biz\Pay\Payment;
  9. use Biz\Pay\NewBasePayment;
  10. class JichuangPayment extends NewBasePayment
  11. {
  12. /**
  13. * 接收通知
  14. * @param array $data
  15. * @return void
  16. */
  17. function notify(array $data)
  18. {
  19. $arr['tradeno'] = trim(strip_tags($data['tradeno']));
  20. $arr['outtradeno'] = trim(strip_tags($data['outtradeno']));
  21. $arr['amount'] = trim(strip_tags($data['amount']));
  22. $arr['partner'] = trim(strip_tags($data['partner']));
  23. $arr['inttime'] = trim(strip_tags($data['inttime']));
  24. $order_no = $data['outtradeno'];
  25. $price = $real_price = (float)trim(strip_tags($data['amount'])) / 100;
  26. $bill_no = $data['tradeno'];
  27. $sign = trim(strip_tags($data['sign']));
  28. $this->checkSign($arr, $sign, $order_no, $price, $real_price, $is_bill_no = 0, $bill_no);
  29. }
  30. /**
  31. * 返回跳转
  32. * @param array $data
  33. * @return void [type] [description]
  34. */
  35. function redirect(array $data)
  36. {
  37. // TODO: Implement redirect() method.
  38. }
  39. /**
  40. * 检查支付信息
  41. * @return void [type] 0=失败,1=成功
  42. */
  43. function check()
  44. {
  45. // TODO: Implement check() method.
  46. }
  47. /**
  48. * 构建订单提交数组
  49. * @return array
  50. */
  51. function buildOrder(): array
  52. {
  53. $param = array(
  54. 'tradeno' => $this->dataAccess->orderSn,
  55. 'tradename' => $this->dataAccess->goodsName ?? 'GoodsName',
  56. 'amount' => $this->dataAccess->money * 100,
  57. 'partner' => $this->paymentConfig['merchant_id'],
  58. 'paytype' => $this->dataAccess->payType,
  59. 'inttime' => time(),
  60. 'paynotifyurl' => $this->notifyUrl,
  61. );
  62. $str = "tradeno=" . $param['tradeno'] . "&tradename=" . $param['tradename'] . "&amount=" . $param['amount'] . "&partner=" . $param['partner'] . "&paytype=" . $param['paytype'] . "&inttime=" . $param['inttime'] . "&paynotifyurl=" . $param['paynotifyurl'];
  63. $pay_key = "&key={$this->paymentConfig['merchant_md5_secret']}";
  64. $param['signinfo'] = md5($str . $pay_key);
  65. return $param;
  66. }
  67. /**
  68. * 生成签名函数
  69. * @param array $param
  70. * @param string $merchantSecret
  71. * @return mixed
  72. */
  73. function buildSign(array $param, $merchantSecret)
  74. {
  75. $signValue = "tradeno=" . $param['tradeno'] . "&outtradeno=" . $param['outtradeno'] . "&amount=" . $param['amount'] . "&partner=" . $param['partner'] . "&inttime=" . $param['inttime'] . "&key=" . $merchantSecret;
  76. return md5($signValue);
  77. }
  78. /**
  79. * 基础配置
  80. * @return void
  81. */
  82. function config()
  83. {
  84. $this->apiUrl = "https://www.89988buy.com/media.php/sdk2/pay/";
  85. $this->success = "success";
  86. }
  87. /**
  88. * 设置返回类型
  89. * @param string $type
  90. */
  91. function setReturnType($type = 'HTML')
  92. {
  93. // TODO: Implement setReturnType() method.
  94. }
  95. /**
  96. * 发起支付函数
  97. * @return mixed
  98. */
  99. function goPay()
  100. {
  101. $order_info = $this->buildOrder();
  102. $json = $this->goPayCurl($this->apiUrl, $order_info);
  103. $ret = json_decode($json, 1);
  104. if (!$ret || $ret['retcode'] !== 1) {
  105. Render('', -5989, $ret['msg'] ?? '');
  106. }
  107. $this->apiUrl = $ret['payurl'];
  108. $this->method = 'GET';
  109. $this->prePay(1);
  110. }
  111. }