TransferV3.php 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. namespace app\framework\EasyWechat\Payment;
  3. use app\common\facades\Setting;
  4. use app\common\services\wechatApiV3\ApiV3Config;
  5. use EasyWeChat\OfficialAccount\Material\Client as BaseClient;
  6. class TransferV3 extends BaseClient
  7. {
  8. public function batches(array $params)
  9. {
  10. $params['appid'] = $this->app['config']->app_id;
  11. $columns = [
  12. 'appid', 'out_batch_no', 'batch_name', 'batch_remark', 'total_amount', 'total_num', 'transfer_detail_list',
  13. ];
  14. foreach ($params as $k => $v) {
  15. if (!in_array($k, $columns)) {
  16. unset($params[$k]);
  17. }
  18. }
  19. $apiV3 = new ApiV3Config($this->getConfig());
  20. //敏感数据加密
  21. $is_encrypt = false;
  22. foreach ($params['transfer_detail_list'] as &$item) {
  23. if ($item['user_name']) {
  24. $item['user_name'] = $apiV3->encrypt()->encrypt($item['user_name']);
  25. $is_encrypt = true;
  26. }
  27. }
  28. unset($item);
  29. return $apiV3->request()->httpRequest('https://api.mch.weixin.qq.com/v3/transfer/batches',$params,'POST',$is_encrypt);
  30. }
  31. public function searchBatch(array $params)
  32. {
  33. if (!$params['out_batch_no']) {
  34. throw new \Exception('商家批次单号必填!');
  35. }
  36. $columns = [
  37. 'need_query_detail', 'offset', 'limit', 'detail_status',
  38. ];
  39. $params['need_query_detail'] = (bool)$params['need_query_detail'];
  40. $query = '';
  41. foreach ($params as $k => $v) {
  42. if (in_array($k, $columns)) {
  43. $query .= (($query ? '&':'?') . $k . '=' . $v);
  44. }
  45. }
  46. $url = "https://api.mch.weixin.qq.com/v3/transfer/batches/out-batch-no/".$params['out_batch_no'].$query;
  47. $apiV3 = new ApiV3Config($this->getConfig());
  48. return $apiV3->request()->httpRequest($url,[],'GET',false,1);
  49. }
  50. public function searchDetails(array $params)
  51. {
  52. if (!$params['out_batch_no']) {
  53. throw new \Exception('商家批次单号必填!');
  54. }
  55. if (!$params['out_detail_no']) {
  56. throw new \Exception('商家明细单号必填!');
  57. }
  58. $url = "https://api.mch.weixin.qq.com/v3/transfer/batches/out-batch-no/".$params['out_batch_no']."/details/out-detail-no/".$params['out_detail_no'];
  59. $apiV3 = new ApiV3Config($this->getConfig());
  60. return $apiV3->request()->httpRequest($url,[],'GET',false,1);
  61. }
  62. private function getConfig()
  63. {
  64. $config = [
  65. 'appid' => $this->app['config']->app_id,
  66. 'secret' => $this->app['config']->key,
  67. 'secret_v3' => $this->app['config']->key_v3 ? : '',
  68. 'mchid' => $this->app['config']->mch_id,
  69. 'api_cert_pem' => $this->app['config']->cert_path,
  70. 'api_key_pem' => $this->app['config']->key_path,
  71. ];
  72. return $config;
  73. }
  74. }