package com.hzs.third.pay.service;

import com.hzs.common.core.enums.EPayChannel;
import com.hzs.common.domain.third.pay.TOnlinePayment;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 基础支付服务
 */
public interface IPayService {

    /**
     * 支付回调处理
     *
     * @param businessType  支付业务类型（与支付扩展类保持一致）
     * @param businessCode  支付业务单号
     * @param originalOrder 三方订单号
     * @param payNumber     支付流水号（支付回调流水号）
     * @param payTime       支付时间（支付回调成功时间）
     * @param payMoney      支付金额（支付回调金额）
     * @param ePayChannel   支付渠道
     * @param channelNumber 支付渠道流水号（微信、支付宝等流水号）
     * @return
     */
    boolean notifyHandle(String businessType, String businessCode, String originalOrder,
                         String payNumber, Date payTime, BigDecimal payMoney,
                         EPayChannel ePayChannel, String channelNumber);
    
    boolean notifyHandle(String businessType, String businessCode, String originalOrder,
                         String payNumber, Date payTime, BigDecimal payMoney,
                         EPayChannel ePayChannel, String channelNumber, Integer payType);

    /**
     * 业务处理重试
     *
     * @param tOnlinePayment 在线支付信息
     * @param pushMQ         是否推送MQ
     * @return
     */
    boolean retryHandle(TOnlinePayment tOnlinePayment, boolean pushMQ);

}
