Appearance
Open Payment Specification
Open Payment Specification(OPS)是风梨规范库为易支付类平台整理的开放支付规范。它面向已经在野外长期运行的易支付接口,目标不是推翻现有实现,而是在兼容现有平台的基础上,统一配置发现、字段语义、签名方式、支付方式声明、通知验签和版本演进。
设计目标
- 兼容主流易支付平台的提交页、接口下单、查询、异步通知和同步跳转。
- 保留
pid、type、out_trade_no、name、money、notify_url、return_url、sign、sign_type等常见字段。 - 通过固定发现地址暴露平台能力,避免接入方手工猜测提交地址、签名方式和支付方式。
- 允许平台逐步扩展 HMAC、RSA、JSON API、退款、关闭订单和更严格的安全能力。
发现地址
兼容 OPS 的支付平台必须在以下路径暴露配置:
txt
/.well-known/openpayment-configuationopenpayment-configuation 的拼写是本规范固定路径。实现方可以额外提供 /.well-known/openpayment-configuration 作为别名,但客户端不能只依赖别名。
兼容层级
OPS 将易支付平台兼容能力分为三个层级。
| 层级 | 名称 | 要求 |
|---|---|---|
| OPS-EPAY-1 | 传统易支付兼容 | 支持表单提交、MD5 签名、异步通知、同步返回和订单查询 |
| OPS-CORE-1 | 标准发现兼容 | 支持 .well-known 配置发现,并声明接口、签名、字段别名和支付方式 |
| OPS-EXT-1 | 扩展能力兼容 | 支持 HMAC/RSA、JSON API、退款、关闭订单、时间戳、随机串和密钥轮换 |
平台只要满足 OPS-EPAY-1 与 OPS-CORE-1,就可以被视为 OPS 基础兼容平台。
核心页面
- 配置发现:定义
.well-known配置格式。 - 接口模型:定义下单、通知、查询、退款等接口语义。
- 签名规范:定义 MD5、HMAC-SHA256、RSA-SHA256 签名规则。
- 安全与兼容:定义安全基线和版本演进策略。
- 易支付适配:说明如何适配现有易支付平台。
基础术语
| 术语 | 说明 |
|---|---|
| 平台 | 提供支付网关能力的易支付服务端 |
| 商户 | 接入支付平台的业务系统 |
| 平台订单号 | 支付平台生成的唯一订单号,常见字段为 trade_no |
| 商户订单号 | 商户生成的唯一订单号,常见字段为 out_trade_no |
| 异步通知 | 平台向商户 notify_url 发起的服务器端支付结果通知 |
| 同步返回 | 用户支付后浏览器跳转到商户 return_url 的结果页面 |
| 支付方式 | 平台支持的通道标识,例如 alipay、wxpay、qqpay |
最小接入流程
- 客户端请求
/.well-known/openpayment-configuation获取平台能力。 - 根据配置选择提交地址、支付方式、签名方式和字段别名。
- 商户生成订单并按签名规范提交支付请求。
- 平台创建订单并引导用户完成支付。
- 平台向商户
notify_url发送异步通知。 - 商户验签、校验金额和订单状态后返回
success。 - 商户必要时调用查询接口进行状态补偿。