Open API
简体中文
  • English
  • 简体中文
API DOC
API DOC
简体中文
  • English
  • 简体中文
  1. 异步通知说明v2
  • Open API
    • 文档修订记录
    • API接入概述
    • API调用地址
    • Api请求参数说明
    • Api响应参数说明
    • 请求流水号生成说明
    • 接口加密加签步骤
    • 接口解密验签流程
    • 常量说明
      • pay_type支付类型说明
      • order_status订单状态说明
      • status_code 返回状态说明
      • fee_type缴费类型说明
      • attachment_type附件类型说明
      • country_code国家代码说明
      • currency_code货币代码说明
      • 性别说明
      • 证件类型说明
      • 收入来源类型说明
    • 接口
      • 下单接口
      • 第三方跳转下单接口
      • 附件上传接口
      • 删除附件接口
      • 不确定请求查询(查询请求是否成功)
      • 获取付款地址接口
      • 订单批量查询接口
      • 第三方支付通知接口(不维护)
      • 订单付款操作通知
      • 修改订单信息接口
      • 申请退款接口
      • 关闭订单接口
      • 获取标准学校信息
    • 异步通知说明v2
      • 异步通知说明
      • 异步通知生成签名过程说明
      • 支付成功异步通知
      • 退款结果异步通知
      • 汇出结果异步通知
      • 汇款凭证异步通知
    • 异步通知说明v1(不再维护)
      • 支付成功异步通知参数说明-v1(不再维护, 如果要对接请看v2版本)
      • 异步通知生成签名过程说明
  1. 异步通知说明v2

异步通知生成签名过程说明

异步通知参数示例#

标题类型描述说明
order_idString订单号易思汇订单号。
pay_resultInt支付结果1支付成功,0失败
pay_amountFloat付款金额浮点数,比如 10000.00。
pay_datetimeString付款时间字符串类型,比如2017-10-12 10:00:00
extend_infoString扩展信息后续预留使用。
signString签名使用md5生成签名,详细流程请看异步通知生成签名过程说明

异步通知生成签名过程#

根据异步通知参数示例,需要按照以下步骤进行处理:
先将参数(除sign字段外)按字母顺序排序(若首字母相同则比较第二个字母,以此类推),然后将排序后的参数拼接成一个以&符号分隔的字符串。
接着,将指定的盐值添加到该字符串的最前面,并使用MD5算法对结果字符串进行摘要计算。最后,将计算得到的MD5摘要并填充到sign
异步通知参数示例:
sign_params = {
    "order_id": "ET00000000000000001",
    "pay_result": 1,
    "pay_amount": 10000.00,
    "pay_datetime": "2017-10-10 10:00:00",
    "extend_info": "",
}

salt = "xxx000mmm"

1. 排序并用&分割
extend_info=&order_id=ET00000000000000001&pay_amount=10000.00&pay_datetime=2017-10-10 10:00:00&pay_result=1
2. 将salt增加到字符串最前面
xxx000mmmextend_info=&order_id=ET00000000000000001&pay_amount=10000.00&pay_datetime=2017-10-10 10:00:00&pay_result=1
3.将字符串进行MD5摘要
假设得到的MD5为:d41d8cd98f00b204e9800998ecf8427e

最终得到的请求数据:
paylpad = {
    "order_id": "ET00000000000000001",
    "pay_result": 1,
    "pay_amount": 10000.00,
    "pay_datetime": "2017-10-10 10:00:00",
    "extend_info": "",
    "sign": "d41d8cd98f00b204e9800998ecf8427e"
}

生成签名代码示例#

# python3
import hashlib


def generate_sign(sign_params: dict, salt=None) -> str:
    if not salt:
        salt = ""

    md5_text = str(salt) + "&".join(
        [f"{k}={v}" for k, v in sorted(sign_params.items())]
    )
    return hashlib.md5(bytes(md5_text, encoding="utf-8")).hexdigest()
Modified at 2024-06-14 06:02:19
Previous
异步通知说明
Next
支付成功异步通知
Built with