lfwin-payment-mcp
This server provides AI agents with payment processing capabilities through the LFWin payment platform, enabling full order lifecycle management:
Create Payment Orders (
create_payment_order): Create a payment order by providing a unique merchant order number and amount. Returns a platform order number, payment URL, and QR code in multiple formats (Markdown, base64 PNG, and image content block) for user-facing display.Query Payment Status (
query_payment_order): Check the current status of a payment order using the platform order number. Returns status indicators for paid (paystatus=1), pending (paystatus=0), or failed (paystatus=2).Initiate Refunds (
refund_payment_order): Submit a refund request for a completed order using the platform order number, refund amount, reason, and a unique merchant refund number. Supports partial refunds via different merchant refund numbers. Note that a successful submission does not guarantee completion — status must be queried separately.Query Refund Status (
query_refund_status): Check the outcome of a refund request using the platform order number and optionally the merchant refund number. Returns whether the refund is processing, successful, or failed.
Note: Merchant order numbers are used internally when creating orders, while platform order numbers (returned upon creation) are used for all subsequent queries and refund operations.
# LFWin Payment MCP Server
LFWin Payment MCP Server 是一个面向 AI Agent 的支付能力服务。它通过标准 MCP 协议,把创建支付订单、查询支付状态、发起退款、查询退款状态等能力开放给 Cursor、Cline、Claude Desktop、企业智能助手和自研 Agent 应用。
项目同时提供两种实现:
Node.js 版:位于 node-mcp,推荐普通 MCP 用户通过
npx快速启动。Python 版:位于 payment_mcp,适合已有 Python 环境或需要二次开发的用户。
两种实现提供相同的 MCP 工具能力。获取支付权限或密钥,请联系服务商客服。
功能
create_payment_order:创建统一收银台支付订单query_payment_order:查询支付订单状态refund_payment_order:发起退款query_refund_status:查询退款状态
创建支付订单时会返回支付链接和二维码相关字段:
pay_url:统一收银台支付跳转链接qrcode:同pay_url,用于兼容需要扫码内容的调用方pay_qrcode_image:基于pay_url生成的二维码 PNGdata:image/png;base64,...pay_qrcode_base64:同一张二维码 PNG 的裸 base64,不包含data:image/png;base64,前缀pay_qrcode_mime_type:固定为image/png,用于 MCP 图片内容块或自研客户端渲染pay_qrcode_markdown:可直接展示的 Markdown 图片文本payment_display_examples:按 Markdown、HTML/img、MCP image content、支付链接兜底等场景给出的展示示例
Node.js 版还会在 MCP 工具结果中额外返回 type: "image" 的 PNG 内容块,方便支持图片渲染的 MCP 客户端直接显示二维码。
Related MCP server: yop-mcp
AI Agent 使用规则
下单后的二维码展示
create_payment_order 调用成功后,统一收银台接口原始返回中的 data 表示支付跳转 URL 或支付参数。data 可能是字符串,也可能是包含 payUrl、url、qrcode、code_url 等字段的对象。本 MCP 服务会把它标准化为字符串 pay_url,并同时提供二维码字段,避免把对象错误展示为 [object Object]。AI Agent 应按客户端能力选择展示方式:
支持 Markdown 的对话窗口:优先直接输出
pay_qrcode_markdown。支持 MCP 图片内容块的客户端:Node.js 版工具结果里会带
type: "image"的 PNG 内容块,可直接展示。需要前端自行渲染图片:使用
pay_qrcode_image,这是完整的data:image/png;base64,...data URL,可直接作为<img src>。只接受裸 base64 的客户端:使用
pay_qrcode_base64,并将媒体类型设置为pay_qrcode_mime_type。需要跳转支付或自行生成二维码:使用
pay_url;qrcode与pay_url相同,仅作为兼容字段。
不要只告诉用户“已创建订单”而不展示二维码或支付链接。面向用户时应展示二维码,并保留 pay_url 作为扫码失败时的备用链接。
支付字段展示调用示例
假设 create_payment_order 返回结果保存为 order:
Markdown 对话窗口可直接输出:
{order.pay_qrcode_markdown}Web 前端可把完整 data URL 放进图片标签:
<img alt="Payment QR Code" src="{order.pay_qrcode_image}" />React/Vue 等前端可直接绑定图片地址:
<img alt="Payment QR Code" src={order.pay_qrcode_image} />MCP 或自研客户端只接受图片内容块时,使用裸 base64 和 MIME:
{
"type": "image",
"mimeType": "image/png",
"data": "{order.pay_qrcode_base64}"
}如果图片无法展示,必须展示备用支付链接:
[点击打开支付链接]({order.pay_url})如果客户端需要自己生成二维码,使用 qrcode 或 pay_url 作为二维码内容,不要把 pay_qrcode_image 再当文本编码进二维码。
订单号使用规则
merchant_order_no 和 order_no 不是同一个编号:
merchant_order_no:商户订单号,创建订单时传入,对应接口文档里的mch_orderid,用于商户系统内部关联和展示。order_no:平台订单号,由支付平台返回,对应接口文档里的orderid,用于本 MCP 服务的订单查询、退款和退款查询。
AI Agent 必须保存 create_payment_order 返回的 order_no。后续调用 query_payment_order、refund_payment_order、query_refund_status 时,优先且默认使用这个 order_no,不要把创建订单时传入的 merchant_order_no 当作 order_no 使用。
接口文档说明底层订单查询接口也支持 mch_orderid,但当只传商户订单号时必须同时传 order_time 才能定位订单。本 MCP 当前的 query_payment_order(order_no) 参数语义是平台订单号,因此不应传 merchant_order_no。
查询和退款状态判断
支付查询:
query_payment_order的order_no必须传平台订单号。返回status=10000且paystatus=1表示支付成功;paystatus=0表示待付款;paystatus=2表示支付失败。发起退款:
refund_payment_order的order_no必须传平台订单号,mch_refund_no是商户退款流水号。同一笔订单多次部分退款时,每次退款应使用不同的mch_refund_no。退款不是发起即成功:退款请求返回
status=4001或status=10000只表示请求已被接受或处理中,不代表退款成功。必须继续调用query_refund_status查询实际结果。退款查询:
query_refund_status的order_no必须传平台订单号;如果发起退款时传了mch_refund_no,查询时也应带上同一个mch_refund_no。返回status=4001表示处理中;status=10000且refund_status=1表示退款成功;status=10000且refund_status=2表示退款失败。
环境变量
正常使用只需要配置:
PAYMENT_API_KEY=your_api_key_here
PAYMENT_SIGN_KEY=your_sign_key_here默认配置:
接口域名:
https://api2.lfwin.com签名方式:
MD5
通常不需要额外配置接口域名和签名方式。
PAYMENT_SIGN_KEY 只在 MCP Server 本地生成请求签名时使用,不会作为请求字段发送到 LFWin 接口,也不会出现在 MCP 工具返回结果中。通过 MCPB、Glama 等支持敏感字段的安装方式配置时,该字段已标记为 sensitive。
安装方式一:Node.js 版
推荐普通用户使用 Node.js 版。发布到 npm 后,可直接通过 npx 启动:
npx -y @litsen/lfwin-payment-mcpCursor 配置示例:
{
"mcpServers": {
"payment-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@litsen/lfwin-payment-mcp"],
"env": {
"PAYMENT_API_KEY": "your_api_key_here",
"PAYMENT_SIGN_KEY": "your_sign_key_here"
}
}
}
}本地源码调试 Node.js 版:
cd node-mcp
npm install
npm run build
node dist/index.js更多说明见 node-mcp/README.md。
安装方式二:Python 版
如果你已有 Python 3.12 或更高版本,也可以使用 Python 版。
从 GitHub 安装:
pip install git+https://github.com/litsen/lfwin-payment-mcp.git安装完成后会得到 MCP 启动命令:
payment-mcpCursor 配置示例:
{
"mcpServers": {
"payment-mcp": {
"type": "stdio",
"command": "cmd",
"args": ["/c", "payment-mcp"],
"env": {
"PAYMENT_API_KEY": "your_api_key_here",
"PAYMENT_SIGN_KEY": "your_sign_key_here"
}
}
}
}源码开发时也可以这样运行:
pip install -r requirements.txt
python -m payment_mcp.mcp_stdioCline 配置
Node.js 版:
{
"mcpServers": {
"payment-mcp": {
"command": "npx",
"args": ["-y", "@litsen/lfwin-payment-mcp"],
"env": {
"PAYMENT_API_KEY": "your_api_key_here",
"PAYMENT_SIGN_KEY": "your_sign_key_here"
},
"disabled": false
}
}
}Python 版:
{
"mcpServers": {
"payment-mcp": {
"command": "cmd",
"args": ["/c", "payment-mcp"],
"env": {
"PAYMENT_API_KEY": "your_api_key_here",
"PAYMENT_SIGN_KEY": "your_sign_key_here"
},
"disabled": false
}
}
}工具参数
create_payment_order
创建支付订单。
参数:
merchant_order_no:商户订单号,必须唯一amount:支付金额,单位为元notify_url:异步通知地址,可选
返回结果:
order_no:平台订单号,对应接口文档里的orderid。后续查询、退款、退款查询必须优先使用该值。merchant_order_no:商户订单号,对应创建订单时传入的merchant_order_no/ 接口文档里的mch_orderid,不要用它替代order_no查询。pay_url/qrcode/pay_qrcode_image/pay_qrcode_base64/pay_qrcode_mime_type/pay_qrcode_markdown/payment_display_examples:支付展示字段。返回结果中的pay_qrcode_markdown可以直接让 AI 输出给用户,用于扫码支付;pay_qrcode_image可直接作为<img src>;pay_qrcode_base64搭配pay_qrcode_mime_type可用于 MCP 图片内容块或只接受裸 base64 的客户端。
query_payment_order
查询支付订单状态。
参数:
order_no:平台订单号,即create_payment_order返回的order_no/ 接口文档里的orderid。不要传merchant_order_no。
refund_payment_order
发起退款。
参数:
order_no:平台订单号,即create_payment_order返回的order_no/ 接口文档里的orderid。不要传merchant_order_no。refund_amount:退款金额,单位为元reason:退款原因mch_refund_no:商户退款流水号,必须唯一。同一订单多次部分退款时,每次使用不同值。
退款请求返回 status=4001 或 status=10000 只表示请求已被接受或处理中,不代表退款成功。必须继续调用 query_refund_status。
query_refund_status
查询退款状态。
参数:
order_no:平台订单号,即create_payment_order返回的order_no/ 接口文档里的orderid。不要传merchant_order_no。mch_refund_no:商户退款流水号,可选;如果发起退款时传入了该值,查询时应使用同一个值定位退款记录。
状态判断:
status=4001:退款处理中,需要稍后再次查询。status=10000且refund_status=1:退款成功。status=10000且refund_status=2:退款失败。
Open Plugins / Cursor Directory
仓库根目录提供 mcp.json,用于 Open Plugins / Cursor Directory 识别 MCP 组件。
Glama
仓库根目录提供 glama.json、Dockerfile、LICENSE、SECURITY.md 和 GitHub Actions CI,用于提升 Glama 收录和评分。
发布
Python 版构建 wheel 包:
pip install build
python -m buildNode.js 版发布 npm 包:
cd node-mcp
npm login
npm publish --access publicGitHub Release:
git tag v0.1.5
git push origin v0.1.5推送 v* tag 后,Release workflow 会自动构建 .mcpb 并上传到 GitHub Release。
MCPB 打包
.mcpb 是一个包含本地 MCP Server 和 manifest.json 的 zip 包,适合 Claude Desktop 等支持 MCPB 的客户端一键安装。
本项目推荐用 Node.js 版打 MCPB,因为 Claude Desktop 在 macOS 和 Windows 上自带 Node 运行环境,用户不需要额外安装 Python。
先构建 Node.js 版:
cd node-mcp
npm install
npm run build然后回到项目根目录执行:
.\scripts\build-mcpb.ps1生成文件:
dist/lfwin-payment-mcp-0.1.5.mcpbMCPB 安装时会提示用户填写:
Payment API KeyPayment Sign Key
这两个值会通过 mcpb/manifest.json 的 user_config 注入为 PAYMENT_API_KEY 和 PAYMENT_SIGN_KEY,不会写死在包里。其中 Payment Sign Key 已标记为敏感字段,只用于本地签名。
安全说明
不要把真实的
PAYMENT_API_KEY、PAYMENT_SIGN_KEY提交到 GitHub。建议通过环境变量、IDE Secret 或服务器密钥管理系统注入密钥。
本项目默认使用
stdio方式作为本地 MCP 服务运行。如果要部署成远程 MCP 服务,请自行增加认证、租户隔离、访问控制和 Origin 校验。
演示示例
Cursor安装后,可选择启用哪些能力
智能体调用时会自动生成对应的支付订单,可引导用户扫码完成支付
发起支付:
发起退款:
Maintenance
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/litsen/lfwin-payment-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server