熠能支付
下级商户接入说明 — 本文档列出你需要对接的全部开放接口、签名规则与调起方式。商户系统只需对接熠能,无需直连汇付。
演示商户:yn_demo_merchant / demo_secret_change_me。Swagger:/doc.html
所有 /v1/** 请求必须带:
| Header | 说明 |
|---|---|
| X-Yn-App-Id | appId |
| X-Yn-Timestamp | 毫秒时间戳 |
| X-Yn-Nonce | 随机串 |
| X-Yn-Sign | HMAC-SHA256 hex |
{appId}
{timestamp}
{nonce}
{METHOD}
{path}
{sha256Hex(body)}
Sign = hex(hmac_sha256(appSecret, 上述字符串))。GET 无 body 时对空字节做 SHA256。path 示例:/v1/payments/create。
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /v1/onboard/files | 图片上传 |
| POST | /v1/onboard/enterprise | 企业入驻 |
| POST | /v1/onboard/individual | 个人入驻 |
| GET | /v1/onboard/apply-status | 申请单状态 |
| POST | /v1/onboard/business-open | 业务开通 |
| POST | /v1/onboard/wechat/config | 微信配置 |
| POST | /v1/onboard/wechat/realname | 微信实名 |
| GET | /v1/onboard/wechat/realname-status | 微信实名状态 |
| POST | /v1/onboard/alipay/realname | 支付宝实名 |
| GET | /v1/onboard/alipay/realname-status | 支付宝实名状态 |
| GET | /v1/onboard/progress | 进件总进度 |
| POST | /v1/payments/create | 统一下单 |
| GET | /v1/payments/{outTradeNo} | 查单 |
| POST | /v1/payments/{outTradeNo}/close | 关单 |
| POST | /v1/refunds | 退款 |
| GET | /v1/refunds/{outRefundNo} | 退款查询 |
所有新商户必须走标准进件。先拿凭证,再按序调用:
POST /v1/onboard/files
{ "fileType":"F01", "fileName":"license.jpg", "fileBase64":"..." }
POST /v1/onboard/enterprise
{
"requestNo": "REG001",
"payload": { "reg_name":"某某科技", "license_code":"...", "card_info":{} }
}
个人入驻用 /v1/onboard/individual。详细字段透传斗拱官方文档。GET /v1/onboard/progress 查看是否 ready。
POST /v1/payments/create
{
"outTradeNo": "M202607260001",
"amount": 0.01,
"subject": "测试商品",
"channel": "WECHAT_APP",
"clientIp": "1.2.3.4",
"notifyUrl": "https://merchant.example.com/yineng/pay-notify",
"extra": { "openid": "oXXXX" }
}
| channel | 关键返回 | 客户端 |
|---|---|---|
| WECHAT_APP | payInfo | wx.requestPayment |
| ALIPAY_APP | qrCode / jumpUrl | 打开支付宝 |
| UNIONPAY_ONLINE_CASHIER | unionOrderNo | 银联 SDK |
| QUICK_PAY_PAGE | formHtml / payUrl | WebView |
| MOBILE_WAP | formHtml / payUrl | WebView |
同步成功只表示受理;支付终态以异步通知为准。
GET /v1/payments/{outTradeNo} — 未终态会同步通道。
POST /v1/payments/{outTradeNo}/close — 仅微信/支付宝;已支付不可关。
POST /v1/refunds
{
"outTradeNo": "M202607260001",
"outRefundNo": "R202607260001",
"amount": 0.01,
"reason": "用户取消"
}
查询:GET /v1/refunds/{outRefundNo}
向你的 notifyUrl POST JSON,Header 同请求签名规则;验签 path 固定 /pay/notify,密钥用 notifySecret。
{
"outTradeNo": "M202607260001",
"tradeNo": "YN...",
"status": "SUCCESS",
"amount": 0.01,
"channel": "WECHAT_APP",
"hfSeqId": "..."
}
务必:验签、幂等、快速返回 2xx;丢失时用查单兜底。
| code | 含义 |
|---|---|
| 0 | 成功 |
| 40000 | 参数错误 |
| 40100 | 签名失败 |
| 40300 | 商户/渠道不可用 |
| 40400 | 不存在 |
| 40900 | 冲突 |
| 50200 | 通道错误 |
| 50000 | 系统繁忙 |
本地 mock 模拟成功:POST /internal/mock/payments/{outTradeNo}/success