BillService.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. <?php
  2. namespace addons\HuijuBill\common\service;
  3. use addons\HuijuBill\common\enums\StatusEnum;
  4. use common\enums\AddonsEnum;
  5. use addons\HuijuBill\common\logic\PayApiLogic;
  6. use common\models\common\MiddleMch;
  7. use common\models\common\PaymentTradeOrder;
  8. use Exception;
  9. use Swoole\Http\Status;
  10. use Yii;
  11. use yii\base\Model;
  12. class BillService extends Model
  13. {
  14. /**
  15. * 商户ID
  16. *
  17. * @var integer
  18. */
  19. public $mall_id;
  20. /**
  21. * 錯誤
  22. *
  23. * @var string
  24. */
  25. public $error;
  26. /**
  27. * 获取分账列表
  28. *
  29. * @param array $params
  30. * @return array
  31. */
  32. public function getBillList($params)
  33. {
  34. $mch = MiddleMch::getMch($this->mall_id);
  35. $service = new PayApiLogic($mch);
  36. $start_time = !empty($params['data']) ? $params['data'][0] : date('Y-m-d', strtotime('-90day'));
  37. $end_time = !empty($params['data']) ? $params['data'][1] : date('Y-m-d');
  38. $page = empty($params['page']) ? 1 : intval($params['page']);
  39. $order_no = !empty($params['no'])
  40. ? PaymentTradeOrder::getOutTradeNoOfOrderNo($params['no'])
  41. : '';
  42. $data = $service->order_alt_list($start_time, $end_time, $order_no, $page);
  43. $list = $data['items'];
  44. foreach ($list as $k => $v) {
  45. $list[$k]['alt_status'] = StatusEnum::getValue($v['alt_status']);
  46. }
  47. $res['list'] = $list;
  48. $res['limit'] = 10;
  49. $res['page_count'] = ceil($data['pageInfo']['total'] / 15);
  50. $res['current_page'] = $data['pageInfo']['currentPage'];
  51. return $res;
  52. }
  53. /**
  54. * 获取分账方详情
  55. *
  56. * @return array
  57. */
  58. public function getInfo()
  59. {
  60. $mch = MiddleMch::getMch($this->mall_id);
  61. $service = new PayApiLogic($mch);
  62. $basic = Yii::$app->services->setting->addons->get($this->mall_id, AddonsEnum::ADDONS_NAME_HUIJU_BILL, 'basic');
  63. $sett_mode_arr = [
  64. 1 => '自动结算',
  65. 2 => '手工结算' ,
  66. 3 => '手工+D0 结算',
  67. 4 => '自动+D0 结算',
  68. ];
  69. $alt_merchant_type_arr = [
  70. 10 => '个人',
  71. 11 => '个体工商户',
  72. 12 => '企业',
  73. ];
  74. $sign_status_arr = [
  75. 0 => '未签约',
  76. 1 => '已签约',
  77. ];
  78. $data = $service->mch_info($basic['huijubill_merchant_no']);
  79. $data['sett_mode'] = $sett_mode_arr[$data['sett_mode']] ?? '';
  80. $data['alt_merchant_type'] = $alt_merchant_type_arr[$data['alt_merchant_type']] ?? '';
  81. $data['sign_status'] = $sign_status_arr[$data['sign_status']] ?? '';
  82. return $data;
  83. }
  84. /**
  85. * 获取签约内容
  86. *
  87. * @return string
  88. */
  89. public function getSignContent()
  90. {
  91. $mch = MiddleMch::getMch($this->mall_id);
  92. $service = new PayApiLogic($mch);
  93. return $service->sign_content();
  94. }
  95. /**
  96. * 确认签约
  97. *
  98. * @return void
  99. */
  100. public function confirmSign()
  101. {
  102. $mch = MiddleMch::getMch($this->mall_id);
  103. $service = new PayApiLogic($mch);
  104. try {
  105. $res = $service->confirm_sign();
  106. } catch (Exception $e) {
  107. $this->error = $e->getMessage();
  108. // 重复签约
  109. if ($this->error == '接口请求错误:受理失败,分账商户已签约,请勿重复签约') {
  110. // 保存签约状态
  111. Yii::$app->services->setting->addons->set(
  112. $this->mall_id,
  113. AddonsEnum::ADDONS_NAME_HUIJU_BILL,
  114. ['basic' => ['sign_status' => 1]]
  115. );
  116. }
  117. return false;
  118. }
  119. // 保存签约状态
  120. Yii::$app->services->setting->addons->set(
  121. $this->mall_id,
  122. AddonsEnum::ADDONS_NAME_HUIJU_BILL,
  123. ['basic' => ['sign_status' => 1]]
  124. );
  125. return true;
  126. }
  127. }