自定义支付类型
第一步
添加hzero支付服务核心组件依赖
<dependency>
<groupId>org.hzero.starter</groupId>
<artifactId>hzero-starter-pay-core</artifactId>
</dependency>
第二步
以支付宝为例
-
代码结构:
-
AliPayConfig
继承org.hzero.starter.pay.infra.integrator.AbstractPayConfig
,是支付类型的置对象 -
AliPayDomainService
继承org.hzero.starter.pay.infra.integrator.AbstractPayService
,重写方法,实现支付的相关方法 -
AliPayTransferType
实现org.hzero.starter.pay.infra.integrator.bean.TransferType
,支付宝转账类型 -
AliPayTransactionType
实现org.hzero.starter.pay.infra.integrator.bean.TransactionType
,支付宝交易类型 -
AliPaySdkConstants
继承org.hzero.starter.pay.infra.integrator.bean.BaseSdkConstants
,支付宝参数常量类 -
AliPayServiceFactory
实现org.hzero.starter.pay.app.factory.PayService
,重写getType
方法,方法返回值集HPAY.PAYMENT_CHANNEL
定义的支付类型编码, 重写getPayService
方法,根据配置返回支付服务 -
AliPayMessageHandler
实现PayMessageHandler
,重写handle
方法,用于处理支付回调,重写updateOrder
方法,用于更新订单状态 -
IAliPayService
阿里云支付服务接口,继承org.hzero.starter.pay.app.service.IPayService
,提供的接口包括:
/**
* 根据支付订单号支付
*
* @param tenantId 租户ID
* @param payChannel 支付渠道
* @param configCode 配置CODE
* @param paymentOrderNum 支付订单号
* @return ReturnDTO
*/
ReturnDTO toPay(Long tenantId, String payChannel, String configCode, String paymentOrderNum);
/**
* 二维码支付
*
* @param tenantId 租户ID
* @param configCode 配置编码
* @param paymentOrder 支付订单
* @return 二维码二进制
*/
byte[] toQrPay(Long tenantId, String configCode, PaymentOrder paymentOrder);
/**
* 支付
*
* @param tenantId 租户ID
* @param configCode 支付配置代码
* @param paymentOrder 支付订单信息
* @return 统一返回对象
*/
ReturnDTO pay(Long tenantId, String configCode, PaymentOrder paymentOrder);
/**
* 二维码支付
*
* @param tenantId 租户ID
* @param configCode 支付配置代码
* @param paymentOrder 支付订单信息
* @return 统一返回对象
*/
ReturnDTO microPay(Long tenantId, String configCode, PaymentOrder paymentOrder);
/**
* 查询支付信息
*
* @param tenantId 租户ID
* @param payChannel 支付渠道
* @param configCode 支付配置编码
* @param order 支付信息
* @return 支付订单详细
*/
ReturnDTO queryPayInfo(Long tenantId, String payChannel, String configCode, PayOrderDTO order);
/**
* 关闭支付信息
*
* @param tenantId 租户ID
* @param payChannel 支付渠道
* @param configCode 支付配置编码
* @param order 支付信息
* @return 返回信息
*/
ReturnDTO closePayInfo(Long tenantId, String payChannel, String configCode, PayOrderDTO order);
/**
* 取消支付信息
*
* @param tenantId 租户ID
* @param payChannel 支付渠道
* @param configCode 支付配置编码
* @param order 支付信息
* @return 返回信息
*/
ReturnDTO cancelPayInfo(Long tenantId, String payChannel, String configCode, PayOrderDTO order);
/**
* 查询退款信息
*
* @param tenantId 租户ID
* @param payChannel 支付渠道
* @param configCode 支付配置编码
* @param info 退款信息
* @return 返回信息
*/
ReturnDTO refundQuery(Long tenantId, String payChannel, String configCode, RefundInfo info);
/**
* 对账单下载
*
* @param tenantId 租户ID
* @param payChannel 支付渠道
* @param configCode 支付配置编码
* @param order 支付订单信息
* @return 返回信息
*/
ReturnDTO downloadBill(Long tenantId, String payChannel, String configCode, PayOrderDTO order);
/**
* 查询退款单信息
*
* @param refundOrder 退款单
* @return 退款单信息
*/
RefundOrder selectRefundOrder(RefundOrder refundOrder);
AliPayServiceImpl
阿里云支付服务,继承org.hzero.starter.pay.app.service.impl.AbstractPayService
,实现IAliPayService
接口,重写上述方法,用于阿里云的接口调用