java微信支付v3系列——3.订单创建准备操作

目录

正文

然后就是方法的封装,如果都写在一个方法里面,代码冗余,毕竟发送请求的代码都很相似。

1. 请求地址枚举类

@AllArgsConstructor
@Getter
public enum WxApiType {
          
   

	/**
	 * Native下单
	 */
	NATIVE_PAY("/v3/pay/transactions/native"),


	/**
	 * jsapi下单
	 */
	JSAPI_PAY("/v3/pay/transactions/jsapi"),

	/**
	 * jsapi下单
	 */
	H5_PAY("/v3/pay/transactions/h5"),

	/**
	 * APP下单
	 */
	APP_PAY("/v3/pay/transactions/app"),

	/**
	 * 查询订单
	 */
	ORDER_QUERY_BY_NO("/v3/pay/transactions/out-trade-no/%s"),

	/**
	 * 关闭订单
	 */
	CLOSE_ORDER_BY_NO("/v3/pay/transactions/out-trade-no/%s/close"),

	/**
	 * 申请退款
	 */
	DOMESTIC_REFUNDS("/v3/refund/domestic/refunds"),

	/**
	 * 查询单笔退款
	 */
	DOMESTIC_REFUNDS_QUERY("/v3/refund/domestic/refunds/%s"),

	/**
	 * 申请交易账单
	 */
	TRADE_BILLS("/v3/bill/tradebill"),

	/**
	 * 申请资金账单
	 */
	FUND_FLOW_BILLS("/v3/bill/fundflowbill");


	/**
	 * 类型
	 */
	private final String type;
}

2. 回调地址枚举类

如下图所示的请求参数,各类支付方式的请求数据基本相似,我们提取出来公共的部分,整理成一个对象,方便后续调用。

4. 将请求参数封装成Map集合

封装完枚举类后,首先就是请求参数的封装,支付类请求参数都非常相近,我们将都需要的参数提取出来以map的方式进行返回。这里的参数,指每个支付类请求都用到的参数,个别支付需要额外添加数据

5. 获取请求对象

获取请求对象,用来发送请求,这里也单独封装成一个方法了,毕竟设置发送请求的类型、编码格式、请求头等信息都是一样的,没有必要每种请求都写一次。

6. 解析响应数据

工具类名建议自己定义,符合自身项目规范即可。

public class HttpUtils {
          
   

    /**
     * 将通知参数转化为字符串
     * @param request
     * @return
     */
    public static String readData(HttpServletRequest request) {
          
   
        BufferedReader br = null;
        try {
          
   
            StringBuilder result = new StringBuilder();
            br = request.getReader();
            for (String line; (line = br.readLine()) != null; ) {
          
   
                if (result.length() > 0) {
          
   
                    result.append("
");
                }
                result.append(line);
            }
            return result.toString();
        } catch (IOException e) {
          
   
            throw new RuntimeException(e);
        } finally {
          
   
            if (br != null) {
          
   
                try {
          
   
                    br.close();
                } catch (IOException e) {
          
   
                    e.printStackTrace();
                }
            }
        }
    }
}
经验分享 程序员 微信小程序 职场和发展