【Java】阿里环球Antom支付对接

阿里环球Antom支付对接

线上文档地址:
GitHub:https://github.com/alipay/global-open-sdk-java
文档:https://global.alipay.com/docs/ac/ams_zh-cn/session_cashier

maven:

        <!--阿里国际支付-->
        <dependency>
            <groupId>com.alipay.global.sdk</groupId>
            <artifactId>global-open-sdk-java</artifactId>
            <version>2.0.49</version>
        </dependency>

新增作用在实现类上的注解

import com.ycwl.blindBox.enums.PayTypeEnum;

import java.lang.annotation.*;

/**
 * <p>支付方式策略类型</p>
 *
 * @Description
 */
//作用在类上
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
//子类可以继承此注解
@Inherited
public @interface PayType {
   

    /**
     * 支付方式策略类型
     *
     * @return 策略类型
     */
    PayTypeEnum type();

}

编写配置实体:AntomConfig

import lombok.Data;

/**
 * <p>DESC: </p>
 * <p>VERSION:1.0.0</p>
 */
@Data
public class AntomConfig {
   

    /**
     * 支付网关地址
     */
    private String gatewayUrl;

    /**
     * 商户私钥
     */
    private String merchantPrivateKey;

    /**
     * 支付宝公钥
     */
    private String alipayPublicKey;

    /**
     * 客户端 ID
     */
    private String clientId;

    /**
     * 系统商户 ID
     */
    private String referenceMerchantId;

    /**
     * 支付回调地址
     */
    private String payNotifyUrl;

    /**
     * 退款回调地址
     */
    private String refundNotifyUrl;

    /**
     * 货币代码
     */
    private String currency;

    /**
     * 最小币种单位
     */
    private String currencyValue;

}

编写服务类:AlipayService

import com.alipay.global.api.exception.AlipayApiException;
import com.alipay.global.api.request.ams.notify.AlipayPayResultNotify;
import com.alipay.global.api.request.ams.notify.AlipayRefundNotify;
import com.ycwl.blindBox.constant.baseResp.ApiResponse;
import com.ycwl.blindBox.model.common.AntomResultResp;
import com.ycwl.blindBox.model.common.StatusReqDTO;
import com.ycwl.blindBox.model.dto.BagBoxDeliverDTO;
import com.ycwl.blindBox.model.dto.BagBoxExchangeDTO;
import com.ycwl.blindBox.model.dto.BagBoxTrailDTO;
import com.ycwl.blindBox.model.dto.BagBoxTrailGruopGoodsDTO;
import com.ycwl.blindBox.model.dto.giveRecord.GiveAppReqDTO;
import com.ycwl.blindBox.model.vo.*;
import org.springframework.web.bind.annotation.RequestBody;

import java.math.BigDecimal;
import java.util.List;
import java.util.Set;

/**
 * @author songmingsong
 * @description antom支付
 */
public interface AlipayService {
   

    /**
     * 创建支付订单
     *
     * @param paymentRequestId 商户为标识支付请求所分配的专属 ID。Antom 使用此字段进行幂等性控制。
     * @param orderId          在商户端标识订单的专属 ID,由直接向客户提供服务或商品的商户分配
     * @param orderDescription 订单的摘要描述。此字段用于显示用户消费记录以及其他后续操作
     * @param redirectUrl      用户完成支付后跳转到的商户页面链接。
     * @return
     * @throws AlipayApiException
     */
    AntomPayResultVO createPayment(String paymentRequestId,
                                   String orderId,
                                   String orderDescription,
                                   String redirectUrl,
                                   BigDecimal amount) throws AlipayApiException;

    /**
     * 支付结果查询
     *
     * @param payOrderNo 支付订单号
     * @return
     * @throws AlipayApiException
     */
    AntomPayResultVO paymentResultInquiry(String payOrderNo) throws AlipayApiException;

    /**
     * 取消支付
     *
     * @param payOrderNo 支付订单号
     * @return
     * @throws AlipayApiException
     */
    AntomPayResultVO paymentCancel(String payOrderNo) throws AlipayApiException;

    /**
     * 支付回调
     *
     * @param alipayPayResultNotify
     */
    AntomResultResp payNotify(AlipayPayResultNotify alipayPayResultNotify) throws AlipayApiException;

    /**
     * 退款
     *
     * @param refundVO
     */
    AntomRefundResultVO refund(AntomRefundVO refundVO) throws AlipayApiException;

    /**
     * 退款结果查询
     *
     * @param payOrderNo 支付订单号
     * @return
     * @throws AlipayApiException
     */
    AntomRefundResultVO refundInquiry(String payOrderNo) throws AlipayApiException;

    /**
     * 退款回调
     *
     * @param alipayRefundNotify
     */
    AntomResultResp refundNotify(AlipayRefundNotify alipayRefundNotify);
}

服务实现类:AlipayServiceImpl
这里面包含了一些业务逻辑,不需要的话请删除

package com.ycwl.blindBox.service.impl;


import com.alibaba.fastjson2.JSONObject;
import com.alipay.global.api.AlipayClient;
import com.alipay.global.api.DefaultAlipayClient;
import com.alipay.global.api.exception.AlipayApiException;
import com.alipay.global.api.model.Result;
import com.alipay.global.api.model.ResultStatusType;
import com.alipay.global.api.model.ams.*;
import com.alipay.global.api.model.ams.Order;
import com.alipay.global.api.request.ams.notify.AlipayPayResultNotify;
import com.alipay.global.api.request.ams.notify.AlipayRefundNotify;
import com.alipay.global.api.request.ams.pay.*;
import com.alipay.global.api.response.ams.pay.*;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.ycwl.blindBox.annotation.PayType;
import com.ycwl.blindBox.config.ApplicationContextHelper;
import com.ycwl.blindBox.constant.OrderNoTypeConstant;
import com.ycwl.blindBox.constant.SystemSettingTypeConstant;
import com.ycwl.blindBox.enums.*;
import com.ycwl.blindBox.exception.BaseException;
import com.ycwl.blindBox.mapper.*;
import com.ycwl.blindBox.model.common.AntomConfig;
import com.ycwl.blindBox.model.common.AntomResultResp;
import com.ycwl.blindBox.model.dto.OrderParamDTO;
import com.ycwl.blindBox.model.dto.vipCard.VipCardAwardSetDTO;
import com.ycwl.blindBox.model.entity.*;
import com.ycwl.blindBox.model.vo.AntomPayResultVO;
import com.ycwl.blindBox.model.vo.AntomRefundResultVO;
import com.ycwl.blindBox.model.vo.AntomRefundVO;
import com.ycwl.blindBox.model.vo.PayParamVO;
import com.ycwl.blindBox.service.*;
import com.ycwl.blindBox.utils.capital.CapitalChangeUtil;
import com.ycwl.blindBox.utils.dateUtils.DateUtils;
import com.ycwl.blindBox.utils.pubfunc.PubfuncUtil;
import com.ycwl.blindBox.utils.snowFlakeUtils.SnowFlakeUtil;
import com.ycwl.blindBox.utils.userLevelUtils.UserLevelUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

import static com.ycwl.blindBox.constant.SystemSettingTypeConstant.ANTOM;
import static com.ycwl.blindBox.enums.BizCodeEnum.*;
import static com.ycwl.blindBox.enums.SysSettingEnum.CZ_INTEGRAL;
import static com.ycwl.blindBox.enums.SysSettingEnum.GZ_INTEGRAL;

/**
 * @Author: songmingsong
 * @CreateTime: 2024-12-25
 * @Description: 阿里Antom全球支付实现
 * @Version: 1.0
 */
@PayType(type = PayTypeEnum.ONLINE)
@Component("AlipayServiceImpl")
@Slf4j
public class AlipayServiceImpl implements PayProcessingService, AlipayService {
   
    @Autowired
    private RefundRecordLogMapper refundRecordLogMapper;
    @Autowired
    private OrderMapper orderMapper;
    @Autowired
    private OrderExpressMapper orderExpressMapper;
    @Autowired
    private UserVipCardOrderMapper userVipCardOrderMapper;
    @Autowired
    private BlindBoxOrderServiceImpl blindBoxOrderService;
    @Autowired
    private UserVipCardMapper userVipCardMapper;

    @Autowired
    private VipCardAwardSetMapper awardSetMapper;
    @Autowired
    private VipCardAwardMapper awardMapper;
    @Autowired
    private UserCardAwardReceiveRecordMapper userCardAwardReceiveRecordMapper;
    @Autowired
    private VipCardMapper vipCardMapper;

    @Autowired
    private UserBalanceRechargeLogMapper userBalanceRechargeLogMapper;
    @Autowired
    private OrderService orderService;
    @Autowired
    private CapitalChangeUtil capitalChangeUtil;
    @Autowired
    private UserBalanceChangeLogMapper userBalanceChangeLogMapper;
    @Autowired
    private UserLevelUtil userLevelUtil;
    @Autowired
    private RechargeSettingMapper rechargeSettingMapper;
    @Autowired
    private BagServiceImpl bagService;
    @Autowired
    private ShopOrderServiceImpl shopOrderService;
    @Autowired
    private InviteNewRecordService inviteNewRecordService;

    private final Map<String, Lock> lockMap = new ConcurrentHashMap<>();

    private AntomConfig antomConfig =</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值