package com.softwarebr.nunu.service.pay;

import com.brframework.commondb.core.EntityService;
import com.softwarebr.nunu.entity.pay.PayInfo;

/**
 * 支付业务处理
 *
 * @author lilin
 * @date 2019/11/5
 * @time 17:16
 */
public interface PaymentService extends EntityService<PayInfo, Long, Object> {
    /**
     * 最晚付款时间
     */
    String payTimeout = "30m";

     /**
     * 购买支付
     *
     * @param buyMemberId  购买用户id
     * @param outTradeNo  支付订单号
     * @param totalAmount 订单总金额，单位为分，精确到小数点后两位
     * @param body        对一笔交易的具体描述信息
     * @param subject     商品的标题
     * @param payMethod   支付方式 1.支付宝 2.微信
     * @param type        支付的目标类型 1押金 2订单
     * @param targetId    对象 auctionIogId,buyOrderId
     * @return
     */
    String payBuy(Long buyMemberId, String outTradeNo, Long totalAmount, String body, String subject, Integer payMethod, Integer type, Long targetId);

    /**
     * 购买支付成功
     *
     * @param outTradeNo  支付订单号
     */
    void paySuccess(String outTradeNo);

    PayInfo findByPayOrderNo(String payOrderNo);

    /**
     * 购买退款
     *
     * @param outTradeNo   支付订单号
     * @param refundAmount 退款金额
     * @param payMethod    支付方式 1.支付宝 2.微信
     * @return
     */
    String buyRefunded(String outTradeNo, Long refundAmount, Integer payMethod, String remark);

    PayInfo findPayInfoLog(Long memberId, Integer type, Long targetId);
}