package org.springblade.modules.finance.service;

import com.alipay.api.AlipayApiException;
import org.springblade.modules.finance.entity.Order;
import org.springblade.modules.finance.entity.TransactionFlow;

import java.util.Map;

/**
 * Author pangqijun
 * Date 2023/2/16
 * Description
 */
public interface IAliPayService {

    /**
     * 退款
     * @param order
     */
    void refund(Order order);

    /**
     * 交易初始化
     * @param orderNo 订单号
     * @param amount 金额
     * @param callbackUrl 回调地址
     * @return
     */
    String init(String orderNo, String amount, String callbackUrl);

    /**
     * 证书验证
     * @param params
     * @return
     * @throws AlipayApiException
     */
    boolean rsaCertCheck(Map<String,String> params) throws AlipayApiException;

    /**
     * 1、商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号，
     * 2、判断total_amount是否确实为该订单的实际金额（即商户订单创建时的金额），
     * 3、验证app_id是否为该商户本身。上述1、2、3有任何一个验证不通过，则表明本次通知是异常通知，务必忽略。
     * @param params
     */
    void check(Map<String,String> params, Order order);

    void check(Map<String,String> params, TransactionFlow flow);

    /**
     * 获取商户支付宝账号
     * @return
     */
    String getPayeeUserId();
}
