东莞整站排名,汉滨区建设局网网站,品牌建设专家库推荐表,丹徒网站建设信息记录一下调试Tiktok shop api 踩坑记录。 主要是在按官网api上规则和加密生成sign时候一直通不过的问题#xff1a; 官网地址#xff1a;https://partner.tiktokshop.com/doc/page/63fd743e715d622a338c4eab
直接贴代码了 import lombok.extern.slf4j.Slf4j;import javax.cr…记录一下调试Tiktok shop api 踩坑记录。 主要是在按官网api上规则和加密生成sign时候一直通不过的问题 官网地址https://partner.tiktokshop.com/doc/page/63fd743e715d622a338c4eab
直接贴代码了 import lombok.extern.slf4j.Slf4j;import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.util.*;/*** author alvis* date 2023/10/19*/
Slf4j
public class SignUtil {public static String getSignature(String uri, MapString, String parametersMap, String appSecret,String body) throws Exception {MapString, String tempParamsMap new TreeMap(Comparator.naturalOrder());tempParamsMap.putAll(parametersMap);tempParamsMap.remove(sign);tempParamsMap.remove(access_token);StringBuilder input new StringBuilder(uri);for (Map.EntryString, String entry : tempParamsMap.entrySet()) {input.append(entry.getKey()).append(entry.getValue());}input new StringBuilder(appSecret input body appSecret);return hmacSHA256(appSecret, input.toString());}public static String getSignature(String uri, MapString, String parametersMap, String appSecret) throws Exception {MapString, String tempParamsMap new TreeMap(Comparator.naturalOrder());tempParamsMap.putAll(parametersMap);tempParamsMap.remove(sign);tempParamsMap.remove(access_token);StringBuilder input new StringBuilder(uri);for (Map.EntryString, String entry : tempParamsMap.entrySet()) {input.append(entry.getKey()).append(entry.getValue());}input new StringBuilder(appSecret input appSecret);return hmacSHA256(appSecret, input.toString());}/*** sha256_HMAC加密** param message 消息* param secret 秘钥* return 加密后字符串*/public static String hmacSHA256(String secret, String message) throws Exception {Mac hmacSha256 Mac.getInstance(HmacSHA256);SecretKeySpec secret_key new SecretKeySpec(secret.getBytes(), HmacSHA256);hmacSha256.init(secret_key);byte[] bytes hmacSha256.doFinal(message.getBytes());StringBuilder hs new StringBuilder();String stmp;for (int n 0; bytes ! null n bytes.length; n) {stmp Integer.toHexString(bytes[n] 0XFF);if (stmp.length() 1) {hs.append(0);}hs.append(stmp);}return hs.toString().toLowerCase();}}
注意 没有body参数的时候查询使用无body的函数即可但是body有参数的时候此处有坑拼接字符串的时候要单独处理body参数构建的json字符串直接拼接在里面即可。这个问题是在postman中代码调试发现
9a33586972b53ef4d934a5f7b9846cfb95509433/order/202309/orders/searchapp_key6aausirr0gb2fpage_size100shop_cipherTTP_CA2InQEEEEEDEtiBFSZb8SopxJlCAR4g9timestamp1697767243{↵create_time_ge:1693497600,↵create_time_lt:1697765675↵
}9a33586972b53ef4d934a5f7b9846cfb95509433