Pārlūkot izejas kodu

feat(lakala): 新增分账相关接口支持

- 在 LedgerService 中新增 applyBind 方法用于分账关系绑定申请
- 在 MMSService 中新增 uploadFile 方法用于附件上传
- 新增 SACSService 类,实现余额分账及分账结果查询功能
- 使用构造函数属性提升简化服务类初始化
- 所有新接口均支持响应数据、头部信息和原始文本输出
runphp 4 mēneši atpakaļ
vecāks
revīzija
7be553e04e
3 mainītis faili ar 119 papildinājumiem un 2 dzēšanām
  1. 28 1
      src/Service/LedgerService.php
  2. 13 1
      src/Service/MMSService.php
  3. 78 0
      src/Service/SACSService.php

+ 28 - 1
src/Service/LedgerService.php

@@ -14,7 +14,7 @@ class LedgerService
 {
     private V2LakalaApi $v2LakalaApi;
 
-    public function __construct(Config $config)
+    public function __construct(private Config $config)
     {
         $this->v2LakalaApi = new V2LakalaApi($config->getV2Config());
     }
@@ -102,4 +102,31 @@ class LedgerService
         # 响应原文
         echo $response->getOriginalText();
     }
+
+    /**
+     * 分账关系绑定申请
+     *
+     * @param array $reqData
+     * @param string $version
+     * @link https://o.lakala.com/#/home/document/detail?id=386
+     */
+    public  function applyBind(array $reqData, string $version = '1.0')
+    {
+        $request = new V2ModelRequest();
+        $reqData['version'] = $version;
+        $request->setReqData($reqData);
+        $response = $this->v2LakalaApi->tradeApi('/api/v2/mms/openApi/ledger/applyBind', $request);
+        if ($response->getRespData()) {
+            print_r($response->getRespData());
+        } else {
+            print_r($response);
+        }
+        echo $response->getRetCode();
+
+        # 响应头信息
+        print_r($response->getHeaders());
+
+        # 响应原文
+        echo $response->getOriginalText();
+    }
 }

+ 13 - 1
src/Service/MMSService.php

@@ -12,7 +12,7 @@ class MMSService
 {
     private V2LakalaApi $v2LakalaApi;
 
-    public function __construct(Config $config)
+    public function __construct(private Config $config)
     {
         $this->v2LakalaApi = new V2LakalaApi($config->getV2Config());
     }
@@ -50,6 +50,18 @@ class MMSService
         echo $response->getOriginalText();
     }
 
+    /**
+     * 附件上传
+     *
+     * @param string $orderNo
+     * @param UploadFileType $attType
+     * @param string $attExtName
+     * @param string $data
+     * @param string $orgCode
+     * @param string $version
+     *
+     * @link https://o.lakala.com/#/home/document/detail?id=90
+     */
     public function uploadFile(string $orderNo, UploadFileType $attType, string  $attExtName, string $data, string $orgCode = '1',  string $version = '1.0')
     {
         $request = new V2ModelRequest();

+ 78 - 0
src/Service/SACSService.php

@@ -0,0 +1,78 @@
+<?php
+declare(strict_types=1);
+namespace SixShop\Lakala\Service;
+
+use SixShop\Lakala\Config;
+use SixShop\Lakala\OpenAPISDK\V2\Api\V2LakalaApi;
+use SixShop\Lakala\OpenAPISDK\V3\Api\LakalaApi;
+use SixShop\Lakala\OpenAPISDK\V3\Model\ModelRequest;
+
+class SACSService
+{
+    private LakalaApi $lakalaApi;
+
+    public function __construct(private Config $config)
+    {
+        $this->lakalaApi = new LakalaApi($config->getV3Config());
+    }
+
+    /**
+     * 余额分账
+     *
+     * @link https://o.lakala.com/#/home/document/detail?id=489
+     */
+    public function balanceSeparate(array $reqData)
+    {
+        $request = new ModelRequest();
+        $request->setReqData($reqData);
+        $response = $this->lakalaApi->tradeApi('/api/v3/sacs/balanceSeparate', $request);
+        if ($response->getRespData()) {
+            print_r($response->getRespData());
+        } else {
+            print_r($response);
+        }
+        echo $response->getRetCode();
+
+        # 响应头信息
+        print_r($response->getHeaders());
+
+        # 响应原文
+        echo $response->getOriginalText();
+    }
+
+    /**
+     * 分账结果查询
+     *
+     * @param string $merchantNo 商户编号
+     * @param string $separateNo 分账单号
+     * @param string $outSeparateNo 商户系统分账单号
+     * @link https://o.lakala.com/#/home/document/detail?id=492
+     */
+    public function balanceSeparateQuery(string $merchantNo, string $separateNo = '', string $outSeparateNo = '')
+    {
+        $request = new ModelRequest();
+        $reqData = [
+            'merchant_no' => $merchantNo,
+        ];
+        if ($separateNo) {
+            $reqData['separate_no'] = $separateNo;
+        }
+        if ($outSeparateNo) {
+            $reqData['out_separate_no'] = $outSeparateNo;
+        }
+        $request->setReqData($reqData);
+        $response = $this->lakalaApi->tradeApi('/api/v3/sacs/balanceSeparateQuery', $request);
+        if ($response->getRespData()) {
+            print_r($response->getRespData());
+        } else {
+            print_r($response);
+        }
+        echo $response->getRetCode();
+
+        # 响应头信息
+        print_r($response->getHeaders());
+
+        # 响应原文
+        echo $response->getOriginalText();
+    }
+}