淘宝客软件开发-java淘宝客开发
java淘宝客开发(二)
淘宝客订单获取接口
通过接口获取淘宝客订单,非渠道管理模块,只需要淘宝客授权即可。
通过在淘宝联盟开发平台文档搜索可发现此接口:
淘宝客订单获取
taobao.tbk.sc.order.details.get,此接口通过用户授权获取到用户的授权session key,利用此session key便能获取到用户的淘宝客订单,此订单不需要进一步绑定对应的PID推广位信息,获取是指定时间内产生的订单数据,订单数据中会含有推广位PID的字段,固可以用于进行数据的筛选,此为此接口对于查询时间范围有要求:“订单查询结束时间,订单开始时间至订单结束时间,中间时间段日常要求不超过3个小时,但大促期间预估时间段不可超过20分钟淘宝客软件开发,超过会提示错误。订单查询API最多只能查到三个月内的订单,时间超过3个月的订单获取不到。”,推荐的查询时间范围为20分钟。
但是此接口并未对外提供,申请此接口权限还需要邀约制,成为其淘宝工具开发者,此API的权限获取相对而言比较苛刻,需要申请成为淘宝客软件工具开发者才能获取到,相应准入条件要求:#!/product/index?type=detail&id=405&knowledgeId=7839。
第三方淘宝客订单接口调用示例
// An highlighted block
**
* @program: third-party-api
*
* @description: 淘宝客业务处理service类
*
* @author: ren
*
* @create: 2020-04-03 11:35
**/
@Service
public class TaoBaoKeService {
// 注入第三方淘宝客配置类
@Autowired
DingDanXiaConfig dingDanXiaConfig;
/**
* @Description: 调用第三方接口获取得到淘宝订单列表
* @Param: [paramMap]
* @return: java.util.List
* @Author: ren
* @Date: 2020/4/3
*/
public List<XdTaobaoOrderInfo> getTaoBaoKeOrder(Map<String, String> paramMap) throws Exception {
paramMap.put("apikey",dingDanXiaConfig.getApiKey());
// 请求调用接口
Response response = OkHttpUtils.getInstance().getData(dingDanXiaConfig.getApiUrl(), paramMap);
// 获取得到请求结果
String responseStr = response.body().string();
// 获取得到接口调用结果 并转换为订单对象
return MapperUtils.json2listByTree(responseStr, "data", XdTaobaoOrderInfo.class, PropertyNamingStrategy.SNAKE_CASE);
}
}
注:在通过对第三方接口提供基础版与多用户版,博主使用的是基础版,一个账号只能绑定一个淘宝联盟,所以直接填写在了配置文件中,若使用多用户版则需要存放在数据存储库中,然后将对应的授权ID去指定查询某个淘宝客的订单数据。对于多用户版第三方接口平台一般会将淘宝客的授权信息回调给个人。
利用Okhttp3获取第三方接口数据,再使用Jackson工具类MapperUtils实现JSON反序列化对象淘宝客软件开发,PropertyNamingStrategy.SNAKE_CASE属性表示序列化对象属性为下划线,如tb_paid_time属性映射到tbPaidTime。
最后贴一份淘宝客订单pojo,方便大家直接使用,当然若是能申请到权限,可直接下载官方提供的SDK,对象就不用自己新建了。
// An highlighted block
@Table(name = "xd_taobao_order_info")
@AllArgsConstructor
@NoArgsConstructor
@Data
public class XdTaobaoOrderInfo implements Serializable {
@Id
@GeneratedValue(generator = "JDBC")
private Long id;
// 新补充userId与openId 用以确认唯一性
@NotEmpty
private Integer userId;
// /**
// * 抖音用户id
// */
// private String douyinUserId;
@NotEmpty
private String authorizationId;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date tbPaidTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date tkPaidTime;
private BigDecimal payPrice;
private String pubShareFee;
private Long tradeId;
private String tkOrderRole;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date tkEarningTime;
private Long adzoneId;
private String pubShareRate;
private Long refundTag;
private String subsidyRate;
private String tkTotalRate;
private String itemCategoryName;
private String sellerNick;
private Long pubId;
private String alimamaRate;
private String subsidyType;
private String itemImg;
private String pubSharePreFee;
private BigDecimal alipayTotalPrice;
private String itemTitle;
private String siteName;
private Long itemNum;
private String subsidyFee;
private String alimamaShareFee;
private String tradeParentId;
private String orderType;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date tkCreateTime;
private String flowSource;
private String terminalType;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date clickTime;
private Long tkStatus;
private BigDecimal itemPrice;
private String itemId;
private String adzoneName;
private String totalCommissionRate;
private String itemLink;
private Long siteId;
private String sellerShopTitle;
private String incomeRate;
private String totalCommissionFee;
private Long specialId;
private Long relationId;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date tkDepositTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date tbDepositTime;
private BigDecimal depositPrice;
private BigDecimal tkCommissionPreFeeForMediaPlatform;
private BigDecimal tkCommissionFeeForMediaPlatform;
private BigDecimal tkCommissionRateForMediaPlatform;
private static final long serialVersionUID = 1L;
}