# 认证方式

调用 IEPay API 没有复杂的认证方式,只需要每一个请求带上签名即可。

# 如何签名

# 签名说明

在调用 API 时,必须提供签名作为每个请求的身份验证。

IEPay 的签名算法采用 MD5 (opens new window) 签名算法(其中3.x的的API同时支持MD5和SHA256加密方式)。

MD5 签名需要私钥。MD5 私钥是由英文字母和数字组成的32字节字符串。

您需要登录商户服务中心 (opens new window) 来获取 API Key 作为MD5 签名需要私钥。

API Key 是商户在 IEPay 系统中的身份标识,请安全存储,确保其不要被泄露。

# 算法

因此 IEPay 的签名算法为

sign = MD5(预签名字符串 + API_KEY)

# 预签名字符串

预签名字符串是由除sign参数以外的其他所有参数按字母顺序重新排列后用&拼接为的字符串。

提示

  1. 没有值的参数必须包含在签名中
  2. 签名中的字符集必须与前面使用的字符集一致
  3. 如果传递了_input_charset,则也应对其进行签名
  4. 根据HTTP协议,像&,@这样的特殊字符需要URL编码,因此请求接收者可以得到正确的值。在这种情况下,预签名字符串应该是原始值,而不是编码字符串。例如:调用某个API需要对参数email进行签名,预签名字符串应为电子邮箱:test@msn.com,而不是电子邮件=测试%40msn.com网站

# 例子

如果参数的JSON结构如下

{
    "mid":"10224",
    "pay_type":"IE0014",
    "refund_amount":"1",
    "out_trade_no":"20180402112304123210122312",
    "reference":"refund memo"
}

那么按字母顺序重新排列数据,数并用&将重新排列的参数连接一起获得的预签名字符串为

mid=10224&out_trade_no=20180402112304123210122312&pay_type=IE0014&reference=refund memo&refund_amount=1

假设我们的 API KEY 为

e560fb2e61e4d1fe6a11c278388cb965

我们 sign 的计算伪码为

sign = md5(mid=10224&out_trade_no=20180402112304123210122312&pay_type=IE0014&reference=refund memo&refund_amount=1e560fb2e61e4d1fe6a11c278388cb965)

结果为

f45a1a2db58b43b48d51ab2fc18e0914

f45a1a2db58b43b48d51ab2fc18e0914 这就是我们的签名。 将其带入对应 API 即可。