Skip to content

支付宝_交易辅助接口

egan edited this page Feb 28, 2018 · 2 revisions

交易辅助接口,主要是支付完成后的一系列操作:

1. 支付订单查询
2. 交易关闭接口
3. 申请退款接口
4. 查询退款
5. 下载对账单
简单使用,下面的代码假设你已经有了一个PayService实例,怎么构造请看 快速入门
支付订单查询
      Map result = payService.query("支付宝单号", "我方系统单号");
交易关闭接口
        Map result = payService.query("支付宝单号", "我方系统单号");

申请退款接口
 //过时方法
//Map result = service.refund("支付宝单号", "我方系统单号", "退款金额", "订单总金额");
//支付宝单号与我方系统单号二选一
RefundOrder order = new RefundOrder("支付宝单号", "我方系统单号", "退款金额", "订单总金额");
//非必填, 根据业务需求而定,可用于多次退款
order.setRefundNo("退款单号")
Map result = service.refund(order);

查询退款
        Map result = payService.refundquery("支付宝单号", "我方系统单号");
下载对账单
        Map result = payService.downloadbill("账单时间:日账单格式为yyyy-MM-dd,月账单格式为yyyy-MM", "账单类型");

除了以上几种具体的指定方法去调用外,这里需要讲解一个特殊的方法 #secondaryInterface 通用方法,除了申请退款外的交易辅助接口都可以通过它来使用

简单案例,支付订单查询

    
   Map result = payService.secondaryInterface(tradeNo, outTradeNo, AliTransactionType.QUERY,  new Callback<Map<String, Object>>() {
            @Override
            public Map<String, Object> perform(Map<String, Object> map) {
                return map;
            }
        });

#secondaryInterface


/**
 *
 * @param tradeNoOrBillDate 支付平台订单号或者账单类型, 具体请
 *                          类型为{@link String }或者 {@link Date },类型须强制限制,类型不对应则抛出异常{@link PayErrorException}
 * @param outTradeNoBillType  商户单号或者 账单类型
 * @param transactionType 交易类型
 * @param callback 回调处理器
 * @param <T> 返回类型
 * @return 返回支付方对应接口的结果
 */
@Override
public <T> T secondaryInterface(Object tradeNoOrBillDate, String outTradeNoBillType, TransactionType transactionType, Callback<T> callback);



Callback的作用,对支付方返回的结果做一些处理或者类型转换之类的


/**
 * 回调,可用于类型转换
 * @author: egan
 * <pre>
 *     email [email protected]
 *     date 2017/3/7 18:55
 *  </pre>
 */
public interface Callback<T> {
     /**
      * 执行者
      * @param map 需要转化的map
      * @return 处理过后的类型对象
      */
     T perform(Map<String, Object> map);

}



交易辅助接口对应方法

    /**
     *  交易查询接口
     * @param tradeNo 支付平台订单号
     * @param outTradeNo 商户单号
     * @return 返回查询回来的结果集,支付方原值返回
     */
    public Map<String, Object> query(String tradeNo, String outTradeNo);


    /**
     * 交易查询接口,带处理器
     * @param tradeNo    支付平台订单号
     * @param outTradeNo 商户单号
     * @param callback 处理器
     * @param <T> 返回类型
     * @return  返回查询回来的结果集
     */
    public <T> T query(String tradeNo, String outTradeNo, Callback<T> callback);
    
    /**
     * 交易关闭接口
     *
     * @param tradeNo    支付平台订单号
     * @param outTradeNo 商户单号
     * @return 返回支付方交易关闭后的结果
     */
    public Map<String, Object> close(String tradeNo, String outTradeNo);
    
    /**
     * 交易关闭接口
     *
     * @param tradeNo    支付平台订单号
     * @param outTradeNo 商户单号
     * @param callback 处理器
     * @param <T> 返回类型
     * @return 返回支付方交易关闭后的结果
     */
    public <T> T close(String tradeNo, String outTradeNo, Callback<T> callback);
    
   

    /**
     * 申请退款接口
     *
     * @param refundOrder   退款订单信息
     * @return 返回支付方申请退款后的结果
     */
    Map<String, Object> refund(RefundOrder refundOrder);
    
    /**
     * 申请退款接口
     *
     * @param refundOrder   退款订单信息
     * @param callback 处理器
     * @param <T> 返回类型
     * @return 返回支付方申请退款后的结果
     */
    <T>T refund(RefundOrder refundOrder, Callback<T> callback);

    /**
     * 查询退款
     *
     * @param tradeNo    支付平台订单号
     * @param outTradeNo 商户单号
     * @return 返回支付方查询退款后的结果
     */
    public Map<String, Object> refundquery(String tradeNo, String outTradeNo);
    
    /**
     * 查询退款
     *
     * @param tradeNo    支付平台订单号
     * @param outTradeNo 商户单号
     * @param callback 处理器
     * @param <T> 返回类型
     * @return 返回支付方查询退款后的结果
     */
    public <T> T refundquery(String tradeNo, String outTradeNo, Callback<T> callback);

    /**
     * 目前只支持日账单
     * @param billDate 账单类型,商户通过接口或商户经开放平台授权后其所属服务商通过接口可以获取以下账单类型:trade、signcustomer;trade指商户基于支付宝交易收单的业务账单;signcustomer是指基于商户支付宝余额收入及支出等资金变动的帐务账单;
     * @param billType 账单时间:日账单格式为yyyy-MM-dd,月账单格式为yyyy-MM。
     * @return 返回支付方下载对账单的结果
     */
    public Map<String, Object> downloadbill(Date billDate, String billType);

    /**
     *  目前只支持日账单
     * @param billDate 账单时间:具体请查看对应支付平台
     * @param billType 账单类型,具体请查看对应支付平台
     * @param callback 处理器
     * @param <T> 返回类型
     * @return 返回支付方下载对账单的结果
     */
    public <T> T downloadbill(Date billDate, String billType, Callback<T> callback);