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(); } } } } }
上一篇:
uniapp开发微信小程序-2.页面制作
下一篇:
微信扫码登陆流程