易支付接口接入要点
整理第三方易支付接口的对接流程与校验要点,方便技术团队评估接入方式。
背景说明
一个接口,对接多个收款渠道
易支付是一类第三方聚合支付接口:商户按统一参数发起请求,由网关转发到支付宝、微信等渠道完成收款,并通过异步通知把结果回传给商户服务端。
它的接入重点不在页面,而在服务端的下单、签名与回调处理。订单状态以服务端收到的异步通知为准,页面只负责发起支付与展示结果。
以下为通用接入要点,具体字段、签名方式与接口地址以服务商提供的接口文档为准。本站在线支付已接入易支付接口,本页用于说明接入与校验要点。
接入流程
四步完成对接
- 01
开通商户与获取密钥
在服务商处开通商户,取得商户号与通信密钥,密钥仅保存在服务端环境变量或密钥管理中。
- 02
配置回调地址
设置异步通知地址与同步跳转地址,两个地址都需要是公网可访问的正式域名,且与备案信息一致。
- 03
服务端签名下单
按接口要求组装订单参数,拼接后生成签名,由服务端发起下单请求并取得支付二维码内容与云端订单号。
- 04
回调验签与订单更新
页面按固定间隔调用查询接口确认支付结果,通过后幂等更新订单表;异步通知到达时先验签再核对金额与订单号。
下单参数
常用字段与含义
- 提交方式
- POST,application/x-www-form-urlencoded
- 返回方式
- JSON,code=1 成功并给出 payUrl 与 orderId
| 字段 | 必填 | 说明 |
|---|---|---|
| mchId | 是 | 商户ID,在易支付后台获取 |
| payId | 是 | 商户支付单号,同一商户下不可重复 |
| type | 是 | 支付方式,微信为 1,支付宝为 2 |
| price | 是 | 订单金额,按两位小数处理 |
| sign | 是 | 签名,按 payId + param + type + price + 密钥计算 |
| goodsName | 是 | 商品或费用名称 |
| param | 否 | 透传参数,会原样带回异步与同步通知 |
| isHtml | 否 | 0 返回 JSON;1 跳转支付页面 |
| notifyUrl | 否 | 服务端异步通知地址 |
| returnUrl | 否 | 同步跳转地址,仅 isHtml=1 时生效 |
签名按四步拼出来
- 01按 payId、param、type、price 的顺序直接拼接,中间不加分隔符。
- 02在拼接结果末尾追加通讯密钥。
- 03对整串计算 MD5,取小写结果作为 sign 一起提交。
- 04回调验签使用 orderId、param、type、price、reallyPrice 与密钥按同样方式拼接。
安全要点
交付前需要确认的四件事
密钥不进入前端
签名与验签都在服务端完成,浏览器与页面代码中不出现商户密钥。
回调必须验签
异步通知可能被伪造,先按同一规则验签,再核对订单号与金额是否与本地记录一致。
订单状态以后端为准
页面轮询查询接口,返回已支付才置为已支付;回跳带签名时同样校验通过才更新。
幂等处理重复通知
同一笔订单可能多次收到通知,按订单号做幂等判断,避免重复入账或重复更新。
常见报错对照
返回错误页时先核对商户号与密钥,再检查参数名与金额位数。
- 商户不存在
- mchId 与后台记录不一致,或该商户当前不可用。
- 签名错误
- 密钥不一致,或拼接顺序与提交参数不同;注意密钥首尾空格。
- 参数不能为空
- 必填项缺失,重点检查 mchId、payId、type、price 与 goodsName。
- 订单未支付
- 查询接口返回 -2,表示用户尚未完成付款,页面会继续轮询。
参考资料
SkillHub epay-skill
本页的接入流程与校验要点按该技能的公开说明整理,具体字段与地址以服务商文档为准。
需要评估易支付接入方案?
说明收款场景与对接方式,我们按你的业务流程给出接入建议。