使用weixin-java-tools实现公众号微信支付

本文为学习记录weixin-java-tools实现公众号微信支付.

前提:微信支付接口权限开通,相关配置,证书设置正确

1.生成预支付订单

//生成预支付订单
WxPayUnifiedOrderRequest prepayInfo = WxPayUnifiedOrderRequest.newBuilder()
    .openid(openId)//公众号支付),此参数必传,此参数为微信用户在商户对应appid下的唯一标识
    .outTradeNo(orderId)// 商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|* 且在同一个商户号下唯一
    .totalFee(i)// 订单总金额,单位为分,详见支付金额
    .body(body)//商品描述
    //2、交易类型trade_type
    //JSAPI--公众号支付、NATIVE--原生扫码支付、APP--app支付,统一下单接口trade_type的传参可参考这里
    //
    //MICROPAY--刷卡支付,刷卡支付有单独的支付接口,不调用统一下单接口
    .tradeType("JSAPI")
    .spbillCreateIp(ip2)//用户终端ip
    .notifyUrl("http://www.*.cn/weixin_pay_notify/")//异步接收微信支付结果通知的回调地址,通知url必须为外网可访问的url,不能携带参数。
    .build();
2.将预支付订单信息传递给前端

try {
    Map, String> payInfo = this.payService.getPayInfo(prepayInfo);
    returnModel.setResult(true);
    returnModel.setDatum(payInfo);
    renderString(response, returnModel);

    String timeStamp = payInfo.get("timeStamp");
    String sign = payInfo.get("paySign");
    String aPackage = payInfo.get("package");
    String nonceStr = payInfo.get("nonceStr");
    if (!TextUtils.isEmpty(aPackage)) {
        modelAndView.addObject("timeStamp", timeStamp);
        modelAndView.addObject("nonceStr", nonceStr);
        modelAndView.addObject("wxPackage", aPackage);
        modelAndView.addObject("signType", "MD5");
        modelAndView.addObject("paySign", sign);
        modelAndView.addObject("appid", payConfig.getAppId());
        modelAndView.addObject("money", s);
        modelAndView.addObject("openId", openId);
        modelAndView.addObject("body", body);
        modelAndView.addObject("orderId", orderId);
    }else {
        this.logger.info("订单号:" + orderId + "错误信息:" );
    }

3.前端拿到预支付信息吊起微信支付

标签

js

 
  

最后拿到支付回调后修改数据库

业务代码而已了




你可能感兴趣的:(微信支付,公众号)