YiyunPayment.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2019/3/5
  6. * Time: 18:03
  7. */
  8. namespace Biz\Pay\Payment;
  9. use Biz\Pay\NewBasePayment;
  10. class YiyunPayment extends NewBasePayment
  11. {
  12. private $paySign = false;
  13. /**
  14. * 接收通知
  15. * @param array $data
  16. * @return void
  17. */
  18. function notify(array $data)
  19. {
  20. foreach ($data as $k => $v) {
  21. $data[$k] = trim(strip_tags($v));
  22. }
  23. $order_no = $data['ordernumber'];
  24. $price = $real_price = $data['paymoney'];
  25. $bill_no = $data['sysnumber'];
  26. $sign = trim(strip_tags($data['sign']));
  27. $this->checkSign($data, $sign, $order_no, $price, $real_price, $is_bill_no = 0, $bill_no);
  28. }
  29. /**
  30. * 返回跳转
  31. * @param array $data
  32. * @return void [type] [description]
  33. */
  34. function redirect(array $data)
  35. {
  36. // TODO: Implement redirect() method.
  37. }
  38. /**
  39. * 检查支付信息
  40. * @return void [type] 0=失败,1=成功
  41. */
  42. function check()
  43. {
  44. // TODO: Implement check() method.
  45. }
  46. /**
  47. * 构建订单提交数组
  48. * @return array
  49. */
  50. function buildOrder(): array
  51. {
  52. $arr['version'] = '3.0';
  53. $arr['method'] = 'yy.online.interface';
  54. $arr['partner'] = $this->paymentConfig['merchant_id'];
  55. $arr['ordernumber'] = $this->dataAccess->orderSn;//已存在该变量
  56. $arr['paymoney'] = $this->dataAccess->money;
  57. $arr['callbackurl'] = $this->notifyUrl;
  58. $arr['hrefbackurl'] = $this->redirectUrl;
  59. $arr['banktype'] = $this->dataAccess->payType;
  60. $arr['isshow'] == 1;
  61. $arr['attach'] = $this->dataAccess->goodsName ?? 'GoodsDetail';
  62. $arr['sign'] = $this->buildSign($arr, $this->paymentConfig['merchant_md5_secret']);
  63. return $arr;
  64. }
  65. /**
  66. * 生成签名函数
  67. * @param array $param
  68. * @param string $merchantSecret
  69. * @return mixed
  70. */
  71. function buildSign(array $param, $merchantSecret)
  72. {
  73. if ($this->paySign) {
  74. return $this->buildPaySign($param, $merchantSecret);
  75. }
  76. $partner = trim(strip_tags($param['partner']));
  77. $ordernumber = trim(strip_tags($param['ordernumber']));
  78. $paymoney = trim(strip_tags($param['paymoney']));
  79. $orderstatus = trim(strip_tags($param['orderstatus']));
  80. $signText = "partner=" . $partner . "&ordernumber=" . $ordernumber . "&orderstatus=" . $orderstatus . "&paymoney=" . $paymoney . $merchantSecret;
  81. return strtolower(md5($signText));
  82. }
  83. function buildPaySign($param, $merchantSecret)
  84. {
  85. $version = $param['version'];
  86. $method = $param['method'];
  87. $partner = $param['partner'];
  88. $banktype = $param['banktype'];
  89. $paymoney = $param['paymoney'];
  90. $ordernumber = $param['ordernumber'];
  91. $callbackurl = $param['callbackurl'];
  92. $signText = "version=" . $version . "&method=" . $method . "&partner=" . $partner . "&banktype=" . $banktype . "&paymoney=" . $paymoney . "&ordernumber=" . $ordernumber . "&callbackurl=" . $callbackurl . $merchantSecret;
  93. return strtolower(md5($signText));
  94. }
  95. /**
  96. * 基础配置
  97. * @return void
  98. */
  99. function config()
  100. {
  101. $this->apiUrl = 'http://open.yyy114.com/online/gateway';
  102. $this->success='ok';
  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->paySign = true;
  120. $this->prePay();
  121. }
  122. }