ソースを参照

feat(lakala): 初始化拉卡拉支付扩展并配置证书支持
- 添加拉卡拉支付扩展基础结构和配置类
- 集成支付提供者接口实现支付功能框架
- 更新文档说明并添加证书文件支持
- 配置测试和生产环境网关地址
- 实现扩展配置表单和参数校验逻辑
- 添加拉卡拉支付扩展 README 文档

runphp 4 ヶ月 前
コミット
d6f3f0faea

+ 53 - 0
README.md

@@ -0,0 +1,53 @@
+# 拉卡拉支付扩展
+
+本扩展实现了与拉卡拉支付系统的集成,提供了小程序支付、分账以及提现等功能。
+
+## 功能概述
+
+### 1. 小程序拉卡拉收银台
+- 实现小程序内调用拉卡拉支付接口
+- 支持用户在小程序中完成支付操作
+- 处理支付回调通知,更新订单状态
+
+### 2. 用户分账信息申请和变更申请
+- 支持商户分账业务开通申请
+- 支持商户分账信息变更申请
+- 管理分账接收方信息(创建、变更、查询)
+- 支持分账关系绑定与解绑操作
+
+### 3. 用户提现(分账)申请
+- 实现用户余额提现功能
+- 支持账管家V2.0余额查询
+- 处理提现请求和结果查询
+- 支持提现结果通知处理
+
+### 4. 提现管理,分账资料管理
+- 提供后台管理界面用于审核提现申请
+- 管理分账相关资料和配置信息
+- 查看分账结果和提现状态
+- 支持分账撤销和回退操作
+
+## 接口文档
+
+### 交易接口
+参考 [交易接口文档](docs/交易接口.md)
+
+主要功能包括:
+- 主扫交易(小程序/公众号/静态码支付)
+- 交易查询
+- 退款处理
+- 退款查询
+- 交易异步通知处理
+
+### 余额分账
+参考 [余额分账文档](docs/余额分账.md)
+
+分账流程:
+1. 商户分账业务开通申请
+2. 创建分账接收方
+3. 分账关系绑定申请
+4. 账户余额查询(payType=03)
+5. 执行余额分账
+6. 账管家V2.0余额查询
+7. 账管家提现操作
+8. 提现结果查询和通知处理

+ 1 - 0
composer.json

@@ -10,6 +10,7 @@
   ],
   "require": {
     "php": ">=8.3",
+    "six-shop/payment": ">=v0.2.13 <1.0",
     "six-shop/core": ">=0.6 <1.0"
   },
   "authors": [

+ 226 - 3
config.php

@@ -1,5 +1,228 @@
 <?php
 // Lakala Payment Extension Configuration
-return [
-    // Add your configuration here
-];
+return json_decode(<<<'JSON'
+    [{
+    "type": "fcTitle",
+    "props": {
+        "title": "接入方配置信息",
+      "size": "H1"
+    },
+    "_fc_drag_tag": "fcTitle",
+    "_fc_id": "id_Fjeumh2zkilj145c",
+    "name": "ref_Fme4mh2zkilj146c",
+    "display": true,
+    "hidden": false
+  },
+  {
+      "type": "elAlert",
+    "props": {
+      "title": "配置说明",
+      "description": "请填写接入方与拉卡拉系统对接所需的配置信息,所有带*的字段为必填项",
+      "type": "info",
+      "effect": "light",
+      "closable": false
+    },
+    "_fc_drag_tag": "elAlert",
+    "_fc_id": "id_Fjqmmh2zkilj147c",
+    "name": "ref_F6j6mh2zkilj148c",
+    "display": true,
+    "hidden": false
+  },
+  {
+      "type": "elCard",
+    "props": {
+      "header": "基础配置信息"
+    },
+    "style": {
+      "width": "100%",
+      "marginBottom": "20px"
+    },
+    "children": [{
+      "type": "radio",
+        "field": "environment",
+        "title": "环境选择",
+        "props": {
+          "clearable": false
+        },
+        "options": [{
+          "label": "测试环境",
+            "value": "test"
+          },
+          {
+              "label": "生产环境",
+            "value": "product"
+          }
+        ],
+        "validate": [{
+          "required": true,
+          "message": "请选择环境",
+          "trigger": "change"
+        }],
+        "_fc_drag_tag": "radio",
+        "_fc_id": "id_Fenvironment_001",
+        "name": "ref_Fenvironment_001",
+        "value": "test",
+        "display": true,
+        "hidden": false
+      },
+      {
+          "type": "input",
+        "field": "appid",
+        "title": "接入方唯一编号(appid)",
+        "props": {
+          "placeholder": "请输入拉卡拉分配的接入方唯一编号",
+          "clearable": true,
+          "readonly": false
+        },
+        "validate": [{
+          "required": true,
+          "message": "请输入接入方唯一编号",
+          "trigger": "blur"
+        }],
+        "_fc_drag_tag": "input",
+        "_fc_id": "id_Fqcomh2zkilj149c",
+        "name": "ref_Fpawmh2zkilj14ac",
+        "value": "OP00000003",
+        "display": true,
+        "hidden": false
+      },
+      {
+          "type": "input",
+        "field": "serial_no",
+        "title": "证书序列号(serial_no)",
+        "props": {
+          "placeholder": "请输入接入方生成的cer证书序列号",
+          "clearable": true
+        },
+        "validate": [{
+          "required": true,
+          "message": "请输入证书序列号",
+          "trigger": "blur"
+        }],
+        "_fc_drag_tag": "input",
+        "_fc_id": "id_F4eimh2zkilj14bc",
+        "name": "ref_Fmj3mh2zkilj14cc",
+        "value": "00dfba8194c41b84cf",
+        "display": true,
+        "hidden": false
+      },
+      {
+          "type": "upload",
+        "field": "sign_cert",
+        "title": "加签证书",
+        "props": {
+          "action": "{{API_BASE_URL}}/admin/filesystem/file",
+          "name":"file",
+          "headers": {
+            "Authorization": "Bearer {{API_TOKEN}}"
+          },
+          "onSuccess": "$FNX:const res = $inject.args[0];\nconst file = $inject.args[1];\n\nfile.url = res.data.file_url;",
+          "multiple": false,
+          "accept": ".cer,.crt,.pem"
+        },
+        "_fc_drag_tag": "upload",
+        "_fc_id": "id_F9q8mh2zkilk14dc",
+        "name": "ref_Faihmh2zkilk14ec",
+        "display": true,
+        "hidden": false
+      },
+      {
+          "type": "input",
+        "field": "merchant_no",
+        "title": "商户号(merchant_no)",
+        "props": {
+          "placeholder": "请输入商户进件产生的商户号",
+          "clearable": true
+        },
+        "validate": [{
+          "required": true,
+          "message": "请输入商户号",
+          "trigger": "blur"
+        }],
+        "_fc_drag_tag": "input",
+        "_fc_id": "id_Fk3smh2zkilk14hc",
+        "name": "ref_F285mh2zkilk14ic",
+        "value": "822290059430BF9",
+        "display": true,
+        "hidden": false
+      },
+      {
+          "type": "input",
+        "field": "term_no",
+        "title": "终端号(term_no)",
+        "props": {
+          "placeholder": "请输入商户进件产生的终端号",
+          "clearable": true
+        },
+        "validate": [{
+          "required": true,
+          "message": "请输入终端号",
+          "trigger": "blur"
+        }],
+        "_fc_drag_tag": "input",
+        "_fc_id": "id_Fnjzmh2zkilk14jc",
+        "name": "ref_F2l4mh2zkilk14kc",
+        "value": "D9261076",
+        "display": true,
+        "hidden": false
+      },
+      {
+         "type": "upload",
+        "field": "verify_cert",
+        "title": "异步通知验签证书",
+        "props": {
+          "action": "{{API_BASE_URL}}/admin/filesystem/file",
+          "name":"file",
+          "headers": {
+            "Authorization": "Bearer {{API_TOKEN}}"
+          },
+          "onSuccess": "$FNX:const res = $inject.args[0];\nconst file = $inject.args[1];\n\nfile.url = res.data.file_url;",
+          "multiple": false,
+          "accept": ".cer,.crt,.pem"
+        },
+        "_fc_drag_tag": "upload",
+        "_fc_id": "id_F8rlmh2zkilk14pc",
+        "name": "ref_Fognmh2zkilk14qc",
+        "display": true,
+        "hidden": false
+      }
+    ],
+    "_fc_drag_tag": "elCard",
+    "_fc_id": "id_Fpcxmh2zkilk14fc",
+    "name": "ref_F8tcmh2zkilk14gc",
+    "display": true,
+    "hidden": false
+  },
+  {
+      "type": "elCard",
+    "props": {
+      "header": "说明信息"
+    },
+    "style": {
+      "width": "100%",
+      "marginBottom": "20px"
+    },
+    "children": [{
+      "type": "text",
+      "style": {
+          "whiteSpace": "pre-line",
+        "color": "#666",
+        "fontSize": "14px"
+      },
+      "children": [
+          "配置说明:\n• 接入方唯一编号(appid):拉卡拉分配的接入方标识\n• 证书序列号(serial_no):接入方生成的cer证书序列号\n• 加签证书:接入方生成的证书文件,用于请求签名\n• 商户号(merchant_no):商户进件时产生的唯一标识\n• 终端号(term_no):商户进件时分配的终端标识\n• 异步通知验签证书:拉卡拉分配的证书,用于验证异步通知签名\n• 环境选择:选择测试环境或生产环境,系统将使用对应的API地址"
+      ],
+      "_fc_drag_tag": "text",
+      "_fc_id": "id_Fsaamh2zkilk14vc",
+      "name": "ref_Fjplmh2zkilk14wc",
+      "display": true,
+      "hidden": false
+    }],
+    "_fc_drag_tag": "elCard",
+    "_fc_id": "id_Fg6amh2zkilk151c",
+    "name": "ref_Fqcvmh2zkilk152c",
+    "display": true,
+    "hidden": false
+  }
+]
+JSON, true);

+ 21 - 0
docs/V3商户测试私钥、公钥证书/OP00000003_cert.cer

@@ -0,0 +1,21 @@
+-----BEGIN CERTIFICATE-----
+MIIDYTCCAkmgAwIBAgIJAN+6gZTEG4TPMA0GCSqGSIb3DQEBCwUAMEkxCzAJBgNV
+BAYTAlVTMREwDwYDVQQIEwhzaGFuZ2hhaTERMA8GA1UEBxMIc2hhbmdoYWkxFDAS
+BgNVBAMUC2xha2FsYV8yMDIxMB4XDTIxMDYxODA3MjEzNFoXDTMxMDYxOTA3MjEz
+NFowSTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCHNoYW5naGFpMREwDwYDVQQHEwhz
+aGFuZ2hhaTEUMBIGA1UEAxQLbGFrYWxhXzIwMjEwggEiMA0GCSqGSIb3DQEBAQUA
+A4IBDwAwggEKAoIBAQDvDBZyHUDndAGxrIcsCV2njhNO3vCEZotTaWYSYwtDvkcA
+b1EjsBFabXZaKigpqFXk5XXNI3NIHP9M8XKzIgGvc65NpLAfRjVql8JiTvLyYd1g
+IUcOXMInabu+oX7dQSI1mS8XzqaoVRhDZQWhXcJW9bxMulgnzvk0Ggw07AjGF7si
++hP/Va8SJmN7EJwfQq6TpSxR+WdIHpbWdhZ+NHwitnQwAJTLBFvfk28INM39G7XO
+sXdVLfsooFdglVTOHpNuRiQAj9gShCCNrpGsNQxDiJIxE43qRsNsRwigyo6DPJk/
+klgDJa417E2wgP8VrwiXparO4FMzOGK15quuoD7DAgMBAAGjTDBKMAkGA1UdEwQC
+MAAwEQYJYIZIAYb4QgEBBAQDAgTwMAsGA1UdDwQEAwIFoDAdBgNVHSUEFjAUBggr
+BgEFBQcDAgYIKwYBBQUHAwEwDQYJKoZIhvcNAQELBQADggEBAI21YYAlH+Pc1ISv
+nbQrGqL8suGL0Hh/8hGaFfrJEJEKr9OeC8jElUhck2MTmfu/Y1lB7r8RBrhGPXi4
+kTXmB6ADs/9+ezNW3WXyFj7fhs3JcZ3mo33T9wyQySDKd//JrEtrTsc/s2PZ602y
+qNmPomXSzjrlugaMyC7LI9sR44mc7sQnchjHoxrQFD5/usTFW72UQfYCORsQWYMt
+0KKEyAcpRL51RE3xbX1WDtduFYGP62PbwLAn2nCL/j1wlF5hltWj7sditWqKgso5
+F8BTffn2Bb0RdsNxqwMy1cTPrWLeXVOqMDu3ge7hvoav8lZKTjk5Kmqhs7wNAQXK
+mg9qSwo=
+-----END CERTIFICATE-----

+ 28 - 0
docs/V3商户测试私钥、公钥证书/OP00000003_private_key.pem

@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDvDBZyHUDndAGx
+rIcsCV2njhNO3vCEZotTaWYSYwtDvkcAb1EjsBFabXZaKigpqFXk5XXNI3NIHP9M
+8XKzIgGvc65NpLAfRjVql8JiTvLyYd1gIUcOXMInabu+oX7dQSI1mS8XzqaoVRhD
+ZQWhXcJW9bxMulgnzvk0Ggw07AjGF7si+hP/Va8SJmN7EJwfQq6TpSxR+WdIHpbW
+dhZ+NHwitnQwAJTLBFvfk28INM39G7XOsXdVLfsooFdglVTOHpNuRiQAj9gShCCN
+rpGsNQxDiJIxE43qRsNsRwigyo6DPJk/klgDJa417E2wgP8VrwiXparO4FMzOGK1
+5quuoD7DAgMBAAECggEBANhmWOt1EAx3OBFf3f4/fEjylQgRSiqRqg8Ymw6KGuh4
+mE4Md6eW/B6geUOmZjVP7nIIR1wte28M0REWgn8nid8LGf+v1sB5DmIwgAf+8G/7
+qCwd8/VMg3aqgQtRp0ckb5OV2Mv0h2pbnltkWHR8LDIMwymyh5uCApbn/aTrCAZK
+NXcPOyAn9tM8Bu3FHk3Pf24Er3SN+bnGxgpzDrFjsDSHjDFT9UMIc2WdA3tuMv9X
+3DDn0bRCsHnsIw3WrwY6HQ8mumdbURk+2Ey3eRFfMYxyS96kOgBC2hqZOlDwVPAK
+TPtS4hoq+cQ0sRaJQ4T0UALJrBVHa+EESgRaTvrXqAECgYEA+WKmy9hcvp6IWZlk
+9Q1JZ+dgIVxrO65zylK2FnD1/vcTx2JMn73WKtQb6vdvTuk+Ruv9hY9PEsf7S8gH
+STTmzHOUgo5x0F8yCxXFnfji2juoUnDdpkjtQK5KySDcpQb5kcCJWEVi9v+zObM0
+Zr1Nu5/NreE8EqUl3+7MtHOu1TMCgYEA9WM9P6m4frHPW7h4gs/GISA9LuOdtjLv
+AtgCK4cW2mhtGNAMttD8zOBQrRuafcbFAyU9de6nhGwetOhkW9YSV+xRNa7HWTeI
+RgXJuJBrluq5e1QGTIwZU/GujpNaR4Qiu0B8TodM/FME7htsyxjmCwEfT6SDYlke
+MzTbMa9Q0DECgYBqsR/2+dvD2YMwAgZFKKgNAdoIq8dcwyfamUQ5mZ5EtGQL2yw4
+8zibHh/LiIxgUD1Kjk/qQgNsX45NP4iOc0mCkrgomtRqdy+rumbPTNmQ0BEVJCBP
+scd+8pIgNiTvnWpMRvj7gMP0NDTzLI3wnnCRIq8WAtR2jZ0Ejt+ZHBziLQKBgQDi
+bEe/zqNmhDuJrpXEXmO7fTv3YB/OVwEj5p1Z/LSho2nHU3Hn3r7lbLYEhUvwctCn
+Ll2fzC7Wic1rsGOqOcWDS5NDrZpUQGGF+yE/JEOiZcPwgH+vcjaMtp0TAfRzuQEz
+NzV8YGwxB4mtC7E/ViIuVULHAk4ZGZI8PbFkDxjKgQKBgG8jEuLTI1tsP3kyaF3j
+Aylnw7SkBc4gfe9knsYlw44YlrDSKr8AOp/zSgwvMYvqT+fygaJ3yf9uIBdrIilq
+CHKXccZ9uA/bT5JfIi6jbg3EoE9YhB0+1aGAS1O2dBvUiD8tJ+BjAT4OB0UDpmM6
+QsFLQgFyXgvDnzr/o+hQJelW
+-----END PRIVATE KEY-----

+ 25 - 0
docs/lkl-apigw-v2.cer

@@ -0,0 +1,25 @@
+-----BEGIN CERTIFICATE-----
+MIIEMTCCAxmgAwIBAgIGAXRTgcMnMA0GCSqGSIb3DQEBCwUAMHYxCzAJBgNVBAYT
+AkNOMRAwDgYDVQQIDAdCZWlKaW5nMRAwDgYDVQQHDAdCZWlKaW5nMRcwFQYDVQQK
+DA5MYWthbGEgQ28uLEx0ZDEqMCgGA1UEAwwhTGFrYWxhIE9yZ2FuaXphdGlvbiBW
+YWxpZGF0aW9uIENBMB4XDTIwMTAxMDA1MjQxNFoXDTMwMTAwODA1MjQxNFowZTEL
+MAkGA1UEBhMCQ04xEDAOBgNVBAgMB0JlaUppbmcxEDAOBgNVBAcMB0JlaUppbmcx
+FzAVBgNVBAoMDkxha2FsYSBDby4sTHRkMRkwFwYDVQQDDBBBUElHVy5MQUtBTEEu
+Q09NMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt1zHL54HiI8d2sLJ
+lwoQji3/ln0nsvfZ/XVpOjuB+1YR6/0LdxEDMC/hxI6iH2Rm5MjwWz3dmN/6BZeI
+gwGeTOWJUZFARo8UduKrlhC6gWMRpAiiGC8wA8stikc5gYB+UeFVZi/aJ0WN0cpP
+JYCvPBhxhMvhVDnd4hNohnR1L7k0ypuWg0YwGjC25FaNAEFBYP9EYUyCJjE//9Z7
+sMzHR9SJYCqqo6r9bOH9G6sWKuEp+osuAh+kJIxJMHfipw7w3tEcWG0hce9u/el4
+cYJtg8/PPMVoccKmeCzMvarr7jdKP4lenJbtwlgyfs+JgNu60KMUJH8RS72wC9NY
+uFz09wIDAQABo4HVMIHSMIGSBgNVHSMEgYowgYeAFCnH4DkZPR6CZxRn/kIqVsMo
+dJHpoWekZTBjMQswCQYDVQQGEwJDTjEQMA4GA1UECAwHQmVpSmluZzEQMA4GA1UE
+BwwHQmVpSmluZzEXMBUGA1UECgwOTGFrYWxhIENvLixMdGQxFzAVBgNVBAMMDkxh
+a2FsYSBSb290IENBggYBaiUALIowHQYDVR0OBBYEFJ2Kx9YZfmWpkKFnC33C0r5D
+K3rFMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMA0GCSqGSIb3DQEBCwUA
+A4IBAQBZoeU0XyH9O0LGF9R+JyGwfU/O5amoB97VeM+5n9v2z8OCiIJ8eXVGKN9L
+tl9QkpTEanYwK30KkpHcJP1xfVkhPi/cCMgfTWQ5eKYC7Zm16zk7n4CP6IIgZIqm
+TVGsIGKk8RzWseyWPB3lfqMDR52V1tdA1S8lJ7a2Xnpt5M2jkDXoArl3SVSwCb4D
+AmThYhak48M++fUJNYII9JBGRdRGbfJ2GSFdPXgesUL2CwlReQwbW4GZkYGOg9LK
+CNPK6XShlNdvgPv0CCR08KCYRwC3HZ0y1F0NjaKzYdGNPrvOq9lA495ONZCvzYDo
+gmsu/kd6eqxTs/JwdaIYr4sCMg8Z
+-----END CERTIFICATE-----

+ 14 - 14
docs/交易接口.md

@@ -1,21 +1,21 @@
 ## **拉卡拉接入介绍文档**
 
-|     |     |     |     |
-| --- | --- | --- | --- |
-| **参数名** |     | **测试参数** | **正式参数** |
-| 接入方唯一编号(appid) |     | OP00000003 | 拉卡拉分配 |
-| 证书序列号(serial_no) |     | 00dfba8194c41b84cf | 接入方生成的cer证书序列号 |
-| 加签证书 |     | [点击右键打开超链接](https://lkl-zf-public-bs-lama-test.oss-cn-shanghai.aliyuncs.com/merchantKey/V3/V3%E5%95%86%E6%88%B7%E6%B5%8B%E8%AF%95%E7%A7%81%E9%92%A5%E3%80%81%E5%85%AC%E9%92%A5%E8%AF%81%E4%B9%A6.zip) | 接入方生成 |
-| 商户号(merchant_no) |     | 822290059430BF9 | 商户进件产生 |
-| 终端号(term_no) |     | D9261076 | 商户进件产生 |
-| 异步通知验签证书 |     | [点击右键打开超链接](https://lkl-zf-public-bs-lama-test.oss-cn-shanghai.aliyuncs.com/merchantKey/LKL/lkl-apigw-v2.cer) | 拉卡拉分配 |
-|     |     |     |     |
-| **接口类型** | **接口名称** | **接口描述** | **接口文档地址** |
-| 开放平台SDK | Java SDK | 推荐使用SDK接入,集成加签验签及证书配置 | https://o.lakala.com/#/home/document/detail?id=682 |
-| 接入说明 | 接入规范 | 接入加签流程 | https://o.lakala.com/#/home/document/detail?id=33 |
+|     |     |                                                |     |
+| --- | --- |------------------------------------------------| --- |
+| **参数名** |     | **测试参数**                                       | **正式参数** |
+| 接入方唯一编号(appid) |     | OP00000003                                     | 拉卡拉分配 |
+| 证书序列号(serial_no) |     | 00dfba8194c41b84cf                             | 接入方生成的cer证书序列号 |
+| 加签证书 |     | [V3商户测试私钥、公钥证书](./V3商户测试私钥、公钥证书)           | 接入方生成 |
+| 商户号(merchant_no) |     | 822290059430BF9                                | 商户进件产生 |
+| 终端号(term_no) |     | D9261076                                       | 商户进件产生 |
+| 异步通知验签证书 |     | [lkl-apigw-v2.cer](./lkl-apigw-v2.cer)                | 拉卡拉分配 |
+|     |     |                                                |     |
+| **接口类型** | **接口名称** | **接口描述**                                       | **接口文档地址** |
+| 开放平台SDK | Java SDK | 推荐使用SDK接入,集成加签验签及证书配置                          | https://o.lakala.com/#/home/document/detail?id=682 |
+| 接入说明 | 接入规范 | 接入加签流程                                         | https://o.lakala.com/#/home/document/detail?id=33 |
 | 通知规范 | 交易后进行通知验签流程 | https://o.lakala.com/#/home/document/detail?id=36 |
 | 证书及demo | 参考demo | https://o.lakala.com/#/home/document/detail?id=37 |
-| 交易接口 | 主扫交易 | 小程序/公众号/静态码支付 | https://o.lakala.com/#/home/document/detail?id=110 |
+| 交易接口 | 主扫交易 | 小程序/公众号/静态码支付                                  | https://o.lakala.com/#/home/document/detail?id=110 |
 | 查询交易 |     | https://o.lakala.com/#/home/document/detail?id=116 |
 | 通用退款 | 支持全额退款/部分退款 | https://o.lakala.com/#/home/document/detail?id=892 |
 | 退款查询 | 支持全额退款/部分退款 | https://o.lakala.com/#/home/document/detail?id=893 |

+ 26 - 0
src/Config.php

@@ -0,0 +1,26 @@
+<?php
+
+namespace SixShop\Lakala;
+
+use SixDec\Xlpay\Extension;
+use SixShop\System\Trait\ConfigTrait;
+
+class Config
+{
+    use ConfigTrait;
+
+    public function getExtensionID(): string
+    {
+        return Extension::EXTENSION_ID;
+    }
+
+    protected function getOptions(): array
+    {
+        return [
+            'gateway' => [
+                'product' => 'https://s2.lakala.com', // 生产网关地址
+                'test' => 'https://test.wsmsd.cn/sit',
+            ],
+        ];
+    }
+}

+ 10 - 1
src/Extension.php

@@ -4,14 +4,23 @@ declare(strict_types=1);
 namespace SixShop\Lakala;
 
 use SixShop\Core\ExtensionAbstract;
+use SixShop\Payment\Contracts\PaymentExtensionInterface;
+use SixShop\Payment\Contracts\PaymentProviderInterface;
 
 /**
  * Lakala Payment Extension
  */
-class Extension extends ExtensionAbstract
+class Extension extends ExtensionAbstract implements PaymentExtensionInterface
 {
+    public const string EXTENSION_ID = 'lakala';
+
     protected function getBaseDir(): string
     {
         return dirname(__DIR__);
     }
+
+    public function getPaymentProvider(): PaymentProviderInterface
+    {
+
+    }
 }

+ 40 - 0
src/PaymentProvider.php

@@ -0,0 +1,40 @@
+<?php
+declare(strict_types=1);
+
+namespace SixShop\Lakala;
+
+use SixShop\Payment\Contracts\PaymentNotifyResult;
+use SixShop\Payment\Contracts\PaymentProviderInterface;
+use SixShop\Payment\Contracts\PaymentQueryResult;
+use SixShop\Payment\Contracts\PaymentRefundRequest;
+use SixShop\Payment\Contracts\PaymentRefundResult;
+use SixShop\Payment\Contracts\PaymentResponse;
+use SixShop\Payment\Enum\PaymentBizEnum;
+
+class PaymentProvider implements PaymentProviderInterface
+{
+    #[\Override] public function create(array $order, PaymentBizEnum $bizType): PaymentResponse
+    {
+        throw new \Exception('Not implemented');
+    }
+
+    #[\Override] public function notify(array $request): PaymentNotifyResult
+    {
+        throw new \Exception('Not implemented');
+    }
+
+    #[\Override] public function query(int $recordID): PaymentQueryResult
+    {
+        throw new \Exception('Not implemented');
+    }
+
+    #[\Override] public function refund(int $recordID, PaymentRefundRequest $param): PaymentRefundResult
+    {
+        throw new \Exception('Not implemented');
+    }
+
+    #[\Override] public function refundQuery(int $refundID): PaymentRefundResult
+    {
+        throw new \Exception('Not implemented');
+    }
+}