Palmpay.php 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. namespace App\Libs\Pay\Merchants;
  3. use GuzzleHttp\Client;
  4. use Log;
  5. use Mockery\Exception;
  6. /**
  7. *
  8. */
  9. class Palmpay {
  10. function __construct($config)
  11. {
  12. $this->appId = $config['appId'];
  13. $this->mchId = $config['mchId'];
  14. $this->appkey = $config['appKey'];
  15. $this->subAppid = $config['subAppid'];
  16. $this->PayClient = new client(['base_uri'=>'https://pay.palmpay.cn/','timeout'=>5]);
  17. }
  18. //生成订单
  19. function send($data)
  20. {
  21. $data = [
  22. 'mchId'=>$this->mchId,
  23. 'appid'=>$this->appId,
  24. 'version'=>'3.0',
  25. 'productName'=>$data['body'],
  26. 'productDesc'=>'小说充值',
  27. 'openid'=>$data['openid'],
  28. 'subAppid'=>$this->subAppid,
  29. 'money'=>$data['price'],
  30. 'outTradeNo'=>$data['trade_no'],
  31. 'notifyUrl'=>env('PALMPAY_NOFITY_URL'),
  32. ];
  33. $data['sign'] = $this->sign($data);
  34. $pay_url = "sdkServer/thirdpays/pay/WECHAT_SUB?".http_build_query($data);
  35. $response = $this->PayClient->request('GET',$pay_url)->getBody()->getContents();
  36. return $this->getPayInfo($response);
  37. }
  38. function sign($params)
  39. {
  40. return md5($params['appid'].'WECHAT_SUB'.$params['money'].$params['outTradeNo'].$this->appkey);
  41. }
  42. function getPayInfo($response)
  43. {
  44. try{
  45. $return_info = json_decode($response,1);
  46. //dd($return_info);
  47. if($return_info['errcode'] == 0)
  48. {
  49. return json_decode($return_info['result']['pay_info'],1);
  50. }
  51. }catch (\Exception $e)
  52. {
  53. return null;
  54. }
  55. }
  56. }