java对接微信支付:JSAPI支付成功之“微信回调”

这篇具有很好参考价值的文章主要介绍了java对接微信支付:JSAPI支付成功之“微信回调”。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

承接上一篇微信支付,现在简单说一下 微信支付回调

目录

一、支付回调

二、微信回调地址问题

1.本地/上线测试

2.控制器调用接口(代码)

总结


一、支付回调

当用户支付成功之后,支付平台会向我们指定的服务器接口发送请求传递订单支付状态数据

二、微信回调地址问题

1.本地/上线测试

如果你是再本地进行测试,那就需要使用内网穿透工具(NATAPP-内网穿透 基于ngrok的国内高速内网映射工具),得到的地址要外网能访问到,具体使用直接点击到官网有文档介绍,就不在这里多说了。

上线测试就自己改到相应的环境地址。

微信回调地址 示例:

v3PayNotifyUrl:  https://***.mynatapp.cc/jsapiPay/payNotify   # 微信回调地址

2.控制器调用接口(代码)

代码如下:

@PostMapping("/payNotify")
public void payNotify(HttpServletRequest request, HttpServletResponse response) throws Exception{
    //获取报文
    String body = getRequestBody(request);
    //随机串
    String nonceStr = request.getHeader("Wechatpay-Nonce");

    //微信传递过来的签名
    String signature = request.getHeader("Wechatpay-Signature");

    //证书序列号(微信平台)
    String serialNo = request.getHeader("Wechatpay-Serial");

    //时间戳
    String timestamp = request.getHeader("Wechatpay-Timestamp");

    InputStream is = null;
    try {
        is = request.getInputStream();
        // 构造 RequestParam
        RequestParam requestParam = new RequestParam.Builder()
                .serialNumber(serialNo)
                .nonce(nonceStr)
                .signature(signature)
                .timestamp(timestamp)
                .body(body)
                .build();
        // 如果已经初始化了 RSAAutoCertificateConfig,可以直接使用  config
        // 初始化 NotificationParser
        NotificationParser parser = new NotificationParser(config);
        // 验签、解密并转换成 Transaction
        Transaction transaction = parser.parse(requestParam, Transaction.class);
        //记录日志信息
        Transaction.TradeStateEnum state = transaction.getTradeState();
        String openid = transaction.getPayer().getOpenid();
        if (!StringUtils.equals("SUCCESS", state.toString())) {
            log.error("微信回调失败,JsapiPayController.payNotify.transaction:{}",transaction.toString());
            //通知微信回调失败
            response.getWriter().write("<xml><return_code><![CDATA[FAIL]]></return_code></xml>");
        }
        //TODO------
       //根据自己的需求处理相应的业务逻辑,异步

       
        //通知微信回调成功
        response.getWriter().write("<xml><return_code><![CDATA[SUCCESS]]></return_code></xml>");
    } catch (Exception e) {
        e.printStackTrace();
    }finally {
        is.close();
    }
}




/**
     * 读取请求数据流
     * @param request
     * @return
     */
    private String getRequestBody(HttpServletRequest request) {
        StringBuffer sb = new StringBuffer();
        try (ServletInputStream inputStream = request.getInputStream();
             BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
        ) {
            String line;

            while ((line = reader.readLine()) != null) {
                sb.append(line);
            }
        } catch (IOException e) {
            log.error("读取数据流异常:{}", e);
        }
        return sb.toString();
    }

总结

回调的基本上官方文档都有说,其他的就不多说了,基本上就是处理自己的业务逻辑问题。文章来源地址https://www.toymoban.com/news/detail-663922.html

到了这里,关于java对接微信支付:JSAPI支付成功之“微信回调”的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信支付APIV3统一回调接口封装(H5、JSAPI、App、小程序)

    😊 @ 作者: 一恍过去 💖 @ 主页: https://blog.csdn.net/zhuocailing3390 🎊 @ 社区: Java技术栈交流 🎉 @ 主题: 微信支付统一回调接口封装(H5、JSAPI、App、小程序) ⏱️ @ 创作时间: 2022年07月12日 对微信支付的H5、JSAPI、H5、App、小程序支付方式进行统一,此封装接口适用于普通商户

    2024年02月08日
    浏览(46)
  • 微信公众号使用uniappH5、python对接微信支付V3-JSAPI的支付功能

    微信公众号网页用uniapp,后台用的python,近期对接微信支付-apiv3版-jsapi支付,特此整理记录方便日后查找使用 apiv3升级后,请求体使用不用xml使用json,每次请求需要在header中添加签名,而签名需要用微信支付的商户证书私钥进行RSA加密 使用公众号进行对接流程如下 先保存公

    2024年02月02日
    浏览(61)
  • java微信公众号JSAPI支付以及所遇到的坑

    上周做了个支付宝微信扫码支付,今天总结一下。微信相比支付宝要麻烦许多 由于涉及到代理商,没办法,让我写个详细的申请流程,懵逼啊。 笔记地址 http://note.youdao.com/noteshare?id=269ddffb1f95e69eafb281d054f9ff25sub=82AACBC2E6814133938D407BD3FF4737 先梳理下流程,对应的文档 微信统一下

    2024年02月08日
    浏览(46)
  • 【微信支付】springboot-java接入微信支付-JSAPI支付/查单/退款/发送红包(二)---查单

    文章地址:https://blog.csdn.net/ssdadasd15623/article/details/134684556 查询订单分为微信订单号查询以及商户订单号查询,这里使用商户订单号,也就是自己的系统的订单号 https://pay.weixin.qq.com/docs/merchant/apis/jsapi-payment/query-by-out-trade-no.html 在请求接口时,注意⚠️:请求参数内的Authori

    2024年02月03日
    浏览(47)
  • 【微信支付】springboot-java接入微信支付-JSAPI支付/查单/退款/发送红包(三)---退款

    微信支付开发文档:https://pay.weixin.qq.com/docs/merchant/apis/jsapi-payment/create.html 退款与查单的请求头类似,但是查单是GET请求,所以在构造签名的时候相对简单些,但是退款请求中有请求参数,在构造签名时,需要将请求体添加到请求头参数中。 1、构造请求参数 查看微信支付开

    2024年01月19日
    浏览(57)
  • 【微信小程序】Java实现微信支付(小程序支付JSAPI-V3)java-sdk工具包

          对于一个没有写过支付的小白,打开微信支付官方文档时彻底懵逼 ,因为 微信支付文档太过详细, 导致我无从下手,所以写此文章,帮助第一次写支付的小伙伴梳理一下。 一、流程分为三个接口:(这是前言,先看一遍,保持印象,方便理解代码) 1、第一个接口:

    2024年02月03日
    浏览(57)
  • 微信的 h5 支付和 jsapi 支付

    申请地址: https://pay.weixin.qq.com/ 如果你还没有微信商户号,请点击上面的链接进行申请,如果已经有了,可以跳过这一步 首先点击 账户中心 ▶ API安全 ▶ 申请API证书 申请详细步骤: https://kf.qq.com/faq/161222NneAJf161222U7fARv.html 首先点击 账户中心 ▶ API安全 ▶ 设置APIv3密钥 ▶

    2024年02月13日
    浏览(45)
  • 〔支付接入〕微信的 h5 支付和 jsapi 支付

    申请地址: https://pay.weixin.qq.com/ 如果你还没有微信商户号,请点击上面的链接进行申请,如果已经有了,可以跳过这一步 首先点击 账户中心 ▶ API安全 ▶ 申请API证书 申请详细步骤: https://kf.qq.com/faq/161222NneAJf161222U7fARv.html 首先点击 账户中心 ▶ API安全 ▶ 设置APIv3密钥 ▶

    2024年02月13日
    浏览(51)
  • 【微信公众号】微信 jsapi 支付大概流程

    jsapi 支付可运用于微信小程序和 h5 jsapi 支付不会弹出二维码(这点与 native 支付不同) jsapi 支付运用于移动端 native 支付运用于 PC 端 🔥 微信支付需要商家申请 商户号 ,商务号需要和小程序或公众号(服务号)进行绑定 💦 在微信商务平台可开通 native 支付、jsapi 支付或其

    2024年02月09日
    浏览(63)
  • uniapp微信小程序JSAPI支付前端生成签名,并调起微信支付

    签名方式使用的是SHA256withRSA 插件 npm install jsrsasign 使用

    2024年01月17日
    浏览(71)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包