Order.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. <?php
  2. namespace app\extra\weMini;
  3. use WeChat\Contracts\Tools;
  4. class Order extends BasicWePay
  5. {
  6. /**
  7. * 统一下单
  8. * @param array $options
  9. * @return array
  10. */
  11. public function create(array $options)
  12. {
  13. $url = 'https://api.mch.weixin.qq.com/pay/unifiedorder';
  14. return $this->callPostApi($url, $options, false, 'MD5');
  15. }
  16. /**
  17. * 刷卡支付
  18. * @param array $options
  19. * @return array
  20. */
  21. public function micropay(array $options)
  22. {
  23. $url = 'https://api.mch.weixin.qq.com/pay/micropay';
  24. return $this->callPostApi($url, $options, false, 'MD5');
  25. }
  26. /**
  27. * 查询订单
  28. * @param array $options
  29. * @return array
  30. */
  31. public function query(array $options)
  32. {
  33. $url = 'https://api.mch.weixin.qq.com/pay/orderquery';
  34. return $this->callPostApi($url, $options);
  35. }
  36. /**
  37. * 关闭订单
  38. * @param string $outTradeNo 商户订单号
  39. * @return array
  40. */
  41. public function close($outTradeNo)
  42. {
  43. $url = 'https://api.mch.weixin.qq.com/pay/closeorder';
  44. return $this->callPostApi($url, ['out_trade_no' => $outTradeNo]);
  45. }
  46. /**
  47. * 创建JsApi及H5支付参数
  48. * @param string $prepayId 统一下单预支付码
  49. * @return array
  50. */
  51. public function jsapiParams($prepayId)
  52. {
  53. $option = [];
  54. $option["appId"] = $this->config->get('appid');
  55. $option["timeStamp"] = (string)time();
  56. $option["nonceStr"] = Tools::createNoncestr();
  57. $option["package"] = "prepay_id={$prepayId}";
  58. $option["signType"] = "MD5";
  59. $option["paySign"] = $this->getPaySign($option, 'MD5');
  60. $option['timestamp'] = $option['timeStamp'];
  61. return $option;
  62. }
  63. /**
  64. * 获取支付规则二维码
  65. * @param string $productId 商户定义的商品id或者订单号
  66. * @return string
  67. */
  68. public function qrcParams($productId)
  69. {
  70. $data = [
  71. 'appid' => $this->config->get('appid'),
  72. 'mch_id' => $this->config->get('mch_id'),
  73. 'time_stamp' => (string)time(),
  74. 'nonce_str' => Tools::createNoncestr(),
  75. 'product_id' => (string)$productId,
  76. ];
  77. $data['sign'] = $this->getPaySign($data, 'MD5');
  78. return "weixin://wxpay/bizpayurl?" . http_build_query($data);
  79. }
  80. /**
  81. * 获取微信App支付秘需参数
  82. * @param string $prepayId 统一下单预支付码
  83. * @return array
  84. */
  85. public function appParams($prepayId)
  86. {
  87. $data = [
  88. 'appid' => $this->config->get('appid'),
  89. 'partnerid' => $this->config->get('mch_id'),
  90. 'prepayid' => (string)$prepayId,
  91. 'package' => 'Sign=WXPay',
  92. 'timestamp' => (string)time(),
  93. 'noncestr' => Tools::createNoncestr(),
  94. ];
  95. $data['sign'] = $this->getPaySign($data, 'MD5');
  96. return $data;
  97. }
  98. /**
  99. * 刷卡支付 撤销订单
  100. * @param array $options
  101. * @return array
  102. */
  103. public function reverse(array $options)
  104. {
  105. $url = 'https://api.mch.weixin.qq.com/secapi/pay/reverse';
  106. return $this->callPostApi($url, $options, true);
  107. }
  108. /**
  109. * 刷卡支付 授权码查询openid
  110. * @param string $authCode 扫码支付授权码,设备读取用户微信中的条码或者二维码信息
  111. * @return array
  112. */
  113. public function queryAuthCode($authCode)
  114. {
  115. $url = 'https://api.mch.weixin.qq.com/tools/authcodetoopenid';
  116. return $this->callPostApi($url, ['auth_code' => $authCode], false, 'MD5', false);
  117. }
  118. /**
  119. * 刷卡支付 交易保障
  120. * @param array $options
  121. * @return array
  122. */
  123. public function report(array $options)
  124. {
  125. $url = 'https://api.mch.weixin.qq.com/payitil/report';
  126. return $this->callPostApi($url, $options);
  127. }
  128. }