关于 paypay-mcp
paypay-mcp 将 MCP 客户端连接到 PayPay Open Payment API,以处理二维码支付。它支持查询支付状态、取消和退款;涉及资金的操作需通过配置启用。
主要功能
- 01创建动态 PayPay 二维码
- 02查询并等待支付状态
- 03使未支付的二维码失效
- 04办理全额或部分退款
- 05取消状态不明确的支付
适用场景
- 01为 PayPay 支付创建二维码
- 02确认支付是否完成
- 03在支付前使二维码失效
- 04启用后退款或取消支付
MCP 相关
向 MCP 客户端提供 PayPay 支付工具和 API 参考资源。支持 stdio 与 Streamable HTTP 传输;退款和取消工具默认关闭,需显式启用。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
4收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| amount | integer | 是 | 金额(JPY,整数,不含小数)。金額(円、整数)。 |
| code_type | enum | 否 | 二维码类型。目前仅支持 ORDER_QR。ORDER_QR |
| order_items | array | 否 | 在 PayPay 应用中显示的可选商品明细。商品明细(可选)。 |
| redirect_url | string | 否 | 用户在 PayPay 应用中完成付款后要跳转到的位置。 |
| redirect_type | enum | 否 | 重定向的打开方式:浏览器(WEB_LINK)或应用(APP_DEEP_LINK)。WEB_LINK | APP_DEEP_LINK |
| is_authorization | boolean | 否 | 如果为 true,则表示这是预授权(现在冻结资金,稍后扣款)。事前承認(preauth)フラグ。 |
| order_description | string | 是 | 客户付款的项目。订单内容。 |
| merchant_payment_id | string | 否 | 此付款的唯一 ID。省略时会自动生成(UUID)。将同一 ID 用于不同订单会导致失败。订单ごとの一意のID。省略時は自動生成。 |
详细介绍
paypay-mcp
适用于 PayPay Open Payment API 的 Model Context Protocol 服务。
可与 Claude Desktop、Claude Code、Cursor、Windsurf、Zed、ChatGPT Apps SDK 及其他兼容 MCP 的客户端配合使用。工具描述提供英语和日语版本。
状态
v0.2.x — 已可用于生产环境,但尚未经过大规模实战检验。
设置 PAYPAY_ENV=production 并使用已获批准的商户凭据后,该服务即可与 PayPay 的生产环境 Open Payment API 正常运行。目前尚未处理过有实际意义的真实交易量。如果要通过它处理真实付款,请固定版本并先审查源代码。
工具
| 工具 | 描述 |
|---|---|
create_qr_code | 创建动态 PayPay 二维码。返回付款 URL、深层链接和渲染后的 PNG。 |
get_payment_details | 获取付款的当前状态。 |
wait_for_payment | 轮询,直到付款进入终止状态。 |
delete_qr_code | 在付款前使二维码失效。 |
refund_payment | 全额或部分退款。除非设置 PAYPAY_ENABLE_REFUNDS=true,否则默认禁用。 |
cancel_payment | 当付款状态不明确(超时或错误)时取消付款。除非设置 PAYPAY_ENABLE_CANCELS=true,否则默认禁用。 |
提示词
accept_single_payment、refund_last_payment、debug_stuck_payment。
资源
| URI | 描述 |
|---|---|
paypay://docs/opa-reference | PayPay OPA API 的端点映射、身份验证方案和状态说明。 |
paypay://docs/payment-states | 付款生命周期以及取消与退款的决策规则。 |
paypay://config/current | 当前配置的非敏感信息视图(env、merchantId、baseUrl、transport)。 |
安装
一键安装:
或通过 npm 安装:
npm install -g paypay-mcp
配置
凭据可从 PayPay Developer Dashboard 获取。
| 变量 | 必填 | 描述 |
|---|---|---|
PAYPAY_API_KEY | 是 | OPA API Key ID |
PAYPAY_API_SECRET | 是 | OPA API Key Secret |
PAYPAY_MERCHANT_ID | 是 | Merchant ID |
PAYPAY_ENV | 否 | sandbox(默认)或 production |
PAYPAY_ENABLE_REFUNDS | 否 | 设置为 true 以启用 refund_payment。默认禁用。 |
PAYPAY_ENABLE_CANCELS | 否 | 设置为 true 以启用 cancel_payment。默认禁用。 |
MCP_TRANSPORT | 否 | stdio(默认)或 http |
MCP_HTTP_PORT | 否 | MCP_TRANSPORT=http 时使用的端口。默认为 3000。 |
MCP_HTTP_HOST | 否 | 绑定地址。默认为 127.0.0.1。公开绑定需要设置 MCP_AUTH_TOKEN。 |
MCP_AUTH_TOKEN | 否 | 设置后,传入的 HTTP 请求必须提供 Bearer 令牌。非环回绑定时为必填项。 |
MCP_HTTP_ALLOWED_ORIGINS | 否 | 以逗号分隔的 CORS 允许列表。默认:无。 |
Claude Desktop
编辑 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"paypay": {
"command": "npx",
"args": ["-y", "paypay-mcp"],
"env": {
"PAYPAY_API_KEY": "a_...",
"PAYPAY_API_SECRET": "...",
"PAYPAY_MERCHANT_ID": "...",
"PAYPAY_ENV": "sandbox"
}
}
}
}
Claude Code
claude mcp add paypay -e PAYPAY_API_KEY=... -e PAYPAY_API_SECRET=... -e PAYPAY_MERCHANT_ID=... -- npx -y paypay-mcp
Cursor
将其添加到 ~/.cursor/mcp.json,格式与 Claude Desktop 相同。
远程托管
以 HTTP 模式运行。公开绑定必须设置 MCP_AUTH_TOKEN;否则服务将拒绝启动。
MCP_TRANSPORT=http \
MCP_HTTP_HOST=0.0.0.0 \
MCP_AUTH_TOKEN="$(openssl rand -hex 32)" \
MCP_HTTP_ALLOWED_ORIGINS="https://claude.ai,https://your-app.example.com" \
PAYPAY_ENV=sandbox \
PAYPAY_API_KEY=... PAYPAY_API_SECRET=... PAYPAY_MERCHANT_ID=... \
npx paypay-mcp
端点:POST http(s)://<host>:3000/mcp(Streamable HTTP 传输)。客户端发送 Authorization: Bearer <MCP_AUTH_TOKEN>。默认关闭 CORS。
本地测试时可以省略身份验证令牌;服务将绑定到 127.0.0.1,且只接受环回连接。
环境
默认使用 Sandbox。生产环境需要完成 PayPay 商户入驻(企业验证和签约),并且必须通过显式设置 PAYPAY_ENV=production 来启用。
限制
- 金额以整数日元计。
- 支付尝试后的次日 JST 00:14:59 之前可以取消支付。此后请使用退款。
- 单笔订单可以进行多次部分退款,每次退款都必须使用唯一的
merchantRefundId,退款总额不得超过商户配置的上限。 - 需要 TLS 1.2+(Node 20+)。
开发
git clone https://github.com/mrslbt/paypay-mcp.git
cd paypay-mcp
npm install
cp .env.example .env
npm run dev
npm test
npm run smoke
npm run build
路线图
v0.2:PreAuth + Capture、ContinuousPayments、DirectDebit、AccountLink QR、Webhook 签名验证、对账工具。
v0.3:Native Payment(App Invoke + 用户 JWT 身份验证)、Visa 合作端点、OpenTelemetry 跟踪。
安全
此服务可通过 PayPay OPA API 转移真实资金。主要安全措施:
- 默认禁用退款和取消工具。 只有设置
PAYPAY_ENABLE_REFUNDS=true或PAYPAY_ENABLE_CANCELS=true时,才会注册refund_payment和cancel_payment。仅在可信的 Agent 场景中启用,确保工具输入不会受到不可信内容的影响。 - 默认使用 Sandbox。 生产环境需要显式设置
PAYPAY_ENV=production,并且完成 PayPay 商户入驻。请务必先在 Sandbox 中测试。 - 每次调用都使用唯一的 merchantPaymentId 和 merchantRefundId。 PayPay 会根据这些 ID 去重;重复使用可能导致失败,也可能会针对较早的支付执行操作。每笔新支付或退款都要生成新的 ID。
- 工具带有 MCP 安全注解。 只读工具(
get_payment_details、wait_for_payment)标记为readOnlyHint;资金转移和破坏性工具(refund_payment、cancel_payment、delete_qr_code)标记为destructiveHint,兼容的客户端可据此在调用前向你发出警告。这些仅为提示,真正的保护措施是上述启用限制。
即使启用了这些限制,在批准工具调用前也要审查任何涉及资金转移的请求。将来自模型输出的工具输入视为不可信内容。
免责声明
这是一个非官方的社区构建 MCP 服务,与 PayPay Corporation 无关联,未获其认可或赞助。PayPay 是其各自所有者的注册商标。使用风险由你自行承担。对于因误用、提示词注入或错误导致的资金损失,作者不承担任何责任。
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。