SpringBoot支付系列 对接微信app支付 服务器设置

第一步:准备参数  登录微信第三方网址:https://pay.weixin.qq.com/index.php/core/home/login?return_url=%2Findex.php

   如图: 获取mcnID:

  

  获取appId: 登录开发平台网址:https://open.weixin.qq.com

  配置密钥:

第二步,引入jar包:

<dependency>
    <groupId>com.egzosn</groupId>
    <artifactId>pay-java-common</artifactId>
    <version>2.10.2</version>
</dependency>
<dependency>
    <groupId>com.egzosn</groupId>
    <artifactId>pay-java-wx</artifactId>
    <version>2.10.2</version>
</dependency>

jar包来源于git:地址:https://github.com/egzosn/pay-java-parent

第三步:配置参数:

private PayService service = null;
@PostConstruct
public void init() {
    WxPayConfigStorage wxPayConfigStorage = new WxPayConfigStorage();
    wxPayConfigStorage.setMchId("合作者id(商户号)");
    wxPayConfigStorage.setAppid("应用id");
    wxPayConfigStorage.setSecretKey("密钥");
    wxPayConfigStorage.setNotifyUrl("异步回调地址");
    wxPayConfigStorage.setSignType(SignUtils.MD5.name());
    wxPayConfigStorage.setInputCharset("utf-8");
    service = new WxPayService(wxPayConfigStorage);

    HttpConfigStorage httpConfigStorage = new HttpConfigStorage();
    //请求连接池配置
    //最大连接数
    httpConfigStorage.setMaxTotal(20);
    //默认的每个路由的最大连接数
    httpConfigStorage.setDefaultMaxPerRoute(10);
    service.setRequestTemplateConfigStorage(httpConfigStorage);
}

第四步:供app提供创建订单信息接口:

/**
 * 获取支付预订单信息
 *
 * @return 支付预订单信息
 */
@ApiOperation("返回订单信息")
@RequestMapping(value = "app", method = RequestMethod.POST)
public Map<String, Object> app(@RequestBody PayOrder order) {
    init();
    Map<String, Object> data = new HashMap<>();
    data.put("state", 1);
    //App支付
    order.setTransactionType(WxTransactionType.APP);
    data.put("orderInfo", service.orderInfo(order));
    return data;
}

第五步:校验回调信息,设置业务逻辑:注意:此api,不需要设置api方法。否则,可能会回调不成功。

            

/**
 * 支付回调地址
 *
 * @param request
 *
 * @return
 */

@ApiOperation("回调地址")
@RequestMapping(value = "payBack")
public String payBack(HttpServletRequest request) throws IOException {
    init();
    //获取支付方返回的对应参数
    Map<String, Object> params = service.getParameter2Map(request.getParameterMap(), request.getInputStream());
    if (null == params) {
        return service.getPayOutMessage("fail", "失败").toMessage();
    }

    //校验
    if (service.verify(params)) {
        //这里处理业务逻辑
        //......业务逻辑处理块........
        String orderNo=(String)params.get("out_trade_no");
       if(StringUtils.isNotBlank(orderNo)){
            scmSalesOrderService.updateStatus(orderNo);
        }
        return service.getPayOutMessage("success", "成功").toMessage();
    }

    return service.getPayOutMessage("fail", "失败").toMessage();
}

猜你喜欢

转载自blog.csdn.net/weixin_35282902/article/details/81773320
今日推荐