|
@@ -1,22 +1,29 @@
|
|
|
package cn.kdan.cloud.pdf.office.payment.service.impl;
|
|
|
|
|
|
-import cn.kdan.cloud.pdf.office.api.payment.bo.GeneratePayLinkPaddleBO;
|
|
|
-import cn.kdan.cloud.pdf.office.api.payment.bo.GeneratePayLinkResultPaddleBO;
|
|
|
-import cn.kdan.cloud.pdf.office.api.payment.bo.OrderSucceededBO;
|
|
|
+import cn.kdan.cloud.pdf.office.api.payment.bo.*;
|
|
|
import cn.kdan.cloud.pdf.office.api.payment.constant.OrderConstant;
|
|
|
+import cn.kdan.cloud.pdf.office.api.payment.constant.UserAction;
|
|
|
import cn.kdan.cloud.pdf.office.api.payment.dto.ChargebackOrderDTO;
|
|
|
import cn.kdan.cloud.pdf.office.api.payment.dto.CreatOrderDTO;
|
|
|
import cn.kdan.cloud.pdf.office.api.payment.dto.CreatOrderManualDTO;
|
|
|
+import cn.kdan.cloud.pdf.office.api.payment.enums.PaymentMethodEnum;
|
|
|
+import cn.kdan.cloud.pdf.office.api.payment.enums.ProductTypeEnum;
|
|
|
+import cn.kdan.cloud.pdf.office.api.payment.paypal.ApplicationContext;
|
|
|
+import cn.kdan.cloud.pdf.office.api.payment.paypal.Money;
|
|
|
+import cn.kdan.cloud.pdf.office.api.payment.paypal.PayerName;
|
|
|
+import cn.kdan.cloud.pdf.office.api.payment.paypal.SubscriberRequest;
|
|
|
import cn.kdan.cloud.pdf.office.api.payment.vo.CreatOrderResultVO;
|
|
|
import cn.kdan.cloud.pdf.office.api.payment.vo.OrderUpdateVO;
|
|
|
import cn.kdan.cloud.pdf.office.api.payment.vo.OrdersVO;
|
|
|
import cn.kdan.cloud.pdf.office.api.product.feign.ProductApi;
|
|
|
import cn.kdan.cloud.pdf.office.api.product.vo.ProductPriceVo;
|
|
|
+import cn.kdan.cloud.pdf.office.api.product.vo.ProductVO;
|
|
|
import cn.kdan.cloud.pdf.office.common.constant.RabbitMqConstant;
|
|
|
import cn.kdan.cloud.pdf.office.common.constant.RedisKeyConstant;
|
|
|
import cn.kdan.cloud.pdf.office.common.exception.BackendRuntimeException;
|
|
|
import cn.kdan.cloud.pdf.office.common.utils.MyDateUtils;
|
|
|
import cn.kdan.cloud.pdf.office.payment.client.PaddleClient;
|
|
|
+import cn.kdan.cloud.pdf.office.payment.client.PaypalClient;
|
|
|
import cn.kdan.cloud.pdf.office.payment.entity.Order;
|
|
|
import cn.kdan.cloud.pdf.office.payment.error.ErrorMessage;
|
|
|
import cn.kdan.cloud.pdf.office.payment.mapper.OrderMapper;
|
|
@@ -29,6 +36,7 @@ import lombok.extern.slf4j.Slf4j;
|
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.cache.annotation.Cacheable;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
@@ -52,6 +60,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
|
|
|
private final RabbitTemplate rabbitTemplate;
|
|
|
|
|
|
+
|
|
|
+ private final PaypalClient paypalClient;
|
|
|
+
|
|
|
// private final SubscriptionsService subscriptionsService;
|
|
|
|
|
|
@Override
|
|
@@ -61,12 +72,14 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
".concat('-').concat(#creatOrderDTO.paymentMethod.value)",
|
|
|
cacheManager = "myRedisCacheManager", unless = "#result == null")
|
|
|
public CreatOrderResultVO creatOrder(CreatOrderDTO creatOrderDTO) {
|
|
|
+ ProductVO product = productApi.getProduct(creatOrderDTO.getProductId()).getResult();
|
|
|
+ PaymentMethodEnum paymentMethodEnum = PaymentMethodEnum.fromValue(product.getPayWay());
|
|
|
log.info("creatOrder:{}", creatOrderDTO);
|
|
|
Order order = new Order();
|
|
|
- order.setAppId(creatOrderDTO.getAppId());
|
|
|
+ order.setAppId(product.getAppId().toString());
|
|
|
order.setUserId(creatOrderDTO.getUserId());
|
|
|
order.setProductId(creatOrderDTO.getProductId());
|
|
|
- order.setPayment(creatOrderDTO.getPaymentMethod().getValue());
|
|
|
+ order.setPayment(paymentMethodEnum.getValue());
|
|
|
order.setTradeNo(UUID.randomUUID().toString());
|
|
|
order.setStatus(OrderConstant.CREATED);
|
|
|
order.setInvoiceNo(MyDateUtils.getTimeStamp() + (int) ((Math.random() * 9 + 1) * 1000));
|
|
@@ -74,8 +87,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
String readeNo = MyDateUtils.getTimeStamp() + "-" + creatOrderDTO.getProductId() + "-" + (int) ((Math.random() * 9 + 1) * 1000);
|
|
|
order.setTradeNo(readeNo);
|
|
|
// 查询当前产品多少钱
|
|
|
+ // 根据产品id获取产品信息
|
|
|
ProductPriceVo productPrice = productApi.getProductPrice(creatOrderDTO.getProductId(),creatOrderDTO.getUserId()).getResult();
|
|
|
- switch (creatOrderDTO.getPaymentMethod()) {
|
|
|
+ switch (paymentMethodEnum) {
|
|
|
case WXPAY:
|
|
|
break;
|
|
|
case ALIPAY:
|
|
@@ -94,6 +108,32 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
case NO_NEED_TO_PAY:
|
|
|
break;
|
|
|
case PAYPAL:
|
|
|
+ //创建paypal订阅
|
|
|
+ if(ProductTypeEnum.PLAN.getValue().equals(product.getType())){
|
|
|
+ CreatSubscriptionsPaypalBO creatSubscriptionsBO = new CreatSubscriptionsPaypalBO();
|
|
|
+ Money shippingAmount = new Money();
|
|
|
+ shippingAmount.setCurrency_code("USD");
|
|
|
+ creatSubscriptionsBO.setShipping_amount(shippingAmount);
|
|
|
+ //价格,从产品计划中获取,订阅不需要设置价格
|
|
|
+ //shippingAmount.setValue("0.00");
|
|
|
+ SubscriberRequest subscriberRequest = new SubscriberRequest();
|
|
|
+ subscriberRequest.setName(PayerName.builder().given_name("鹏辉").surname("王").build());
|
|
|
+ subscriberRequest.setEmailAddress("ddfme123@163.com");
|
|
|
+ //设置订阅人相关信息
|
|
|
+ creatSubscriptionsBO.setSubscriber(subscriberRequest);
|
|
|
+ ApplicationContext applicationContext = new ApplicationContext();
|
|
|
+ applicationContext.setBrand_name("KDanMobile");
|
|
|
+ applicationContext.setLocale("zh-CN");
|
|
|
+ // applicationContext.setShipping_preference("");
|
|
|
+ applicationContext.setUser_action(UserAction.SUBSCRIBE_NOW);
|
|
|
+ //成功或失败回调url
|
|
|
+ applicationContext.setReturn_url("https://www.baidu.com");
|
|
|
+ applicationContext.setCancel_url("https://www.bilibili.com");
|
|
|
+ //订阅计划id
|
|
|
+ creatSubscriptionsBO.setPlan_id(product.getThirdPayId());
|
|
|
+ creatSubscriptionsBO.setApplication_context(applicationContext);
|
|
|
+ CreatSubscriptionsResultPaypalBO resultBO = paypalClient.creatSubscriptions(creatSubscriptionsBO);
|
|
|
+ };
|
|
|
break;
|
|
|
// 当前支付方式无效
|
|
|
default:
|