Przeglądaj źródła

feat(lakala): 新增分账接收方字段及支付钩子支持

- 修改数据库迁移文件,统一使用 limit 替代 size 参数
- 增加 org_id、org_name 和 receiver_no 字段用于扩展信息存储
- 新建 LakalaHook 类实现支付信息服务上报功能
- 在 Extension 中注册新增的钩子类以启用事件监听
runphp 4 miesięcy temu
rodzic
commit
322c564bec

+ 16 - 13
database/migrations/20251109121623_profit_share_receiver.php

@@ -21,19 +21,22 @@ final class ProfitShareReceiver extends AbstractMigration
     {
         $this->table('profit_share_receivers', ['comment' => '分账接收方'])
             ->addColumn('user_id', 'integer', ['null' => false, 'signed' => false, 'comment' => '用户ID'])
-            ->addColumn('order_no', 'string', ['null' => false, 'size' => 22, 'comment' => '订单编号'])
-            ->addColumn('org_code', 'string', ['null' => false, 'size' => 32, 'comment' => '机构编号'])
-            ->addColumn('receiver_name', 'string', ['null' => false, 'size' => 64, 'comment' => '分账接收方名称'])
-            ->addColumn('contact_mobile', 'string', ['null' => false, 'size' => 16, 'comment' => '联系手机号'])
-            ->addColumn('acct_no', 'string', ['null' => false, 'size' => 32, 'comment' => '收款账户卡号'])
-            ->addColumn('acct_name', 'string', ['null' => false, 'size' => 32, 'comment' => '收款账户名称'])
-            ->addColumn('acct_type_code', 'string', ['null' => false, 'size' => 32, 'default' => '58', 'comment' => '收款账户账户类型(57:对公 58:对私)'])
-            ->addColumn('acct_certificate_type', 'string', ['null' => false, 'size' => 32, 'default' => '17', 'comment' => '收款账户证件类型 17 身份证,18 护照,19 港澳居民来往内地通行证 20 台湾居民来往内地通行证'])
-            ->addColumn('acct_certificate_no', 'string', ['null' => false, 'size' => 32, 'comment' => '收款账户证件号'])
-            ->addColumn('acct_open_bank_code', 'string', ['null' => false, 'size' => 32, 'comment' => '收款账户开户行号'])
-            ->addColumn('acct_open_bank_name', 'string', ['null' => false, 'size' => 64, 'comment' => '收款账户开户行名称'])
-            ->addColumn('acct_clear_bank_code', 'string', ['null' => false, 'size' => 32, 'comment' => '收款账户清算行行号'])
-            ->addColumn('settle_type', 'string', ['null' => true, 'size' => 32, 'default' => '01', 'comment' => '提款类型 01:主动提款 03:交易自动结算'])
+            ->addColumn('order_no', 'string', ['null' => false, 'limit' => 22, 'comment' => '订单编号'])
+            ->addColumn('org_code', 'string', ['null' => false, 'limit' => 32, 'comment' => '机构编号'])
+            ->addColumn('receiver_name', 'string', ['null' => false, 'limit' => 64, 'comment' => '分账接收方名称'])
+            ->addColumn('contact_mobile', 'string', ['null' => false, 'limit' => 16, 'comment' => '联系手机号'])
+            ->addColumn('acct_no', 'string', ['null' => false, 'limit' => 32, 'comment' => '收款账户卡号'])
+            ->addColumn('acct_name', 'string', ['null' => false, 'limit' => 32, 'comment' => '收款账户名称'])
+            ->addColumn('acct_type_code', 'string', ['null' => false, 'limit' => 32, 'default' => '58', 'comment' => '收款账户账户类型(57:对公 58:对私)'])
+            ->addColumn('acct_certificate_type', 'string', ['null' => false, 'limit' => 32, 'default' => '17', 'comment' => '收款账户证件类型 17 身份证,18 护照,19 港澳居民来往内地通行证 20 台湾居民来往内地通行证'])
+            ->addColumn('acct_certificate_no', 'string', ['null' => false, 'limit' => 32, 'comment' => '收款账户证件号'])
+            ->addColumn('acct_open_bank_code', 'string', ['null' => false, 'limit' => 32, 'comment' => '收款账户开户行号'])
+            ->addColumn('acct_open_bank_name', 'string', ['null' => false, 'limit' => 64, 'comment' => '收款账户开户行名称'])
+            ->addColumn('acct_clear_bank_code', 'string', ['null' => false, 'limit' => 32, 'comment' => '收款账户清算行行号'])
+            ->addColumn('settle_type', 'string', ['null' => false, 'limit' => 32, 'default' => '01', 'comment' => '提款类型 01:主动提款 03:交易自动结算'])
+            ->addColumn('org_id', 'string', ['null' => true, 'limit' => 32,  'comment' => '接收方所属机构'])
+            ->addColumn('org_name', 'string', ['null' => true, 'limit' => 32, 'comment' => '接收方所属机构名称'])
+            ->addColumn('receiver_no', 'string', ['null' => true, 'limit' => 32, 'comment' => '接收方编号'])
             ->addTimestamps('create_time', 'update_time')
             ->create();
     }

+ 8 - 0
src/Extension.php

@@ -4,6 +4,7 @@ declare(strict_types=1);
 namespace SixShop\Lakala;
 
 use SixShop\Core\ExtensionAbstract;
+use SixShop\Lakala\Hook\LakalaHook;
 use SixShop\Payment\Contracts\PaymentExtensionInterface;
 use SixShop\Payment\Contracts\PaymentProviderInterface;
 
@@ -23,4 +24,11 @@ class Extension extends ExtensionAbstract implements PaymentExtensionInterface
     {
         return app(PaymentProvider::class);
     }
+
+    public function getHooks(): array
+    {
+        return [
+            LakalaHook::class
+        ];
+    }
 }

+ 24 - 0
src/Hook/LakalaHook.php

@@ -0,0 +1,24 @@
+<?php
+declare(strict_types=1);
+namespace SixShop\Lakala\Hook;
+
+use app\model\User;
+use SixShop\Core\Attribute\Hook;
+use SixShop\Payment\Event\GatheringPaymentEvent;
+use SixShop\Payment\PaymentInfo;
+
+class LakalaHook
+{
+    /**
+     * 上报提供的支付服务信息
+     */
+    #[Hook(GatheringPaymentEvent::class)]
+    public function paymentInfoSubmission(GatheringPaymentEvent $event): PaymentInfo
+    {
+        return new PaymentInfo(
+            'lakala',
+            '拉卡拉',
+            '拉卡拉'
+        );
+    }
+}