签名算法

  1. 生成签名的规则: 请求参数按照字典排序,然后以 keyvalue 的形式拼接成字符串 string;最后 sign=MD5(sortParam+secretKey)。每个商户都有自己的 appkey 和 secret;
  2. 注意:如果请求参数中value为NULL的情况,则在拼接字符串时不计入签名字符串。
  3. 所有的签名效验都是在网关层进行的,后面的服务调用将不在有签名规则。
  4. 例如:
// 输入参数:
{
    'symbol': 'ltcbtc',
    'appKey': '0816016bb06417f50327e2b557d39aaa',
    'sign': 'a169740d0588141ef70b71cf11ff8bf3',
    'time': '1522055680'
}
// 签名算法:

string = appKey0816016bb06417f50327e2b557d39aaasymbolltcbtctime1522055680
secretKey = xxxxxxxxxxxxxxxxx
sign = MD5(string+secretKey) = MD5(appKey0816016bb06417f50327e2b557d39aaasymbolltcbtctime1522055680xxxxxxxxxxxxxxxxx)
sign = 82d38bae5fc727feea4f7a96c7db0492

开放平台Demo地址: https://github.com/exchange-platformApi

调用示例

整体接入步骤

第一步:先找运维解析域名

第二步:创建应用并获取 appKey/appSecret, 配置回调地址;

第三步:用户授权注册, 获取三方商户code;

第四步:通过code获取开放平台访问token;

第五步:访问开放的资源:

准备工作 - 获取 appKey 和设置redirectUrl( 回调地址 )

开放平台是基于OAuth2.0协议标准构建的OAuth2.0授权登录系统。 在进行开放平台授权登录接入之前,需要通过管理后台准备以下接入材料:

  1. appKey: 用于和开通开放平台的商户UID进行一对一绑定, 获取开放平台登陆权限的必要条件;

  2. 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

注意!!! openId 和userId 只能存在一个,如果都同时存在 优先选择openId

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工具获取接口调用地址;

返回结果即为查询成功后订单信息