FAQ
1、虎符控制台地址?
https://hufu-yd-console.jdcloud.com/#/hufu/list
2、如何在虎符控制台创建应用完成对接?
参考文档:https://yd-doc.jdcloud.com/docs/5-hufu/5-3-sanfanghutong/erpmigrate/erpmigrate_apply.html 注:需要创建两个虎符应用(应用类型分别为ERP系统和线下ERP系统)才能完成对接流程。
3、改造涉及到的接口标准
参考文档:https://yd-doc.jdcloud.com/docs/5-hufu/5-3-sanfanghutong/erpmigrate/erpmigrate_standard.html 注:api详细字段说明:https://hufu-doc.s3.cn-north-1.jdcloud-oss.com/hufuErpMigrateV2.html
4、虎符自定义场景
操作文档:https://yd-doc.jdcloud.com/docs/5-hufu/5-4-custom/apiGroup/readme.html
上线申请:
提交上线申请后以邮件的形式通知虎符运营审核:
邮箱: jcloud-yd@jd.com
邮件标题: 虎符自定义场景API分组上线申请
邮件内容:
- 开发者PIN(登录京东云鼎的PIN)
- API分组id
- 要发布的API分组版本号
- 业务场景/申请原因
- 接口字段描述/包含哪些字段,是否包含敏感字段
- 公司名称
- 申请人
- 联系电话
- 联系邮件(用于接收审核结果信息, 请务必填写)
5、请求虎符网关常见错误
(1)返回401错误
- a)需要确认一下虎符应用ak、sk是否正确;
- b)如果是鼎外请求鼎内的服务,需要使用类型为线下ERP系统的应用对应的ak、sk,反之使用类型为ERP系统对应的应用
- c)各种开发语言的签名包
- Go:https://github.com/jdcloud-api/jdcloud-sdk-go-signer
- Nodejs:https://github.com/jdcloud-api/jdcloud-sdk-nodejs-signer
- Php:https://github.com/jdcloud-api/jdcloud-sdk-php-signer
- Rust:https://github.com/jdcloud-api/jdcloud-sdk-rust-signer
- .net:https://github.com/jdcloud-api/jdcloud-sdk-net-signer
- Cpp:https://github.com/jdcloud-api/jdcloud-sdk-cpp-signer
- java:https://hufu-doc.s3.cn-north-1.jdcloud-oss.com/yunding-apigateway-frontend-signature-0.0.3-SNAPSHOT-jar-with-dependencies.jar
(2)后端服务返回的错误
- a)如果响应信息中不包含[gw],说明错误信息是后端服务返回的,先检查一下后端服务是否可用;
- b)如果响应信息中包含[gw],可以联系虎符技术人员排查。
6、不可逆加密,如何通过明文获得密文?
参考文档:https://yd-doc.jdcloud.com/docs/5-hufu/5-3-sanfanghutong/erpmigrate/encrypt.html
7、前端ajax调用虎符接口demo
/*
* 2020-04-01
前端调用虎符接口前需要在后端实现一个服务计算好签名信息(计算签名的参数和前端请求的参数要完全一致),上边提供了各种开发语言的签名包。
*/
function GetJDCloudGetSensitiveData(callbackFunction,url,headersZdy) {
url = "https://hufu.cn-north-1.jdcloud-api.net/order/getSensitiveData?method=jingdong.hufu.order.getSensitiveData&app_key=xxx&customerId=xxx";
var headers = {
"Content-Type": "application/json",
"X-Jdcloud-Nonce": "xxx",
"X-Jdcloud-Date": "xxx",
"Authorization": "JDCLOUD2-HMAC-SHA256 Credential=xxx/20200402/cn-north-1/xohk7ybhwien/jdcloud2_request, SignedHeaders=content-type;x-jdcloud-date;x-jdcloud-nonce, Signature=xxx"
};
$.ajax({
type: "POST",
url: url,
data:
JSON.stringify({
"orders_nos": "xxx",
"token": "xxx"
})
,
beforeSend: function (xhr) {
for (key in headers) {
if (headers.hasOwnProperty(key)) {
xhr.setRequestHeader(key, headers[key])
}
}
},
success: function (msg) {
if (callbackFunction)
callbackFunction(msg);
},
error: function (xhr, textStatus, errorThrown) {
alert(xhr.responseText);
}
});
}