Files
SOP/sop-test/src/test/java/com/gitee/sop/TaobaoClientPostTest.java
tanghc f94009e2c4 init
2019-03-08 20:10:50 +08:00

78 lines
3.5 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.gitee.sop;
import com.alibaba.fastjson.JSON;
import com.gitee.sop.taobao.TaobaoSignature;
import org.junit.Test;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* 模仿淘宝客户端请求接口
*/
public class TaobaoClientPostTest extends TestBase {
String url = "http://localhost:8081/api";
String appId = "taobao_test";
// 淘宝私钥
String secret = "G9w0BAQEFAAOCAQ8AMIIBCgKCA";
/*
参数名称 参数类型 是否必须 参数描述
method String 是 API接口名称。
app_key String 是 TOP分配给应用的AppKey。这里要注意正式环境和沙箱环境的AppKey是不同的包括AppSecret使用时要注意区分进入开放平台控制台“应用管理-概览” 和 “应用管理-沙箱环境管理”可分别查看正式环境及沙箱环境的AppKey、AppSecret
session String 否 用户登录授权成功后TOP颁发给应用的授权信息详细介绍请点击这里。当此API文档的标签上注明“需要授权”则此参数必传“不需要授权”则此参数不需要传“可选授权”则此参数为可选。
timestamp String 是 时间戳格式为yyyy-MM-dd HH:mm:ss时区为GMT+8例如2016-01-01 12:00:00。淘宝API服务端允许客户端请求最大时间误差为10分钟。
format String 否 响应格式。默认为xml格式可选值xmljson。
v String 是 API协议版本可选值2.0。
partner_id String 否 合作伙伴身份标识。
target_app_key String 否 被调用的目标AppKey仅当被调用的API为第三方ISV提供时有效。
simplify Boolean 否 是否采用精简JSON返回格式仅当format=json时有效默认值为false。
sign_method String 是 签名的摘要算法可选值为hmacmd5。
sign String 是 API输入参数签名结果签名算法参照下面的介绍。
*/
@Test
public void testPost() throws Exception {
// 公共请求参数
Map<String, String> params = new HashMap<String, String>();
params.put("app_key", appId);
params.put("method", "alipay.story.get");
params.put("format", "json");
params.put("sign_method", "md5");
params.put("timestamp", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
params.put("v", "");
// 业务参数
params.put("id", "1");
params.put("name", "葫芦娃");
// bizContent.put("name", "葫芦娃1234567890葫芦娃1234567890"); // 超出长度
System.out.println("----------- 请求信息 -----------");
System.out.println("请求参数:" + buildParamQuery(params));
System.out.println("商户秘钥:" + secret);
String content = TaobaoSignature.getSignContent(params);
System.out.println("待签名内容:" + content);
String sign = TaobaoSignature.doSign(content, secret, "md5");
System.out.println("签名(sign)" + sign);
params.put("sign", sign);
System.out.println("----------- 返回结果 -----------");
String responseData = post(url, params);// 发送请求
System.out.println(responseData);
}
private String buildParamQuery(Map<String, String> params) {
StringBuilder sb = new StringBuilder();
for (Map.Entry<String, String> entry : params.entrySet()) {
sb.append("&").append(entry.getKey()).append("=").append(entry.getValue());
}
return sb.toString().substring(1);
}
}