SACSService.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. declare(strict_types=1);
  3. namespace SixShop\Lakala\Service;
  4. use SixShop\Lakala\Config;
  5. use SixShop\Lakala\OpenAPISDK\V2\Api\V2LakalaApi;
  6. use SixShop\Lakala\OpenAPISDK\V3\Api\LakalaApi;
  7. use SixShop\Lakala\OpenAPISDK\V3\Model\ModelRequest;
  8. use function SixShop\Core\throw_logic_exception;
  9. class SACSService
  10. {
  11. private LakalaApi $lakalaApi;
  12. public function __construct(private Config $config)
  13. {
  14. $this->lakalaApi = new LakalaApi($config->getV3Config());
  15. }
  16. /**
  17. * 余额分账
  18. *
  19. * @link https://o.lakala.com/#/home/document/detail?id=489
  20. */
  21. public function balanceSeparate(array $reqData)
  22. {
  23. $request = new ModelRequest();
  24. $request->setReqData($reqData);
  25. $response = $this->lakalaApi->tradeApi('/api/v3/sacs/balanceSeparate', $request);
  26. if ($response->getCode() == 'SACS0000') {
  27. return $response->getRespData();
  28. } else {
  29. throw_logic_exception(
  30. msg: $response->getMsg(),
  31. status: $response->getCode(),
  32. data: $response->getRespData(),
  33. );
  34. }
  35. }
  36. /**
  37. * 分账结果查询
  38. *
  39. * @param string $merchantNo 商户编号
  40. * @param string $separateNo 分账单号
  41. * @param string $outSeparateNo 商户系统分账单号
  42. * @link https://o.lakala.com/#/home/document/detail?id=492
  43. */
  44. public function balanceSeparateQuery(string $merchantNo, string $separateNo = '', string $outSeparateNo = '')
  45. {
  46. $request = new ModelRequest();
  47. $reqData = [
  48. 'merchant_no' => $merchantNo,
  49. ];
  50. if ($separateNo) {
  51. $reqData['separate_no'] = $separateNo;
  52. }
  53. if ($outSeparateNo) {
  54. $reqData['out_separate_no'] = $outSeparateNo;
  55. }
  56. $request->setReqData($reqData);
  57. $response = $this->lakalaApi->tradeApi('/api/v3/sacs/balanceSeparateQuery', $request);
  58. if ($response->getCode() == 'SACS0000') {
  59. return $response->getRespData();
  60. } else {
  61. throw_logic_exception(
  62. msg: $response->getMsg(),
  63. status: $response->getCode(),
  64. data: $response->getRespData(),
  65. );
  66. }
  67. }
  68. }