diff --git a/pom.xml b/pom.xml index 31d97a9..04ec948 100644 --- a/pom.xml +++ b/pom.xml @@ -243,20 +243,17 @@ shedlock-provider-redis-spring 4.44.0 - com.douyin.openapi sdk 1.0.6 + system + ${project.basedir}/src/main/resources/lib/sdk-1.0.6.jar + - - - douyin-openapi-repo - https://artifacts-cn-beijing.volces.com/repository/douyin-openapi/ - - + @@ -275,6 +272,19 @@ *.yml + + src/main/resources + + **/*.jar + + ${project.build.directory}/lib + + + src/main/resources + + lib/** + + @@ -310,6 +320,19 @@ true + + org.apache.maven.plugins + maven-shade-plugin + 3.2.4 + + + package + + shade + + + + diff --git a/src/main/java/com/sczx/order/service/impl/DouyinServiceImpl.java b/src/main/java/com/sczx/order/service/impl/DouyinServiceImpl.java index 4d5f55c..32aaba3 100644 --- a/src/main/java/com/sczx/order/service/impl/DouyinServiceImpl.java +++ b/src/main/java/com/sczx/order/service/impl/DouyinServiceImpl.java @@ -1,19 +1,40 @@ package com.sczx.order.service.impl; +import com.aliyun.tea.TeaException; +import com.douyin.openapi.client.Client; +import com.douyin.openapi.client.models.*; +import com.douyin.openapi.credential.models.Config; + + +import com.sczx.order.config.DouyinTokenManager; import com.sczx.order.exception.InnerException; import com.sczx.order.service.DouyinService; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.net.HttpURLConnection; import java.net.URL; +import java.util.List; @Slf4j @Service public class DouyinServiceImpl implements DouyinService { + @Value("${douyin.appId}") + private String CLIENT_KEY = "awomt6nnjlfc491m"; + + @Value("${douyin.appSecret}") + private String CLIENT_SECRET = "c678c411c7a68c6f97969f2dbd8ef8fc"; + + @Value("${douyin.appSecret}") + private String ACCOUNT_ID = "7442188302710065206"; + + @Value("${douyin.appSecret}") + private String POI_ID = "7442188302710065206"; + @Transactional(rollbackFor = Exception.class) @Override public String resolveShortUrlToGetObjectId(String shortUrl) { @@ -44,6 +65,54 @@ public class DouyinServiceImpl implements DouyinService { throw new InnerException("扫码核销失败,二维码不正确"); } + } + + public void Prepare(List orderIds) throws Exception { + // 获取当前有效的access_token + String accessToken = DouyinTokenManager.getCurrentToken(); + + if (accessToken == null || accessToken.isEmpty()) { + throw new RuntimeException("无法获取有效的access_token"); + } + + try { + Config config = new Config().setClientKey(CLIENT_KEY).setClientSecret(CLIENT_SECRET); // 改成自己的app_id跟secret + Client client = new Client(config); + /* 构建请求参数,该代码示例中只给出部分参数,请用户根据需要自行构建参数值 + token: + 1.若用户自行维护token,将用户维护的token赋值给该参数即可 + 2.SDK包中有获取token的函数,请根据接口path在《OpenAPI SDK 总览》文档中查找获取token函数的名字 + 在使用过程中,请注意token互刷问题 + header: + sdk中默认填充content-type请求头,若不需要填充除content-type之外的请求头,删除该参数即可 + */ + CertificatePrepareRequest sdkRequest = new CertificatePrepareRequest(); + sdkRequest.setAccessToken(accessToken); + sdkRequest.setAccountId(ACCOUNT_ID); + sdkRequest.setCode("GB3ChSgXHc"); + sdkRequest.setEncryptedData("9Q28CnUoEX"); + sdkRequest.setPoiId("KY9n9WUFKe"); + CertificatePrepareResponse sdkResponse = client.CertificatePrepare(sdkRequest); + processCertificatePrepareResponse(sdkResponse); + } catch (TeaException e) { + System.out.println(e.getMessage()); + + } catch (Exception e) { + System.out.println(e.getMessage()); + + } + } + + public void processCertificatePrepareResponse(CertificatePrepareResponse response) { + String verifyToken = response.getData().getVerifyToken(); + + response.getData().getCertificates().forEach(certificate -> { + Long certificateId = certificate.getCertificateId(); + String skuId =certificate.getSku().getSkuId() ; + certificate.getReserveInfo().getOrderReserveUserInfoList().forEach(orderReserveUserInfo -> { + + }); + }); } diff --git a/src/main/resources/lib/sdk-1.0.6.jar b/src/main/resources/lib/sdk-1.0.6.jar new file mode 100644 index 0000000..005ed02 Binary files /dev/null and b/src/main/resources/lib/sdk-1.0.6.jar differ