PayFourBusiness.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. namespace app\business;
  3. use support\Db;
  4. use support\Redis;
  5. use yzh52521\EasyHttp\Http;
  6. class PayFourBusiness
  7. {
  8. static private $url = "https://xswg.bbbzf.xyz/api/pay/create_order";
  9. static private $apikey = 'P4NFABPLJM1EXK4RP7YIM9XU0B4IKIJHP0RUJZRQIN95CJVV5C2NOMANHUZBW2ROFP1FJJQ8JQCFTDUKYVPPFMEQINBBCJILN6QA5TA4XHM0DLUGT7XHEKNNWETH5DP5';
  10. static private $memberid = 20000250;
  11. /**
  12. * @param array $param[
  13. * order_no
  14. * ]
  15. * @return array
  16. */
  17. static public function payment($order_no,$pay_bankcode,$money,$url = '')
  18. {
  19. if (empty($url)) {
  20. $url = getenv('WEB_HOST');
  21. }
  22. $arr = [
  23. 'mchId' => self::$memberid,
  24. 'productId' => $pay_bankcode,
  25. 'mchOrderNo' => $order_no,
  26. 'amount' => (int)bcmul($money, 100),
  27. 'notifyUrl' => getenv('API_HOST') . '/api/pay/payment_callback_four.html',//异步通知地址,支付成功后将支付成功消息以POST请求发送给这个网址
  28. 'subject' => '商品',
  29. 'body' => '商品描述',
  30. 'extra' => 'abcd',
  31. ];
  32. $arr['sign'] = self::payMd5sign($arr);
  33. $data = Http::post(self::$url, $arr)->array();
  34. return ['data' => $data, 'arr' => $arr];
  35. }
  36. static public function payMd5sign(array $param)
  37. {
  38. /* @对数组键进行ASCII码排序*/
  39. ksort($param);
  40. $arr = [];
  41. //将数组进行重组装
  42. foreach ($param as $k => $v) {
  43. if (!empty($v)) {
  44. $arr[] = $k . '=' . $v;
  45. }
  46. }
  47. //转换成字符串并且拼接上密钥
  48. $sign = implode('&', $arr) . '&key=' . self::$apikey;
  49. return strtoupper(md5($sign));
  50. }
  51. }