{{ developmentNotes_exampleCode }}
{{ developmentNotes_responseSuccessCode }}
{{ developmentNotes_responseFailCode }}
{{ signature_exampleCode }}
首先对所有请求参数按参数名的字典序( ASCII 码)升序排序。注意:
1)只按参数名进行排序,参数值保持对应即可,不参与比大小;
2)按 ASCII 码比大小,如 originId要排在 order_id 后面,不是按字母表,也不是按数值。
用户可以借助编程语言中的相关排序函数来实现这一功能,如 JAVA 中的 TreeMap 函数。
{{ signature_javaExampleCode1 }}
此步骤生成请求字符串。
将把上一步排序好的请求参数格式化成“参数名称参数值”的形式,如对 app_key 参数,其参数名称为 "app_key" ,
参数值为 "123456" , 因此格式化后就为 app_key123456 。
app_key123456body{"order_id":"20170301000001","originId":"7334"}formatjsonsource_id73753timestamp1488363493v1.0
此步骤生成签名原文字符串。
签名原文字符串由请求字符串和app_secret组成
签名原文串的拼接规则为:app_secret+请求字符串+app_secret
abcdefg123app_key123456body{"order_id":"20170301000001","originId":"7334"}formatjsonsource_id73753timestamp1488363493v1.0abcdefg123
此步骤生成签名串。
首先使用MD5对前面原文字符串进行签名
对生成签名字符串进行MD5加密。结果为:19b88a0dc87ed19d15e3ca01739f3436
将md5加密后的字符串转换为大写,结果为:19B88A0DC87ED19D15E3CA01739F3436
{{ signature_javaExampleCode }}
public static void main(String[] args) { String test = "{\n" + " \"body\": {\"orderNo\":\"0123050713524853465\",\"cancelReason\":\"不需要了\"},\n" + " \"format\": \"json\",\n" + " \"timestamp\": \"1488363493\",\n" + " \"app_key\": \"1\",\n" + " \"v\": \"v.10\",\n" + " \"source_id\": \"1\"\n" + "}"; JSONObject param = JSONObject.parseObject(test); String signature = getSignature(param, "1"); System.out.println(signature); } public static String getSignature(JSONObject param, String app_secret) { /*1.字典序排序,并拼接字符串*/ StringBuilder builder = new StringBuilder(); TreeSetset = new TreeSet<>(param.keySet()); set.forEach(key -> { builder.append(key); if (key.equals("body")) { String body = JSON.toJSONString(param.getJSONObject(key), SerializerFeature.MapSortField); builder.append(body); } else { builder.append(param.getString(key)); } }); String requestString = builder.toString(); System.out.println("requestString==>" + requestString); /*2.拼接原文串*/ String soruceString = app_secret + requestString + app_secret; System.out.println("soruceString==>" + soruceString); /*3.对原文串进行MD5加密并转成大写*/ return RSAUtlis.MD5Encrypt(soruceString).toUpperCase(); }
{{ createOrder_requestCode }}
{{ createOrder_responseSuccessCode }}
{{ callbackParam }}
{{ apiTypeParam }}
{{ orderDetail_requestParam }}
{{ orderDetail_response }}
{{ orderCanelParam }}