Explorar o código

feat(lakala): 新增商户分账信息查询功能

- 在 LedgerService 中实现 queryLedgerMer 方法用于查询商户分账信息
- 使用 V2ModelRequest 构造请求参数并调用 Lakala 开放接口
- 添加 NumberBizEnum 依赖以生成订单号
- 提供单元测试方法验证 queryLedgerMer 功能
- 处理接口返回数据及异常情况抛出逻辑异常
runphp hai 4 meses
pai
achega
fb92123c48
Modificáronse 2 ficheiros con 35 adicións e 0 borrados
  1. 27 0
      src/Service/LedgerService.php
  2. 8 0
      tests/Service/LedgerServiceTest.php

+ 27 - 0
src/Service/LedgerService.php

@@ -6,6 +6,7 @@ namespace SixShop\Lakala\Service;
 use SixShop\Lakala\Config;
 use SixShop\Lakala\OpenAPISDK\V2\Api\V2LakalaApi;
 use SixShop\Lakala\OpenAPISDK\V2\Model\V2ModelRequest;
+use SixShop\Payment\Enum\NumberBizEnum;
 use function SixShop\Core\throw_logic_exception;
 
 /**
@@ -147,4 +148,30 @@ class LedgerService
             );
         }
     }
+
+    /**
+     * 商户分账信息查询
+     *
+     * @link https://o.lakala.com/#/home/document/detail?id=381
+     */
+    public function queryLedgerMer(string $orgCode = '1', string $version = '1.0'):object
+    {
+        $request = new V2ModelRequest();
+        $request->setReqData([
+            'version' => $version,
+            'orderNo' => generate_number(NumberBizEnum::ORDER_NO, 5),
+            'orgCode' => $orgCode,
+            'merCupNo' => $this->config->merchant_no,
+        ]);
+        $response = $this->v2LakalaApi->tradeApi('/api/v2/mms/openApi/ledger/queryLedgerMer', $request);
+        if ($response->getRetCode() == '000000') {
+            return $response->getRespData();
+        } else {
+            throw_logic_exception(
+                msg:$response->getRetMsg(),
+                code: (int)$response->getRetCode(),
+                data: $response->getRespData(),
+            );
+        }
+    }
 }

+ 8 - 0
tests/Service/LedgerServiceTest.php

@@ -75,4 +75,12 @@ class LedgerServiceTest extends TestCase
 
         dump($response);
     }
+
+    #[Test]
+    public function queryLedgerMer():void
+    {
+        $response = $this->ledgerService->queryLedgerMer(orgCode: '903119',);
+        dump($response);
+    }
+
 }