注1:所有接口签名格式为统一格式
签名格式为请求的各个非空参数按照ascii码排序,排序后将各个参数值base64编码,然后 按照key1base64(value1)key2base64(value2)…拼接,最后加上您设置的加密字符串md5加密即可;推荐接口签名应该自动适配参数有变动的情况
C#签名生成代码如下:
Dictionary
ParamDic.Add("UserName", UserName);
ParamDic.Add("OrderId", OrderId);
var list = ParamDic.OrderBy(s => BitConverter.ToString(Encoding.ASCII.GetBytes(s.Key))); //将字典中的对象按ascii码排序
MD5CryptoServiceProvider MD5t = new MD5CryptoServiceProvider();
string md5Source = "";
//循环拼接字符串
foreach (var item in list)
{
if (!string.IsNullOrEmpty(item.Value))
{
md5Source += item.Key + Convert.ToBase64String(Encoding.UTF8.GetBytes(item.Value));
}
}
md5Source += “您设置的加密字符串”;
string md5Code = BitConverter.ToString(MD5t.ComputeHash(Encoding.UTF8.GetBytes(md5Source))).Replace("-", "");//sign字段结果
//然后将生成的sign结果和其他请求参数提交到接口地址
C#自动适配请求参数验证签名代码如下:
Dictionary
var list = ParamDic.OrderBy(s => BitConverter.ToString(Encoding.ASCII.GetBytes(s.Key))); //将字典中的对象按ascii码排序
MD5CryptoServiceProvider MD5t = new MD5CryptoServiceProvider();
string md5Source = "";
//循环拼接字符串
foreach (var item in list)
{
if (!”sign”. Equals(item.Key) && !string.IsNullOrEmpty(item.Value))
{
md5Source += item.Key + Convert.ToBase64String(Encoding.UTF8.GetBytes(item.Value));
}
}
md5Source += “您设置的加密字符串”;
string md5Code = BitConverter.ToString(MD5t.ComputeHash(Encoding.UTF8.GetBytes(md5Source))).Replace("-", "");
if(md5Code== ParamDic[“sign”])
{
//签名验证通过,处理业务逻辑
}
流程:(订单创建)->支付订单->设置收货信息->(通知发货完成)->提交订单状态;带括号的为我方服务器向合作方发请求
订单信息xml字段:
OrderId | 订单编号 |
GameName | 游戏名称 |
AreaName | 区名称 |
ServerName | 服务器名称 |
Price | 价格 |
BuyNum | 购买游戏币数量 |
BuyerPhoneNo | 买家联系电话 |
BuyerQQ | 买家qq |
ItemType | 商品分类 |
NumUnit | 游戏币单位 |
SinglePrice | 游戏币单价(元/游戏币) |
RoleName | 发货角色名 |
TradeType | 交易方式 |
TradePlace | 交易地点 |
OrderStatus | 订单状态 |
OrderTime | 订单创建时间 |
Sqq | 客服qq |
注2:订单接口返回json结构调整
修改前接口响应json为一层结构json
{"result":"true","message":"提交成功"}
更新后接口响应json为三层结构json
{
"StatusCode": "-2",
"StatusMsg": "认从何带布水机新才运",
"StatusData": {
"ResultCode": "0",
"ResultMsg": "农标接期积共照名",
"ResultData": {
"result": false,
"message": "高花全",
"data": ""
}
}
}
接口调用方可只关三层结构中的最里一层(红色标注部分)
注3:
获取DD373游戏区服接口参考链接:https://kf.dd373.com/helpdetail/e5675fb48f6a42e4a59ae5712b132965.html
注4:
为了更好的为您提供接口服务,需要对填写的接口地址进行验证,在提交时会对输入的接口地址进行校验,使用post请求访问输入地址,由于是验证接口,不涉及业务,无请求参数,返回结果需要包含输入的接口秘钥的md5加密值(32位小写)。
例如:接口地址为:https://www.****.com,请求参数为空,接口秘钥为:123456,返回参数为Json格式,格式如:{"result":"e10adc3949ba59abbe56e057f20f883e","message":"验证成功"}