FedEx授权说明
FedEx授权分发票验证和PIN码验证两种模式,可根据您是否有FedEx发票进行选择。
一、发票验证模式
适合有 FedEx 发票在手的用户,以发票号作为验证凭证,一步完成。
- 调用
/fedex/authOne接口,传入needInvoice=true以及相关发票信息 - 系统依次校验地址信息和发票有效性
- 验证通过后,直接返回
childKey和childSecret
POST /fedex/authOne (needInvoice=true)
→ 签名校验 → 权限校验 → 地址验证 → 发票验证 → 返回 childKey + childSecret(终态)
接口:POST http://api.kuaidi100.com/sendAssistant/auth/fedex/authOne
外层通用参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
key | String | 是 | 用户 API Key |
t | String | 是 | 时间戳(毫秒) |
param | String | 是 | 业务参数 JSON 字符串,内容见下表 |
sign | String | 是 | MD5(param + t + key + secret) 大写 |
param 内业务参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
partnerId | String | 是 | FedEx 账号 |
partnerName | String | 是 | 账号名称 |
city | String | 否 | 城市 |
countryCode | String | 否 | 国家代码 |
postalCode | String | 否 | 邮编 |
addr | String | 否 | 街道地址 |
needInvoice | boolean | 是 | 固定为 true |
number | String | 是 | 发票号 |
currency | String | 否 | 发票币种 |
date | String | 否 | 发票日期 |
amount | String | 否 | 发票金额 |
请求示例:
# 假设 key=abc123, secret=xxx, t=1717200000000
PARAM='{"partnerId":"123456789","partnerName":"某公司","city":"Shanghai","countryCode":"CN","postalCode":"200000","addr":"浦东新区XX路XX号","needInvoice":true,"number":"INV-20240001","currency":"CNY","date":"2024-06-01","amount":"1500.00"}'
SIGN=$(echo -n "${PARAM}1717200000000abc123xxx" | md5sum | tr 'a-z' 'A-Z' | cut -d' ' -f1)
curl -X POST http://api.kuaidi100.com/sendAssistant/auth/fedex/authOne \
-H "Content-Type: application/json" \
-d "{
\"key\": \"abc123\",
\"t\": \"1717200000000\",
\"param\": \"${PARAM}\",
\"sign\": \"${SIGN}\"
}"
响应示例:
{
"code": 200,
"message": "success",
"data": {
"childKey": "fedex_sub_key_xxx",
"childSecret": "fedex_sub_secret_xxx"
}
}
下单时,通过下单接口的 partnerKey 传入 childKey 返回的内容,partnerSecret 传入 childSecret 返回的内容。
二、PIN码验证模式
适合没有发票的用户,以手机短信 PIN 码作为验证凭证,分两步完成。
- 第一步:调用
/fedex/authOne(needInvoice=false),系统验证地址后触发 FedEx 向账号绑定的手机或邮箱发送 PIN 码短信,此时不返回密钥 - 第二步:用户查收短信后调用
/fedex/pinVerify,传入partnerId和短信中的 PIN 码,验证通过后返回childKey和childSecret
步骤1: POST /fedex/authOne (needInvoice=false)
→ 签名校验 → 权限校验 → 地址验证 → 触发 PIN 短信发送 → 返回空 data
步骤2: POST /fedex/pinVerify (partnerId + pin)
→ 签名校验 → 权限校验 → PIN 验证 → 返回 childKey + childSecret(终态)
步骤1:触发 PIN 码发送
接口:POST http://api.kuaidi100.com/sendAssistant/auth/fedex/authOne
外层通用参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
key | String | 是 | 用户 API Key |
t | String | 是 | 时间戳(毫秒) |
param | String | 是 | 业务参数 JSON 字符串,内容见下表 |
sign | String | 是 | MD5(param + t + key + secret) 大写 |
param 内业务参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
partnerId | String | 是 | FedEx 账号 |
partnerName | String | 是 | 账号名称 |
city | String | 否 | 城市 |
countryCode | String | 否 | 国家代码 |
postalCode | String | 否 | 邮编 |
addr | String | 否 | 街道地址 |
needInvoice | boolean | 是 | 固定为 false |
请求示例:
# 假设 key=abc123, secret=xxx, t=1717200000000
PARAM='{"partnerId":"123456789","partnerName":"某公司","city":"Shanghai","countryCode":"CN","postalCode":"200000","addr":"浦东新区XX路XX号","needInvoice":false}'
SIGN=$(echo -n "${PARAM}1717200000000abc123xxx" | md5sum | tr 'a-z' 'A-Z' | cut -d' ' -f1)
curl -X POST http://api.kuaidi100.com/sendAssistant/auth/fedex/authOne \
-H "Content-Type: application/json" \
-d "{
\"key\": \"abc123\",
\"t\": \"1717200000000\",
\"param\": \"${PARAM}\",
\"sign\": \"${SIGN}\"
}"
响应示例:
{
"code": 200,
"message": "success",
"data": {
"childKey": null,
"childSecret": null
}
}
步骤2:提交 PIN 码
接口:POST http://api.kuaidi100.com/sendAssistant/auth/fedex/pinVerify
外层通用参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
key | String | 是 | 用户 API Key |
t | String | 是 | 时间戳(毫秒) |
param | String | 是 | 业务参数 JSON 字符串,内容见下表 |
sign | String | 是 | MD5(param + t + key + secret) 大写 |
param 内业务参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
partnerId | String | 是 | FedEx 账号(须与步骤1一致) |
pin | String | 是 | 短信收到的 PIN 码 |
请求示例:
# 假设 key=abc123, secret=xxx, t=1717200000000
PARAM='{"partnerId":"123456789","pin":"725931"}'
SIGN=$(echo -n "${PARAM}1717200000000abc123xxx" | md5sum | tr 'a-z' 'A-Z' | cut -d' ' -f1)
curl -X POST http://api.kuaidi100.com/sendAssistant/auth/fedex/pinVerify \
-H "Content-Type: application/json" \
-d "{
\"key\": \"abc123\",
\"t\": \"1717200000000\",
\"param\": \"${PARAM}\",
\"sign\": \"${SIGN}\"
}"
响应示例:
{
"code": 200,
"message": "success",
"data": {
"childKey": "fedex_sub_key_xxx",
"childSecret": "fedex_sub_secret_xxx"
}
}
下单时,通过下单接口的 partnerKey 传入 childKey 返回的内容,partnerSecret 传入 childSecret 返回的内容。
两种模式对比
| 对比维度 | 发票验证 | PIN码验证 |
|---|---|---|
| 适用场景 | 有 FedEx 发票的用户 | 无发票的用户 |
| 验证凭证 | 发票号 | 手机短信 PIN 码 |
| 接口调用次数 | 1 次 | 2 次 |
| 最终返回 | childKey + childSecret | childKey + childSecret |
| 用户操作 | 提供发票信息即可 | 需查收短信并输入 PIN 码 |