package com.softwarebr.nunu.service.pay.weixin;

import com.github.binarywang.wxpay.bean.result.WxPayRefundResult;
import com.softwarebr.nunu.domain.WxPayOrder;

/**
 * 微信小程序支付
 *
 * @author lilin
 * @date 2019/12/26
 * @time 15:25
 */
public interface WeiXinPayService {

    /** 微信交易类型JSAPI--JSAPI支付（或小程序支付） */
    String WEIXIN_TRADE_TYPE_APPLET = "JSAPI";
    /** 微信交易类型APP--app支付 */
    String WEIXIN_TRADE_TYPE_APP = "APP";
    /** 终端IP APP和网页支付提交用户端ip，Native支付填调用微信支付API的机器IP */
    String SPBILL_CREATE_IP = "127.0.0.1";


    /**
     * 微信支付统一下单
     *
     * @param payerUserId 支付用户openid 应用标识为APP时可不传
     * @param outTradeNo  交易号
     * @param totalAmount 支付金额（分）
     * @param body        商品描述（跑步机支付2000元）
     * @param client      应用标识
     * @return
     */
    WxPayOrder tradeCreate(String payerUserId, String outTradeNo, Long totalAmount, String body, String client);

    /**
     * 微信支付退款
     *
     * @param outTradeNo   支付订单号
     * @param refundAmount 退款金额（分）
     * @param client       应用标识
     * @param body         商品描述（跑步机支付2000元）
     * @return
     */
    WxPayRefundResult tradeRefund(String outTradeNo, Long totalAmount, Long refundAmount, String client, String body);

}
