StripeService.java 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. package com.fdkankan.pay.util.stripe;
  2. import com.fdkankan.pay.common.ResultCode;
  3. import com.fdkankan.pay.config.PayConfig;
  4. import com.fdkankan.pay.entity.Order;
  5. import com.fdkankan.pay.entity.PaypalConfig;
  6. import com.fdkankan.pay.entity.StripeConfig;
  7. import com.fdkankan.pay.exception.BusinessException;
  8. import com.fdkankan.pay.response.OpenPayResponse;
  9. import com.fdkankan.pay.service.IStripePriceService;
  10. import com.fdkankan.pay.service.IStripeProductService;
  11. import com.fdkankan.pay.util.CacheUtil;
  12. import com.paypal.api.payments.Payment;
  13. import com.stripe.model.Price;
  14. import com.stripe.model.Product;
  15. import com.stripe.model.checkout.Session;
  16. import com.stripe.param.checkout.SessionCreateParams;
  17. import lombok.extern.slf4j.Slf4j;
  18. import org.apache.commons.lang3.StringUtils;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.stereotype.Service;
  21. import javax.print.attribute.standard.NumberOfInterveningJobs;
  22. import javax.servlet.http.HttpServletRequest;
  23. import javax.servlet.http.HttpServletResponse;
  24. import java.math.BigDecimal;
  25. import java.util.HashMap;
  26. import java.util.Map;
  27. import java.util.UUID;
  28. @Service
  29. @Slf4j
  30. public class StripeService {
  31. @Autowired
  32. IStripeProductService stripeProductService;
  33. @Autowired
  34. IStripePriceService stripePriceService;
  35. public Object openPay(Order param, String ipAddr,String lang) {
  36. StripeConfig stripeConfig = PayConfig.stripeConfigMap.get(param.getServeId());
  37. if(stripeConfig == null){
  38. throw new BusinessException(ResultCode.PAYPAL_CONFIG_ERROR);
  39. }
  40. stripeConfig.setSuccessUrl( CacheUtil.mainUrl + stripeConfig.getCallBackUrl() +"/"+param.getOrderSn()+"/"+param.getPayType()+"/success");
  41. stripeConfig.setCancelUrl( CacheUtil.mainUrl + stripeConfig.getCallBackUrl() +"/"+param.getOrderSn()+"/"+param.getPayType()+"/cancel");
  42. //stripe支付
  43. if(param.getPayType() == 6 ){
  44. return this.createPay(param,stripeConfig,lang);
  45. }
  46. throw new BusinessException(ResultCode.WX_ORDER_PAY_TYPE_ERROR);
  47. }
  48. public Object createPay(Order param,StripeConfig stripeConfig,String lang){
  49. try {
  50. String productName = StringUtils.isBlank(param.getProductName()) ? "product" :param.getProductName();
  51. String productId = stripeProductService.getByName(productName);
  52. if(StringUtils.isBlank(productId)){
  53. throw new BusinessException(ResultCode.STRIPE_ERROR);
  54. }
  55. String priceId = stripePriceService.getByParam(param.getOrderMoney(),stripeConfig.getCurrency(),productId,param.getAutoPay(),param.getAutoPayTime());
  56. if(StringUtils.isBlank(priceId)){
  57. throw new BusinessException(ResultCode.STRIPE_ERROR);
  58. }
  59. SessionCreateParams.Mode mode = SessionCreateParams.Mode.PAYMENT;
  60. if(param.getAutoPay() == 1){
  61. mode = SessionCreateParams.Mode.SUBSCRIPTION;
  62. }
  63. SessionCreateParams.Locale locale = SessionCreateParams.Locale.AUTO;
  64. if(StringUtils.isNotBlank(lang) ){
  65. locale = SessionCreateParams.Locale.valueOf(lang.toUpperCase());
  66. }
  67. SessionCreateParams params4 = SessionCreateParams.builder()
  68. .setMode(mode)
  69. .setSuccessUrl(stripeConfig.getSuccessUrl())
  70. .setCancelUrl(stripeConfig.getCancelUrl())
  71. .setLocale(locale)
  72. .setCustomerEmail(param.getUserName())
  73. .addLineItem(
  74. SessionCreateParams.LineItem.builder()
  75. .setQuantity(1L)
  76. .setPrice(priceId)
  77. .build()).putMetadata("orderId", param.getOrderSn())
  78. .build();
  79. Session session = Session.create(params4);
  80. OpenPayResponse openPayResponse = new OpenPayResponse();
  81. openPayResponse.setH5Url(session.getUrl());
  82. openPayResponse.setOrderSn(param.getOrderSn());
  83. openPayResponse.setPayType(6);
  84. return openPayResponse;
  85. }catch (Exception e){
  86. log.info("创建stripe支付失败--{}",e);
  87. throw new BusinessException(ResultCode.STRIPE_ERROR);
  88. }
  89. }
  90. public Boolean callBack(HttpServletRequest request, HttpServletResponse response, Order order, String result) {
  91. log.info("stripe-callback:{},{}",order,request);
  92. Boolean payFlag = false;
  93. String trade_no = null;
  94. String openId = null;
  95. if("cancel".equals(result)){
  96. return false;
  97. }
  98. try {
  99. Map<String, String[]> parameterMap = request.getParameterMap();
  100. for (String key : parameterMap.keySet()) {
  101. log.info("stripe-callBack--request:{},{}",key,request.getParameter(key));
  102. }
  103. }catch (Exception e) {
  104. log.error("paypal支付回调异常,errorMsg:{}", e.getMessage());
  105. return false;
  106. }finally {
  107. //orderService.payResult(order,payFlag,trade_no,openId);
  108. }
  109. return true;
  110. }
  111. }