feat(payment): PR #538 支付FM插件 - 合并 Danborad 的支付插件实现
This commit is contained in:
commit
dc62109d0d
26 files changed
+722
-22
No files matched your search
@@ -3,7 +3,7 @@ set -eu
|
||||
|
||||
root_dir=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
|
||||
repo_dir=$(CDPATH= cd -- "$root_dir/.." && pwd)
|
||||
payment_plugins="official-payment-wechat-native official-payment-alipay-page official-payment-xunhupay"
|
||||
payment_plugins="official-payment-wechat-native official-payment-alipay-page official-payment-xunhupay official-payment-zhifufm"
|
||||
payments_only=false
|
||||
default_payment_targets="linux/amd64 linux/arm64 darwin/amd64 darwin/arm64 windows/amd64 windows/arm64"
|
||||
|
||||
@@ -118,6 +118,7 @@ for target in $payment_targets; do
|
||||
build_payment_provider official-payment-wechat-native ./cmd/payment-wechat "$target_goos" "$target_goarch"
|
||||
build_payment_provider official-payment-alipay-page ./cmd/payment-alipay "$target_goos" "$target_goarch"
|
||||
build_payment_provider official-payment-xunhupay ./cmd/payment-xunhupay "$target_goos" "$target_goarch"
|
||||
build_payment_provider official-payment-zhifufm ./cmd/payment-zhifufm "$target_goos" "$target_goarch"
|
||||
done
|
||||
|
||||
package_plugin() {
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,11 @@
|
||||
# 支付FM 聚合支付插件
|
||||
|
||||
支持对接支付FM免签个人收款码与签约支付通道,支持支付宝/微信扫码及收银台跳转。
|
||||
|
||||
### 插件配置参数
|
||||
- **服务器公网地址**: 本站对外公网地址,用于接收 `notifyUrl` 异步回调通知。
|
||||
- **商户号 (merchantNum)**: 支付FM商户后台【用户中心】查看的商户号。
|
||||
- **接入密钥 (secretKey)**: 支付FM商户后台【用户中心】查看的接口接入密钥。
|
||||
- **接口根地址**: 支付FM后台显示的专属根地址,例如 `https://api-5a0zvlcbi80.zhifu.fm.it88168.com/api`。
|
||||
- **默认支付通道 (payType)**: 推荐使用 `aloop` / `tloop` 或 `alipay` / `wechat`。
|
||||
- **收银方式**: 默认为 `redirect` 跳转模式。
|
||||
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" width="256" height="256">
|
||||
<image href="data:image/png;base64,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 truncated
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 19 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,119 @@
|
||||
# 支付FM 接口协议说明
|
||||
|
||||
遵循 `yingce.payment/v1` 标准,自动转换影策系统订单至支付FM `/startOrder` 接口,并在收到通知时按 MD5 规则完成异步验签。
|
||||
|
||||
<!-- YINGCE_MANIFEST_CONTRACT_START -->
|
||||
## Manifest 完整接口定义
|
||||
|
||||
以下 JSON 与插件包内实际 `manifest.json` 逐字段一致,覆盖插件身份、权限、配置、鉴权、参数、校验、创建、Agent、查询、取消、结果下载、响应和 Agent 响应映射。`documentation` 字段的值就是当前完整文档;为避免文档在自身内部无限递归,JSON 中仅用等义占位文本表示正文。
|
||||
|
||||
```json
|
||||
{
|
||||
"apiVersion": "yingce.plugin/v1",
|
||||
"id": "official-payment-zhifufm",
|
||||
"name": "支付FM",
|
||||
"version": "1.0.0",
|
||||
"author": "支付FM",
|
||||
"description": "支付FM个人免签/签约聚合支付适配器,支持微信/支付宝扫码或收银台跳转。",
|
||||
"enabled": true,
|
||||
"installable": true,
|
||||
"runtime": {
|
||||
"backend": "rpc",
|
||||
"backendEntry": "backend/provider"
|
||||
},
|
||||
"surfaces": [
|
||||
"wallet",
|
||||
"settings"
|
||||
],
|
||||
"permissions": [
|
||||
"payment.create",
|
||||
"payment.query",
|
||||
"payment.close",
|
||||
"payment.reconcile"
|
||||
],
|
||||
"configuration": {
|
||||
"fields": [
|
||||
{
|
||||
"name": "publicBaseUrl",
|
||||
"type": "url",
|
||||
"label": "服务器公网地址",
|
||||
"required": true,
|
||||
"description": "用于生成异步通知 notifyUrl 地址,必须可被支付FM外网服务器访问回调。"
|
||||
},
|
||||
{
|
||||
"name": "merchantNum",
|
||||
"type": "string",
|
||||
"label": "商户号 (merchantNum)",
|
||||
"required": true,
|
||||
"description": "支付FM商户后台【用户中心】查看的商户号(8-18位数字)。"
|
||||
},
|
||||
{
|
||||
"name": "secretKey",
|
||||
"type": "password",
|
||||
"label": "接入密钥 (secretKey)",
|
||||
"required": true,
|
||||
"secret": true,
|
||||
"description": "支付FM商户后台【用户中心】查看的接口接入密钥。"
|
||||
},
|
||||
{
|
||||
"name": "gateway",
|
||||
"type": "url",
|
||||
"label": "接口根地址",
|
||||
"required": true,
|
||||
"default": "https://api-5a0zvlcbi80.zhifu.fm.it88168.com/api",
|
||||
"description": "支付FM分配的接口根地址,如 https://api-5a0zvlcbi80.zhifu.fm.it88168.com/api。"
|
||||
},
|
||||
{
|
||||
"name": "payType",
|
||||
"type": "string",
|
||||
"label": "默认支付通道 (payType)",
|
||||
"required": false,
|
||||
"default": "alipay",
|
||||
"description": "支付产品通道:alipay(支付宝)、wechat(微信)、aloop(支付宝轮询池)、tloop(微信轮询池)等。"
|
||||
},
|
||||
{
|
||||
"name": "checkoutMode",
|
||||
"type": "string",
|
||||
"label": "收银方式",
|
||||
"required": false,
|
||||
"default": "redirect",
|
||||
"values": [
|
||||
"redirect",
|
||||
"qr_code"
|
||||
],
|
||||
"description": "redirect 跳转支付FM收银页;qr_code 在钱包中直接将 payUrl 渲染为二维码扫码。"
|
||||
}
|
||||
]
|
||||
},
|
||||
"contributes": {
|
||||
"paymentProviders": [
|
||||
{
|
||||
"id": "zhifufm-pay",
|
||||
"label": "支付FM",
|
||||
"icon": "assets/icon.svg",
|
||||
"checkoutMode": "redirect",
|
||||
"identityFields": [
|
||||
"merchantNum"
|
||||
],
|
||||
"expiryPolicy": {
|
||||
"defaultMinutes": 10,
|
||||
"minMinutes": 3,
|
||||
"maxMinutes": 15
|
||||
},
|
||||
"notificationSuccess": {
|
||||
"status": 200,
|
||||
"contentType": "text/plain; charset=utf-8",
|
||||
"body": "success"
|
||||
},
|
||||
"notificationFailure": {
|
||||
"status": 400,
|
||||
"contentType": "text/plain; charset=utf-8",
|
||||
"body": "fail"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"documentation": "<当前插件的完整 documentation,由 README.md 与 docs/interface.md 拼接而成;为避免 JSON 递归,此处不重复展开正文。>"
|
||||
}
|
||||
```
|
||||
<!-- YINGCE_MANIFEST_CONTRACT_END -->
|
||||
@@ -0,0 +1,107 @@
|
||||
{
|
||||
"apiVersion": "yingce.plugin/v1",
|
||||
"id": "official-payment-zhifufm",
|
||||
"name": "支付FM",
|
||||
"version": "1.0.0",
|
||||
"author": "支付FM",
|
||||
"description": "支付FM个人免签/签约聚合支付适配器,支持微信/支付宝扫码或收银台跳转。",
|
||||
"enabled": true,
|
||||
"installable": true,
|
||||
"runtime": {
|
||||
"backend": "rpc",
|
||||
"backendEntry": "backend/provider"
|
||||
},
|
||||
"surfaces": [
|
||||
"wallet",
|
||||
"settings"
|
||||
],
|
||||
"permissions": [
|
||||
"payment.create",
|
||||
"payment.query",
|
||||
"payment.close",
|
||||
"payment.reconcile"
|
||||
],
|
||||
"configuration": {
|
||||
"fields": [
|
||||
{
|
||||
"name": "publicBaseUrl",
|
||||
"type": "url",
|
||||
"label": "服务器公网地址",
|
||||
"required": true,
|
||||
"description": "用于生成异步通知 notifyUrl 地址,必须可被支付FM外网服务器访问回调。"
|
||||
},
|
||||
{
|
||||
"name": "merchantNum",
|
||||
"type": "string",
|
||||
"label": "商户号 (merchantNum)",
|
||||
"required": true,
|
||||
"description": "支付FM商户后台【用户中心】查看的商户号(8-18位数字)。"
|
||||
},
|
||||
{
|
||||
"name": "secretKey",
|
||||
"type": "password",
|
||||
"label": "接入密钥 (secretKey)",
|
||||
"required": true,
|
||||
"secret": true,
|
||||
"description": "支付FM商户后台【用户中心】查看的接口接入密钥。"
|
||||
},
|
||||
{
|
||||
"name": "gateway",
|
||||
"type": "url",
|
||||
"label": "接口根地址",
|
||||
"required": true,
|
||||
"default": "https://api-5a0zvlcbi80.zhifu.fm.it88168.com/api",
|
||||
"description": "支付FM分配的接口根地址,如 https://api-5a0zvlcbi80.zhifu.fm.it88168.com/api。"
|
||||
},
|
||||
{
|
||||
"name": "payType",
|
||||
"type": "string",
|
||||
"label": "默认支付通道 (payType)",
|
||||
"required": false,
|
||||
"default": "alipay",
|
||||
"description": "支付产品通道:alipay(支付宝)、wechat(微信)、aloop(支付宝轮询池)、tloop(微信轮询池)等。"
|
||||
},
|
||||
{
|
||||
"name": "checkoutMode",
|
||||
"type": "string",
|
||||
"label": "收银方式",
|
||||
"required": false,
|
||||
"default": "redirect",
|
||||
"values": [
|
||||
"redirect",
|
||||
"qr_code"
|
||||
],
|
||||
"description": "redirect 跳转支付FM收银页;qr_code 在钱包中直接将 payUrl 渲染为二维码扫码。"
|
||||
}
|
||||
]
|
||||
},
|
||||
"contributes": {
|
||||
"paymentProviders": [
|
||||
{
|
||||
"id": "zhifufm-pay",
|
||||
"label": "支付FM",
|
||||
"icon": "assets/icon.svg",
|
||||
"checkoutMode": "redirect",
|
||||
"identityFields": [
|
||||
"merchantNum"
|
||||
],
|
||||
"expiryPolicy": {
|
||||
"defaultMinutes": 10,
|
||||
"minMinutes": 3,
|
||||
"maxMinutes": 15
|
||||
},
|
||||
"notificationSuccess": {
|
||||
"status": 200,
|
||||
"contentType": "text/plain; charset=utf-8",
|
||||
"body": "success"
|
||||
},
|
||||
"notificationFailure": {
|
||||
"status": 400,
|
||||
"contentType": "text/plain; charset=utf-8",
|
||||
"body": "fail"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"documentation": "# 支付FM 聚合支付插件\n\n支持对接支付FM免签个人收款码与签约支付通道,支持支付宝/微信扫码及收银台跳转。\n\n### 插件配置参数\n- **服务器公网地址**: 本站对外公网地址,用于接收 `notifyUrl` 异步回调通知。\n- **商户号 (merchantNum)**: 支付FM商户后台【用户中心】查看的商户号。\n- **接入密钥 (secretKey)**: 支付FM商户后台【用户中心】查看的接口接入密钥。\n- **接口根地址**: 支付FM后台显示的专属根地址,例如 `https://api-5a0zvlcbi80.zhifu.fm.it88168.com/api`。\n- **默认支付通道 (payType)**: 推荐使用 `aloop` / `tloop` 或 `alipay` / `wechat`。\n- **收银方式**: 默认为 `redirect` 跳转模式。\n\n---\n\n# 支付FM 接口协议说明\n\n遵循 `yingce.payment/v1` 标准,自动转换影策系统订单至支付FM `/startOrder` 接口,并在收到通知时按 MD5 规则完成异步验签。\n\n<!-- YINGCE_MANIFEST_CONTRACT_START -->\n## Manifest 完整接口定义\n\n以下 JSON 与插件包内实际 `manifest.json` 逐字段一致,覆盖插件身份、权限、配置、鉴权、参数、校验、创建、Agent、查询、取消、结果下载、响应和 Agent 响应映射。`documentation` 字段的值就是当前完整文档;为避免文档在自身内部无限递归,JSON 中仅用等义占位文本表示正文。\n\n```json\n{\n \"apiVersion\": \"yingce.plugin/v1\",\n \"id\": \"official-payment-zhifufm\",\n \"name\": \"支付FM\",\n \"version\": \"1.0.0\",\n \"author\": \"支付FM\",\n \"description\": \"支付FM个人免签/签约聚合支付适配器,支持微信/支付宝扫码或收银台跳转。\",\n \"enabled\": true,\n \"installable\": true,\n \"runtime\": {\n \"backend\": \"rpc\",\n \"backendEntry\": \"backend/provider\"\n },\n \"surfaces\": [\n \"wallet\",\n \"settings\"\n ],\n \"permissions\": [\n \"payment.create\",\n \"payment.query\",\n \"payment.close\",\n \"payment.reconcile\"\n ],\n \"configuration\": {\n \"fields\": [\n {\n \"name\": \"publicBaseUrl\",\n \"type\": \"url\",\n \"label\": \"服务器公网地址\",\n \"required\": true,\n \"description\": \"用于生成异步通知 notifyUrl 地址,必须可被支付FM外网服务器访问回调。\"\n },\n {\n \"name\": \"merchantNum\",\n \"type\": \"string\",\n \"label\": \"商户号 (merchantNum)\",\n \"required\": true,\n \"description\": \"支付FM商户后台【用户中心】查看的商户号(8-18位数字)。\"\n },\n {\n \"name\": \"secretKey\",\n \"type\": \"password\",\n \"label\": \"接入密钥 (secretKey)\",\n \"required\": true,\n \"secret\": true,\n \"description\": \"支付FM商户后台【用户中心】查看的接口接入密钥。\"\n },\n {\n \"name\": \"gateway\",\n \"type\": \"url\",\n \"label\": \"接口根地址\",\n \"required\": true,\n \"default\": \"https://api-5a0zvlcbi80.zhifu.fm.it88168.com/api\",\n \"description\": \"支付FM分配的接口根地址,如 https://api-5a0zvlcbi80.zhifu.fm.it88168.com/api。\"\n },\n {\n \"name\": \"payType\",\n \"type\": \"string\",\n \"label\": \"默认支付通道 (payType)\",\n \"required\": false,\n \"default\": \"alipay\",\n \"description\": \"支付产品通道:alipay(支付宝)、wechat(微信)、aloop(支付宝轮询池)、tloop(微信轮询池)等。\"\n },\n {\n \"name\": \"checkoutMode\",\n \"type\": \"string\",\n \"label\": \"收银方式\",\n \"required\": false,\n \"default\": \"redirect\",\n \"values\": [\n \"redirect\",\n \"qr_code\"\n ],\n \"description\": \"redirect 跳转支付FM收银页;qr_code 在钱包中直接将 payUrl 渲染为二维码扫码。\"\n }\n ]\n },\n \"contributes\": {\n \"paymentProviders\": [\n {\n \"id\": \"zhifufm-pay\",\n \"label\": \"支付FM\",\n \"icon\": \"assets/icon.svg\",\n \"checkoutMode\": \"redirect\",\n \"identityFields\": [\n \"merchantNum\"\n ],\n \"expiryPolicy\": {\n \"defaultMinutes\": 10,\n \"minMinutes\": 3,\n \"maxMinutes\": 15\n },\n \"notificationSuccess\": {\n \"status\": 200,\n \"contentType\": \"text/plain; charset=utf-8\",\n \"body\": \"success\"\n },\n \"notificationFailure\": {\n \"status\": 400,\n \"contentType\": \"text/plain; charset=utf-8\",\n \"body\": \"fail\"\n }\n }\n ]\n },\n \"documentation\": \"<当前插件的完整 documentation,由 README.md 与 docs/interface.md 拼接而成;为避免 JSON 递归,此处不重复展开正文。>\"\n}\n```\nLine truncated
|
||||
}
|
||||
@@ -118,7 +118,7 @@ if [ "$require_all" = true ]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
for package_id in official-payment-wechat-native official-payment-alipay-page official-payment-xunhupay; do
|
||||
for package_id in official-payment-wechat-native official-payment-alipay-page official-payment-xunhupay official-payment-zhifufm; do
|
||||
backend_dir="$root_dir/$package_id/backend"
|
||||
provider="$backend_dir/provider"
|
||||
package_file="$root_dir/$package_id.yingce-plugin"
|
||||
|
||||
Reference in new issue
Block a user