JingXiuPayUtil.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <?php
  2. namespace app\utils\JingXiu;
  3. use app\utils\CurlUtil;
  4. use think\Request;
  5. class JingXiuPayUtil extends Module
  6. {
  7. private $host = 'https://gateway.jxpays.com/';
  8. private $mch_id = '880843903216443';
  9. private $merchant_private_key = 'MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCysh3XnRELOwLnj0AyiU8RGNLkCOgYpZsGbXLL00U0p+Y2duXTj8LWqxXHQPMbtrKSryzNJ/qbxV9zxwYB8bJP1HAf1HnXlGGN7y3I2uxaq5Y6DkY1mZPiYk3WEhc41HJ1z9Z81j0gV594Z4/XvXTlZTZnFDDdbLr5tuQr9GttA3g62qiQZkvG9Ea93ltLjXKIQBOr9HqeaZLe1fbzdsSsX7HVFsh4OLu6UxVhfIxseYE5eh4dOa68wB1HgkcR34fMGZv7UdpF+V2lTYDpWG3QmlwAc6K+BDlxjreXX38tux1Etu9sQXBwUSjy2b5wgHyldOajVftSQiYF930dfTqFAgMBAAECggEAJZYzkru17w/Nj5lhHoAlQmpfSZnZ//0te4+f+uGIiAfc843Uz8hIalD4Nr4hpK2sKBByswB6xTMh3b96MwR8xi/gGcHekwrh7jHmBn6OApBe+/0upW2VXqPgzWtmuQxuuvspmX6Swu/LWk8mQXHXWb0NUWc81AZf2dCvc9NomTgsnR5w4cx7uwarDbOIF3XRyyb6o1csb1gQ/ufGIoQCbjoNCJYSWRSBsTQ7Uj/rB1ex58SEV0fg9g9Grp8q8yG+OnkpvizHycbzWezuC60r74oIhRIGNiyDlhmK5+kqay9wQ9EbYpBtczHrJr0uPZFu9kgZvuuz5uxsm1UzJKueLQKBgQDaouGSvBgtb3/qd3guztzUty/ECeFba9PRbq1GzIGkUg/DEyJV/YHNQY6z2gWpfsxTw71q49OD+zC6P0dnBArpZTi78cl2rhJKguMmBrW918TDq7kmN56gHVhNsoGEne7yXU9QZfCimCAW6VCuxs+yEDJ2k8ncKMKjN6dEWPqsvwKBgQDRO+D67ybjDca9Udi0VVu+IWycxU6lU1804BvRVUCLOVcFm0nM4TXLLH9vnZPx2sbDgRg77a5wxQKIAjv/Vyd5uGW++YiTT2zbcUypIcEFWQ0CcXdUKq4kMNnkrSvu7gdrRBXUxmXmfr9RNAm9SXZR/STfUZPB9i48HGha50K1uwKBgQCDdGOEQiuXRe73HpXYLvB/xRSnHfmtaguVZKIya0uXbO+lLp/6a83bh4sxf+jfnClmQ85jsk++jw0hLmLUAY49/mo6NooXHVpKCqBggLBNUKoxq9JKtC5fvsUVEjrlbb/5YTkK8f/ZAvZoUCf+rfK68RomSX2ZLbi5QgEECyvNKQKBgQCeDM5AnyBPyRtD7Sx15Did4Z+quHxU9CppxZQdx3ku8cxjZs8TnVdGN0G4LV8RBYK5Ma39rufjNV5ZIN7zXYFrN7hbzyC0rf17shUHeYDVqlPicZWDFY5ftisRyyHxpQojo9Wd2ZQlzb5094sX2gMvoboVmwizLmP0cjz91c0VewKBgQDDqQW90PVHNpU/LLJG/bk5aAWImIgU6ytNshgJAr8LRiamQ+pC/uBoAOvx0XP4jdiEz+i0+Bpmq9BfWLnXORuWbCo6FsdsycGvGr7JdgJvR7zhPgeAm99RP0q1SJxhbbYBgvqII+woQkYAof/OqZE4+gMiAsy4pnMHwoaZgNX6kg==';
  10. private $platform_public_key = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAigLUoKx2TmHwgI4beRwgp07q7QncR+BQcAs/j4dtYH0W9Gq3pKwhmEerHUozEXjWtGuT119AzGlIY8UnXA+NRX7h04OEm6tpLAl6yVo3gLeSYrKIyjXPIa4S3mCzApXrjx4/KWNcvX0xK9ly9iV3R0nCoYb9ZR/HttS03zt+9JQ3MVTXm9kBUDnC6A13lnDXKO54tBoRIXKANTxoVi7uSwuim5qFofh6AowKEwyBDEvVnburdDo7ZL7FL0ntglA2NfUF2Viyby0HNMmcvbl6fbm+z5jXLcK++RNJQZoiTtvej6S19eH38ihll0cdUqtibO5oi9xzLyjEJq/bTexdQQIDAQAB';
  11. private $order_no = '';
  12. private $money = 0.01;
  13. private $remark = '';
  14. private $notify_url = '/api/jx_pay/pay_notify';
  15. /**
  16. * 微信手机支付
  17. * @param $order_no
  18. * @param $money
  19. * @param $remark
  20. * @param $notify_url
  21. * @return bool
  22. */
  23. public function wxWapPay($order_no, $money, $remark = '', $notify_url = '')
  24. {
  25. $this->order_no = $order_no;
  26. // $this->money = $money;
  27. $this->money = 0.01;
  28. $this->remark = $remark;
  29. $this->notify_url = $notify_url;
  30. try {
  31. $result = $this->addOrder('wechatLiteH5');
  32. $code_url = $result['payurl'];
  33. } catch (\Exception $e) {
  34. return $this->error('微信支付下单失败!' . $e->getMessage());
  35. }
  36. return $this->success('微信支付下单成功!', [
  37. 'out_trade_no' => $result['out_trade_no'],
  38. 'total_amount' => $result['total_amount'],
  39. 'trade_no' => $result['trade_no'],
  40. 'trade_type' => $result['trade_type'],
  41. 'url' => CurlUtil::getHttp("/index/index/pay?url={$code_url}")
  42. ]);
  43. }
  44. /**
  45. * @param $params
  46. * @return bool
  47. */
  48. public function checkSign($params)
  49. {
  50. $client = new PasspayClient($this->host, $this->mch_id, $this->merchant_private_key, $this->platform_public_key);
  51. return $client->verifySign($params);
  52. }
  53. /**
  54. * 统一下单
  55. * @param string $trade_type
  56. * @param $sub_appid
  57. * @param $sub_openid
  58. * @return mixed
  59. */
  60. private function addOrder(string $trade_type, $sub_appid = null, $sub_openid = null)
  61. {
  62. // 客户端IP 防风控
  63. $client_ip = Request::instance()->ip();
  64. $client = new PasspayClient($this->host, $this->mch_id, $this->merchant_private_key, $this->platform_public_key);
  65. $notify_url = CurlUtil::getHttp($this->notify_url, false);
  66. $param = [
  67. 'trade_type' => $trade_type,
  68. 'out_trade_no' => $this->order_no,
  69. 'total_amount' => $this->money,
  70. "subject" => $this->remark,
  71. 'notify_url' => $notify_url,
  72. 'return_url' => '',//支付完成跳转地址,仅支持非原生支付,快捷支付,网银等支持同步跳转的支付类型
  73. 'client_ip' => $client_ip,
  74. ];
  75. if ($sub_appid && $sub_openid) {
  76. $param += [
  77. 'sub_appid' => $sub_appid,
  78. 'user_id' => $sub_openid,
  79. 'channe_expend' => json_encode(['is_raw' => 1])
  80. ];
  81. }
  82. return $client->execute('pay.order/create', $param);
  83. }
  84. }