SDK 说明
签名算法
- 生成签名的规则: 请求参数按照字典排序,然后以 keyvalue 的形式拼接成字符串 string;最后 sign=MD5(sortParam+secretKey)。每个商户都有自己的 appkey 和 secret;
- 注意:如果请求参数中value为NULL的情况,则在拼接字符串时不计入签名字符串。
- 所有的签名效验都是在网关层进行的,后面的服务调用将不在有签名规则。
- 例如:
// 输入参数:
{
'symbol': 'ltcbtc',
'appKey': '0816016bb06417f50327e2b557d39aaa',
'sign': 'a169740d0588141ef70b71cf11ff8bf3',
'time': '1522055680'
}
// 签名算法:
string = appKey0816016bb06417f50327e2b557d39aaasymbolltcbtctime1522055680
secretKey = xxxxxxxxxxxxxxxxx
sign = MD5(string+secretKey) = MD5(appKey0816016bb06417f50327e2b557d39aaasymbolltcbtctime1522055680xxxxxxxxxxxxxxxxx)
sign = 82d38bae5fc727feea4f7a96c7db0492
调用示例
整体接入步骤
第一步:先找运维解析域名
第二步:创建应用并获取 appKey/appSecret, 配置回调地址;
第三步:用户授权注册, 获取三方商户code;
第四步:通过code获取开放平台访问token;
第五步:访问开放的资源:
准备工作 - 获取 appKey 和设置redirectUrl( 回调地址 )
开放平台是基于OAuth2.0协议标准构建的OAuth2.0授权登录系统。 在进行开放平台授权登录接入之前,需要通过管理后台准备以下接入材料:
-
appKey: 用于和开通开放平台的商户UID进行一对一绑定, 获取开放平台登陆权限的必要条件;
-
redirectUrl: 用于完成开放平台开通授权账号成功后的跳转地址; 该地址根据实际业务需求填写, 如不清楚业务需求, 可默认填写交易所主页;
登陆管理后台: 公共管理— > 开放平台管理— > 应用管理

根据红框中内容, 获取appKey和redirectUrl

用户注册授权 - OAuth授权登录页
带上正确的appkey和redirectUrl点击注册 浏览器访问地址: http://service.xxx.com/platform/login.html?appKey=xxx&redirectUrl=https:xxxx

如果没有注册, 先进行注册; 如果已经是注册用户, 则直接点击上一张图片中的”确认授权” 按钮即可;

系统会发送验证码进行授权;

注册( 或登陆 )成功获取code
且在第一步中填写的注册回调地址为交易所首页; 则可以看到下述图片, 箭头处则为当前获取的Code

获取token - 使用code换取token、openId
生成签名脚本
签名脚本配置方式:
在postman工具下图所示位置进行配置脚本内容
请求参数中带入 "sign":"{{sign}}" 即可自动生成签名( 参考后续步骤请求参数截图 )

脚本内容
//提前定义变量
var domain = "service.xxx.com"
var secret = "xxx";
pm.environment.set("domain", domain)
var requestStr = request.data;
var obj = JSON.parse(requestStr);
keys = Object.keys(obj)
console.log(obj);
//拼接待签名字符串
var str = []
for (var p = 0; p < keys.length; p++) {
if(keys[p] == "sign" ||request.data[keys[p]] === ""){ // "==" ==宽松相等,隐性类型转换,值相等,返回true; "===" 严格相等,值和类型都相等,返回true
continue;
}
// console.log(keys[p] + obj[keys[p]]);
str.push(keys[p] + obj[keys[p]]);
}
pm.environment.set("str", str)
str.sort()
str.push(secret)
var s = str.join("")
console.log("准备签名");
console.log(s);
//MD5加密签名规格,并赋值给环境变量`sign`
var sign =CryptoJS.MD5(CryptoJS.enc.Latin1.parse(s)).toString();
pm.environment.set("sign", sign);
调用接口换取token或openId
接口地址: http://servoce.xfnh.com/platformapi/chainup/open/auth/token
POSTMAN 工具调用接口示意图:

接口调用成功后, 返回信息会携带token和openId
通过Token访问开放平台资源 - 创建订单/支付/查询订单
创建支付订单
接口地址: http://service.xfnh.fnhcom/platformapi/chainup/open/opay/createThirdOrder
POSTMAN 工具调用接口示意图:

支付页面
接口地址: http://service.xfnh.com/pay.html
获取请求参数:
登陆管理后台: 公共管理— > 开放平台管理— > 应用管理
根据图片所示获取请求参数中的userId

使用POSTMAN工具获取接口调用地址
拼装完参数后的接口调用地址: https://service.xxx.com/pay.html?appKey=xxx&openId=xxx&token=xxx&orderNum=xxx
如果熟悉GET请求的工程师可以直接按照参数拼装地址访问

调用请求支付页面:

余额不足在管理平台充值增币 ( 如果余额充足可忽略该步 )
资产管理— > 财务管理 — > 赠币工具

支付成功后跳转的页面( 该页面为第一步配置的 redirectUrl )

查询支付订单
接口地址:http://service.xfnh.com/platformapi/chainup/open/opay/orderDetail
使用POSTMAN工具获取接口调用地址;
