java对接微信支付:JSAPI支付(微信公众号支付)

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

本文是【微信JSAPI支付】文章,主要讲解商户对接微信支付,简洁版测试

文章目录

一、JSAPI支付接入前准备

二、代码片段

1.引入Maven依赖

2.后端业务请求接口

3.前端调起支付请求方法

总结


java对接微信支付:JSAPI支付(微信公众号支付)


一、JSAPI支付接入前准备

1、JSAPI支付首先需要注册、认证一个公众号(大概300块一年)

微信公众号注册

2、申请成为商户,商户的类型有多种(普通商户,服务商,特约商户等),根据自己的需求申请

商户申请

3、微信公众号和商户关联

        3.1、登录微信公众号关联申请号的商户号

java对接微信支付:JSAPI支付(微信公众号支付)

         3.2、关联商户号

java对接微信支付:JSAPI支付(微信公众号支付)

 点击添加,根据指引完成绑定..............

4、获取appId、商户号

        4.1、登录微信公众号,进入【基本配置】目录,取到公众号的appId ,如图

java对接微信支付:JSAPI支付(微信公众号支付)

         4.2、登录微信支付商户号,进入【账户中心->账户信息->微信支付商户号,取到微信支付商户号,如图  java对接微信支付:JSAPI支付(微信公众号支付)

 5、登录微信商户平台,进入【账户中心 > API安全 】目录,设置APIV3密钥,有官方文档这里就不赘述了

java对接微信支付:JSAPI支付(微信公众号支付)

二、代码片段

1.引入Maven依赖

<dependency>
  <groupId>com.github.wechatpay-apiv3</groupId>
  <artifactId>wechatpay-java</artifactId>
  <version>0.2.7</version>
</dependency>

2.后端业务请求接口

根据自己的业务需求进行修改使用,参数根据自己的需求来,代码如下(JSAPI示例): 

     /** 商户号*/
    @Value("${wx.mchId}")
    private String mchId;

    /** 公众号appid*/
    @Value("${wx.appId}")
    private String appId;

    /** 商户APIV3密钥*/
    @Value("${wx.apiV3Key}")
    private String apiV3Key;

    /**微信回调地址*/
    @Value("${wx.v3PayNotifyUrl}")
    private String v3PayNotifyUrl;

    /** 商户证书序列号 */
    @Value("${wx.merchantSerialNumber}")
    private String merchantSerialNumber;

    public static RSAAutoCertificateConfig config = null ;
    public static JsapiServiceExtension service = null ;

@GetMapping("/prepay")
    public PrepayWithRequestPaymentResponse WeChartPay(String amountString) {
      
        String openId = "oI*******************iGiA";
        // 订单号
        String orderUuid = IdUtils.getUUID();
        //元转换为分
        Integer amountInteger = Integer.valueOf(AmountUnitConversionUtil.changeYuanAndFen(amountString));
        //私钥文件路径(本地自己测试看自己的私钥文件存放路径)
        String filePath ="***/***/***/apiclient_key.pem";//测试环境可放到resource目录下

        // 一个商户号只能初始化一个配置,否则会因为重复的下载任务报错
        if (config == null) {
            config =new RSAAutoCertificateConfig.Builder()
                            .merchantId(mchId)
                            .privateKeyFromPath(filePath)
                            .merchantSerialNumber(merchantSerialNumber)
                            .apiV3Key(apiV3Key)
                            .build();
        }
        // 构建service
        if (service == null) {
            service = new JsapiServiceExtension.Builder().config(config).build();
        }

        //组装预约支付的实体
        // request.setXxx(val)设置所需参数,具体参数可见Request定义
        PrepayRequest request = new PrepayRequest();
        //计算金额
        Amount amount = new Amount();
        amount.setTotal(amountInteger);
        amount.setCurrency("CNY");
        request.setAmount(amount);
        //公众号appId
        request.setAppid(appId);
        //商户号
        request.setMchid(mchId);
        //支付者信息
        Payer payer = new Payer();
        payer.setOpenid(openId);
        request.setPayer(payer);
        //描述
        request.setDescription("支付测试");
        //微信回调地址,需要是https://开头的,必须外网可以正常访问
        //本地测试可以使用内网穿透工具,网上很多的
        request.setNotifyUrl(v3PayNotifyUrl);
        //订单号
        request.setOutTradeNo(orderUuid);
        // 加密
        PrepayWithRequestPaymentResponse payment = service.prepayWithRequestPayment(request);
        //默认加密类型为RSA
        payment.setSignType("MD5");
       //返回数据,前端调起支付
    return payment;

3.前端调起支付请求方法

function onBridgeReady(){
   WeixinJSBridge.invoke(
      'getBrandWCPayRequest', {
         "appId":"wx2421b1c4370ec43b",     //公众号ID,由商户传入     
         "timeStamp":"1395712654",         //时间戳,自1970年以来的秒数     
         "nonceStr":"e61463f8efa94090b1f366cccfbbb444", //随机串     
         "package":"prepay_id=u802345jgfjsdfgsdg888",     
         "signType":"MD5",         //微信签名方式:     
         "paySign":"70EA570631E4BB79628FBCA90534C63FF7FADD89" //微信签名 
      },
      function(res){
      if(res.err_msg == "get_brand_wcpay_request:ok" ){
      // 使用以上方式判断前端返回,微信团队郑重提示:
            //res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
      } 
   }); 
}
if (typeof WeixinJSBridge == "undefined"){
   if( document.addEventListener ){
       document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
   }else if (document.attachEvent){
       document.attachEvent('WeixinJSBridgeReady', onBridgeReady); 
       document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
   }
}else{
   onBridgeReady();
}

总结


以上就是根据官方文档进行实现的一个调起微信JSAPI支付测试,微信回调的接口就先不多说了,有需要的再留言,有问题可以留言一起讨论学习!文章来源地址https://www.toymoban.com/news/detail-483083.html

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

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

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

相关文章

  • 【微信支付】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-APIv3)

            准备:  接入前准备-小程序支付 | 微信支付商户平台文档中心 准备好了就可以获得( 第二点里需要的参数 ):         参数1 商户号 merchantId:xxxxxx(全是数字)         参数2 商户APIV3密钥 apiV3key:xxxxxxx(32位字母数字大小写串,开发自己准备的)         参

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

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

    2024年02月03日
    浏览(57)
  • 【微信小程序】Java实现微信支付(小程序支付JSAPI-V3)java-sdk工具包(包含支付出现的多次回调的问题解析,接口幂等性)

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

    2024年01月16日
    浏览(77)
  • 微信小程序支付-java对接微信

     一共是两个方法: 一个方法后台生成预支付订单,得到预支付交易会话标识prepay_id,传给前端,让前端调起小程序支付; 一个是支付回调 目录 一、生成预支付订单  注意: 二、 支付回调         封装参数向微信发送生成预支付交易单请求,微信会返回一个prepay_id,再将

    2024年02月12日
    浏览(49)
  • 微信的 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)
  • Java对接微信支付(史上最详细)

    本文将介绍如何使用Java对接微信支付,包括获取支付参数、支付回调处理等步骤。本文适用于已经熟悉微信支付基本原理的读者。 JDK 1.8 Maven Spring Boot 2.x 微信支付开发文档 为了进行支付,我们需要先获取微信支付的参数信息,包括appid、商户id、支付密钥等。 配置文件 我们

    2024年02月15日
    浏览(41)
  • 微信支付-超详细java开发-小程序对接

    本文适用于有一定基础的开发者,简单易通。后台用的的是java,我用的是springBoot,其它框架基本同理,前端就是一个简单的demo。微信官方提供了V2和V3两种方式,本文基于V2版支付开发(后续更新V3)。V2和V3版本区别 1.思路介绍 本次以微信小程序开发为例,如果自己想要玩一

    2024年02月09日
    浏览(58)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包