1. 文档
金余开发文档
  • 文档
    • 请求及响应规范
    • 签名规范
    • 枚举(对象)定义及约束
    • 事件通知规范
    • 错误代码
    • 环境说明
    • 接口说明
  • 接口列表
    • 开放接口
      • 修改材料报价
  1. 文档

事件通知规范

1. 事件定义#

我们把全部的通知消息均定义为事件

2. 事件的订阅方式#

目前我们均推送全部的事件,暂不支持只订阅指定的事件。所有事件我们均采用 POST 的方式推送,要接收事件消息,必须现在商户管理后台设置好接收事件的地址 商户管理后台->开发配置->商户数据通知配置 中进行设置事件的接收地址。
处理事件需要注意一下几点:
接收到事件后必须再 5s 内进行响应,否则系统会认为推送超时而主动终止会话,并且稍候会重新进行事件推送,重试规则详见 【推送重试策略】
如果事件处理完成之后,无需影响任何数据,直接响应Http StatusCode为200-299段的代码即可,如果响应200-299之外的StatusCode,系统则会认为推送失败,会进行重试,重试规则详见 【推送重试策略】
💡
为了安全起见,接收事件的URL地址必须使用TLS通道,也就是必须是https,其次URL中不能包含“?”、“&”、“#”等特殊字符

3. 推送重试策略#

当事件推送超时或者响应失败后,系统会重新尝试推送三次,重试的策略为:
推送失败10s后第一次重试
5min后第二次重试
10min后第三次重试
如果三次都失败后,系统将终止推送,如业务需要,则主动发起响应的业务查询。
💡
由于事件的重试策略可能会导致事件的重复处理,因此处理事件需要自行做好 幂等 处理
为了安全起见,接收事件也最好验证签名,我们推送事件时的签名完全遵守 【签名规范】中约定的签名方式。

4. 事件数据格式#

展开/收缩
{
  "eventId":"abdsdsfsd",
  "eventType":100000,
  "eventCode":"RecycleOrderQualityCheckResult"
  "description":"回收订单品质检查结果通知"
  "dateTime":1677063205771,
  "content":{}
}
参数数据类型是否可空说明
eventIdstring否事件ID,全局唯一,可以利用该ID做幂等处理
eventTypeint否事件类型,一个number的值,事件体系内唯一
eventCodestring否事件类型代码,事件类型的字符串表示形式,和事件类型一一对应,事件体系内唯一
descriptionstring是事件描述
dateTimelong否事件触发的时间,是一个毫秒级别的时间戳
contentobject是事件数据,可能是null,也可能是字符串,也可能是对象,不同的事件类型,这部分内容不同

5. 事件类型定义#

展开/收缩
事件类型事件代码事件数据说明
100100OrderRecycleQualityCheckedResult查看回收订单品质检查结果通知
100101OrderRecycleStatusChanged查看回收订单状态变化通知
100102OrderRecyclePaymentResult查看回收订单付款结果通知
100103OrderRecycleInitiatePayment查看回收订单发起付款通知
101100ScrmMerchantApplyForResult查看商户申请结果通知
102100CapitalAccountAmountChanged查看资金账户变化通知

6. 事件数据#

回收订单品质检查结果通知#

展开/收缩
报文示例
{
  "orderNo":"1222222",
  "result":false,
  "description":"品质达不到回收要求",
  "products":
  [
      {
          "code":"AS2222222",
          "weight":10.5,
          "pureWeight":10.00,
          "quality":9998,
          "materialType":1,
          "result":true,
          "description":"合格"
      },
      {
          "code":"AS2222222",
          "weight":10.5,
          "pureWeight":10.00,
          "quality":9900,
          "materialType":1,
          "result":false,
          "description":"品质太低,达不到回收要求"
      }
  ]
}
参数说明
参数数据类型是否可空说明
orderNostring否回收订单号
resultboolean否订单检测是否通过
descriptionstring是结果描述
productsarray否回收单产品列表
products 参数说明:
参数数据类型是否可空说明
codestring否回收产品代码
weightfloat否回收产品的重量,单位g
pureWeightfloat否折足的重量,单位g
qualityint否产品的品质
materialTypeenum否产品的材质
resultboolean否产品检测是否通过
descriptionstring是描述

回收订单状态变化通知#

展开/收缩
报文示例
{
  "orderNo":"1222222",
  "orderStatus":1,
  "description":"订单已取消"
}
参数说明
参数数据类型是否可空说明
orderNostring否回收订单号
orderStatusenum否订单状态
descriptionstring是描述

回收订单付款结果通知#

展开/收缩
报文示例
{
  "orderNo":"1222222",
  "paymentStatus":1,
  "description":"付款成功",
  "tradeInfo":
  {
      "tradedNo":"CS2222222",
      "amount":444.35,
      "tradedType":3,
      "dataTime":1677133189149,
      "payeeAccount":
      {
          "name":"张三",
          "account":"5225887811338850",
          "description":"招商银行"
      }
  }
}
参数说明
参数数据类型是否可空说明
orderNostring否回收订单号
paymentStatusenum否付款状态
descriptionstring是描述
tradeInfoobject是交易信息
tradeInfo 参数说明:
参数数据类型是否可空说明
tradedNostring是交易流水号
amountfloat否交易数量(金额或者克重)
tradedTypeenum否交易类型(收付款类型)
dataTimelong否交易时间
payeeAccountobject是收款账号,如果收款账号为1(系统资金账户)或者2(原料账户)的时候,则该值为null
payeeAccount 参数说明:
参数数据类型是否可空说明
namestring否收款人
accountstring否收款账户
descriptionstring是收款账号描述

商户申请结果通知#

展开/收缩
报文示例
{
  "orderNo":"1222222",
  "result":true,
  "merchantNo":"1234567",
  "storeNo":"7654321",
  "userName":"admin",
  "password":"*******",
  "description":"订单已取消"
}
参数说明
参数数据类型是否可空说明
orderNostring否商户申请单号
resultboolean否是否通过
merchantNostring是商户号,如果result为false,则为null
storeNostring是店铺号,如果result为false,则为null
userNamestring是商户管理后台账号,如果result为false,则为null
passwordstring是商户管理后台密码,如果result为false,则为null
descriptionstring是描述

资金账户变化通知#

展开/收缩
报文示例
{
  "changedAccount":
  {
      "code":"1222222",
      "name":"xxxxxxx",
      "userType":1,
  },
  "tradeAccount":
  {
      "code":"13333333",
      "name":"xxxxxxx",
      "userType":1,
  },
  "amount":125.23,
  "capitalAccountType":1,
  "tradeType":1,
  "dateTime":1677133189149,
  "description":"订单已取消"
}
参数说明
参数数据类型是否可空说明
changedAccountobject否变动账户
tradeAccountobject是交易账户
amountfloat否交易数量
capitalAccountTypeenum否资产账户类型, 查看
dateTimelong否交易时间
tradeTypeenum否交易类型, 查看
descriptionstring是描述
changedAccount/tradeAccount 参数说明:
参数数据类型是否可空说明
codestring否账户代码
namefloat否账户名称
userTypeenum否会员账户类型,查看
修改于 2024-06-13 06:20:24
上一页
枚举(对象)定义及约束
下一页
错误代码
Built with