提交 a3a797ef authored 作者: 吴德鹏's avatar 吴德鹏

update

上级 c5c72043
...@@ -40,17 +40,15 @@ public class PaypalConfig { ...@@ -40,17 +40,15 @@ public class PaypalConfig {
return sdkConfig; return sdkConfig;
} }
@Scope("prototype")
@Bean @Bean
public OAuthTokenCredential authTokenCredential() { public OAuthTokenCredential authTokenCredential() {
return new OAuthTokenCredential(clientId, clientSecret, paypalSdkConfig()); return new OAuthTokenCredential(clientId, clientSecret, paypalSdkConfig());
} }
@Scope("prototype")
@Bean @Bean
public APIContext apiContext(TokenRepository tokenRepository) { public APIContext apiContext() throws PayPalRESTException {
Optional<Token> firstToken = tokenRepository.findFirstToken(); APIContext apiContext = new APIContext(authTokenCredential().getAccessToken());
APIContext apiContext = new APIContext(firstToken.get().getToken());
apiContext.setConfigurationMap(paypalSdkConfig()); apiContext.setConfigurationMap(paypalSdkConfig());
return apiContext; return apiContext;
} }
......
...@@ -10,8 +10,10 @@ import com.example.afrishop_v3.enums.ResultCodeEnum; ...@@ -10,8 +10,10 @@ import com.example.afrishop_v3.enums.ResultCodeEnum;
import com.example.afrishop_v3.models.*; import com.example.afrishop_v3.models.*;
import com.example.afrishop_v3.repository.*; import com.example.afrishop_v3.repository.*;
import com.example.afrishop_v3.util.IdUtil; import com.example.afrishop_v3.util.IdUtil;
import com.example.afrishop_v3.util.PayPalUtil;
import com.paypal.api.payments.*; import com.paypal.api.payments.*;
import com.paypal.base.rest.APIContext; import com.paypal.base.rest.APIContext;
import com.paypal.base.rest.OAuthTokenCredential;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -25,10 +27,7 @@ import java.io.IOException; ...@@ -25,10 +27,7 @@ import java.io.IOException;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.*;
import java.util.Date;
import java.util.List;
import java.util.Optional;
/** /**
* @Auther: wudepeng * @Auther: wudepeng
...@@ -54,24 +53,28 @@ public class PaypalContoller extends Controller { ...@@ -54,24 +53,28 @@ public class PaypalContoller extends Controller {
@Value("${paypal.failed_page}") @Value("${paypal.failed_page}")
private String PAYPAL_FAILED_PAGE; private String PAYPAL_FAILED_PAGE;
@Value("${paypal.mode}")
private String mode;
private final APIContext apiContext; private final APIContext oldApiContext;
private final TbCfOrderRepository orderRepository; private final TbCfOrderRepository orderRepository;
private final TbCfFinanceRepository financeRepository; private final TbCfFinanceRepository financeRepository;
private final NetworkRepository networkRepository; private final NetworkRepository networkRepository;
private final BonusRepository bonusRepository; private final BonusRepository bonusRepository;
private final PostRepository postRepository; private final PostRepository postRepository;
private final UserRepository userRepository; private final UserRepository userRepository;
private final TokenRepository tokenRepository;
public PaypalContoller(APIContext apiContext, TbCfOrderRepository orderRepository, TbCfFinanceRepository financeRepository, NetworkRepository networkRepository, BonusRepository bonusRepository, PostRepository postRepository, UserRepository userRepository) { public PaypalContoller(APIContext oldApiContext, TbCfOrderRepository orderRepository, TbCfFinanceRepository financeRepository, NetworkRepository networkRepository, BonusRepository bonusRepository, PostRepository postRepository, UserRepository userRepository, TokenRepository tokenRepository) {
this.apiContext = apiContext; this.oldApiContext = oldApiContext;
this.orderRepository = orderRepository; this.orderRepository = orderRepository;
this.financeRepository = financeRepository; this.financeRepository = financeRepository;
this.networkRepository = networkRepository; this.networkRepository = networkRepository;
this.bonusRepository = bonusRepository; this.bonusRepository = bonusRepository;
this.postRepository = postRepository; this.postRepository = postRepository;
this.userRepository = userRepository; this.userRepository = userRepository;
this.tokenRepository = tokenRepository;
} }
...@@ -82,14 +85,14 @@ public class PaypalContoller extends Controller { ...@@ -82,14 +85,14 @@ public class PaypalContoller extends Controller {
* @return Result * @return Result
*/ */
@PostMapping("/payment/{orderId}") @PostMapping("/payment/{orderId}")
public Result payment(@PathVariable("orderId") String orderId) { public Result payment(@PathVariable("orderId") String orderId) throws IOException {
logger.info("APIContext info headers:"+apiContext.getHTTPHeaders());
logger.info("APIContext info configuration:"+apiContext.getConfigurationMap());
logger.info("APIContext info token:"+apiContext.getAccessToken());
logger.info("APIContext info requestId:"+apiContext.getRequestId());
logger.info("APIContext info soa:"+apiContext.getSOAPHeader());
Result result = new Result(); Result result = new Result();
//==========================支付信息校验========================== //==========================支付信息校验==========================
//获取paypal的最新token
APIContext apiContext = getToken();
logger.info("APIContext info token:" + apiContext.getAccessToken());
//订单号 //订单号
if (StringUtils.isBlank(orderId)) { if (StringUtils.isBlank(orderId)) {
...@@ -165,6 +168,28 @@ public class PaypalContoller extends Controller { ...@@ -165,6 +168,28 @@ public class PaypalContoller extends Controller {
return payErrorInfo(result); return payErrorInfo(result);
} }
public APIContext getToken() throws IOException {
//获取paypal的最新token
Optional<Token> tokenOptional = tokenRepository.findFirstToken();
Optional<String> token = Optional.empty();
if (tokenOptional.isPresent()) {
token = Optional.ofNullable(tokenOptional.get().getToken());
}
if (!token.isPresent()) {
String oldToken = oldApiContext.getAccessToken();
String token1 = PayPalUtil.getToken(oldToken);
token = Optional.ofNullable(token1);
}
APIContext apiContext = new APIContext(token.get());
Map<String, String> sdkConfig = new HashMap<>();
sdkConfig.put("mode", mode);
apiContext.setConfigurationMap(sdkConfig);
return apiContext;
}
/** /**
* 用户取消支付 * 用户取消支付
*/ */
...@@ -185,6 +210,9 @@ public class PaypalContoller extends Controller { ...@@ -185,6 +210,9 @@ public class PaypalContoller extends Controller {
@GetMapping("/success/{orderId}") @GetMapping("/success/{orderId}")
public void paymentSuccess(@PathVariable("orderId") String orderId, HttpServletRequest request, HttpServletResponse response) throws Exception { public void paymentSuccess(@PathVariable("orderId") String orderId, HttpServletRequest request, HttpServletResponse response) throws Exception {
logger.info("paypal支付校验开始,时间:" + getTime()); logger.info("paypal支付校验开始,时间:" + getTime());
//获取paypal的最新token
APIContext apiContext = getToken();
boolean verify = false; boolean verify = false;
String payerId = request.getParameter("PayerID"); String payerId = request.getParameter("PayerID");
//订单id //订单id
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论