java微信小程序支付V2版本(亲测有效)

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

  1. 首先微信支付需要以下的字段,关于如何去获取微信支付的字段,网上一大把,注意(像商户号等重要字段不要泄露不要泄露)

  1. MCHID(商户号) 就是商户注册之后,微信支付给你的唯一的数字

  1. APPID(小程序的appid)

  1. SSLFILE(微信支付需要申请证书,这个字段就是把申请的证书下载之后,存放在你服务器的某个文件夹的路径)

  1. NOTIFYURL(支付成功之后,微信会给你这个url发送一条支付成功的消息)

  1. APIKEY(证书的秘钥)

java微信小程序支付V2版本(亲测有效)
java微信小程序支付V2版本(亲测有效)

需要微信支付的jar包文章来源地址https://www.toymoban.com/news/detail-486235.html

     <dependency>
            <groupId>com.github.wxpay</groupId>
            <artifactId>wxpay-sdk</artifactId>
            <version>0.0.3</version>
        </dependency>
        <dependency>
            <groupId>com.github.binarywang</groupId>
            <artifactId>weixin-java-pay</artifactId>
            <version>3.8.0</version>
        </dependency>
        <dependency>
            <groupId>com.github.wechatpay-apiv3</groupId>
            <artifactId>wechatpay-apache-httpclient</artifactId>
            <version>0.4.7</version>
        </dependency>

2.开始微信支付的demo,首先看微信支付调用支付需要那些必传字段(注意顺序),可以通过这个地址查看https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1

java微信小程序支付V2版本(亲测有效)

3.关于签名加密的方法(后续也会使用到)

java微信小程序支付V2版本(亲测有效)
public class MD5Util {
    private static final String hexDigits[] = { "0", "1", "2", "3", "4", "5",
            "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };

    public static String byteArrayToHexString(byte b[]) {
        StringBuffer resultSb = new StringBuffer();
        for (int i = 0; i < b.length; i++)
            resultSb.append(byteToHexString(b[i]));

        return resultSb.toString();
    }

    private static String byteToHexString(byte b) {
        int n = b;
        if (n < 0)
            n += 256;
        int d1 = n / 16;
        int d2 = n % 16;
        return hexDigits[d1] + hexDigits[d2];
    }
    public static String MD5Encode(String origin ) {

        return MD5Encode(origin,null);
    }
    public static String MD5Encode(String origin, String charsetname) {
        String resultString = null;
        try {
            resultString = new String(origin);
            MessageDigest md = MessageDigest.getInstance("MD5");
            if (charsetname == null || "".equals(charsetname))
                resultString = byteArrayToHexString(md.digest(resultString
                        .getBytes()));
            else
                resultString = byteArrayToHexString(md.digest(resultString
                        .getBytes(charsetname)));
        } catch (Exception exception) {
        }
        return resultString;
    }


}

4.将集合的数据进行xml处理

public static String getRequest(TreeMap<String, String> parameters)
            throws Exception {  //
        StringBuffer sb = new StringBuffer();
        sb.append("<xml>");
        Set es = parameters.entrySet();
        Iterator it = es.iterator();
        while (it.hasNext()) {
            Map.Entry entry = (Map.Entry) it.next();
            String k = (String) entry.getKey();
            String v = (String) entry.getValue();
            if ("mch_id".equalsIgnoreCase(k) || "nonce_str".equalsIgnoreCase(k)
                    || "sign".equalsIgnoreCase(k)) {
                sb.append("<" + k + ">" + "<![CDATA[" + v + "]]></" + k + ">");
            } else {
                sb.append("<" + k + ">" + v + "</" + k + ">");
            }
        }
        sb.append("</xml>");
        return sb.toString();
    }

5.将加密的数据通过url发送给微信支付,成功之后微信支付会将需要的数据返回给你,这里的url是:

java微信小程序支付V2版本(亲测有效)
java微信小程序支付V2版本(亲测有效)

6.将微信支付返回的xml数据解析成集合,然后通过集合的key获取到值组装发给前端,大致流程就是这样的了。

  //xml解析
    public static TreeMap doXMLParse(String strxml) throws JDOMException, IOException {
        strxml = strxml.replaceFirst("encoding=\".*\"", "encoding=\"UTF-8\"");
        if(null == strxml || "".equals(strxml)) {
            return null;
        }
        TreeMap m = new TreeMap();
        InputStream in = new ByteArrayInputStream(strxml.getBytes("UTF-8"));
        SAXBuilder builder = new SAXBuilder();
        Document doc = builder.build(in);
        Element root = doc.getRootElement();
        List list = root.getChildren();
        Iterator it = list.iterator();
        while(it.hasNext()) {
            Element e = (Element) it.next();
            String k = e.getName();
            String v = "";
            List children = e.getChildren();
            if(children.isEmpty()) {
                v = e.getTextNormalize();
            } else {
                v = getChildrenText(children);
            }

            m.put(k, v);
        }

        //关闭流
        in.close();
        return m;
    }

    public static String getChildrenText(List children) {
        StringBuffer sb = new StringBuffer();
        if(!children.isEmpty()) {
            Iterator it = children.iterator();
            while(it.hasNext()) {
                Element e = (Element) it.next();
                String name = e.getName();
                String value = e.getTextNormalize();
                List list = e.getChildren();
                sb.append("<" + name + ">");
                if(!list.isEmpty()) {
                    sb.append(getChildrenText(list));
                }
                sb.append(value);
                sb.append("</" + name + ">");
            }
        }

        return sb.toString();
    }

7.后续将字段返回给前端之后,前端进行调用,微信支付成功之后,会将支付回调返回给你controller里面的方法,支付成功之后里面进行业务逻辑处理.

java微信小程序支付V2版本(亲测有效)

总结:关于V2版本的微信支付的难点主要是在于对xml进行解析,以及对证书的验证处理的方法,后续会出支付宝支付的流程,请大家关注我,不会让大家失望的。

到了这里,关于java微信小程序支付V2版本(亲测有效)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • charles抓电脑版微信小程序包失败【亲测有效】

    1、先从微信中打开小程序 2、然后打开任务管理器,找到小程序的应用 3、右键点开小程序,打开文件所在位置,找到个Runtime包 4、 将小程序和微信都关闭掉(否则部分文件删除不掉),然后将Runtime包下的文件都删除掉 5、 关闭电脑防火墙,重新登陆微信 6、 将小程序移除后

    2024年02月09日
    浏览(34)
  • 最新微信小程序反编译方法(亲测有效,无需模拟器)

    此方法是本人多次试错意外发现的方法,以下是本人遇到的问题及解决方法,有其他方法欢迎讨论 1.下载node.js,直接去官网下载,配置教程网上有这里不讲了。 确保安装目录下有npm文件夹,后面会用到。 2.下载破解工具并解压,我解压到桌面https://codeload.github.com/superBiuBiuMan

    2023年04月08日
    浏览(34)
  • 【亲测有效,超详细】收到微信小程序限期完成微信认证通知怎么处理?微信小程序年审认证都需要哪些资料?

    背景:近期部分微信小程序管理员最近收到了年审认证通知如下图 网址:微信公众平台 年审流程第一步:点击同意协议 年审流程第二步:填写资料(详细认证资料见文章最底部) 年审流程第三步:填写发票 年审流程第四步:支付300元,支付后等待审核即可 ps:如选法人扫脸

    2024年02月04日
    浏览(32)
  • 微信小程序支付V3版本接口实现

    特别说明:遇到 java.security.InvalidKeyException: Illegal key size ******* getValidator的错误 参考添加链接描述 JDK7的下载地址 JDK8的下载地址: 下载后解压,可以看到local_policy.jar和US_export_policy.jar以及readme.txt 如果安装了JRE,将两个jar文件放到%JRE_HOME%libsecurity目录下覆盖原来的文件 如果安

    2024年02月09日
    浏览(37)
  • 【微信小程序源码】独立版云贝餐饮连锁V2_2.3.9源码线传小程序,新增堂食订单,支付打印新增下单时间显示

    百度网盘:https://pan.baidu.com/s/150WZX2gN_QM9nyIQAOpuXA?pwd=gzm0  提取码:gzm0 版本:2.9.4 备注: 不需要上传小程序 云贝餐饮连锁V2、云贝多端餐饮外卖连锁版、自助点单系统、餐饮外卖小程序、微信小程序、餐饮小程序 PHP+MYSQL+小程序 CentOS Linux 7.6.1810 (Core)、运行环境:宝塔 Linux v7

    2024年02月09日
    浏览(38)
  • 【微信支付】java-微信小程序支付-V3接口

    最开始需要在微信支付的官网注册一个商户; 在管理页面中申请关联小程序,通过小程序的 appid 进行关联;商户号和appid之间是多对多的关系 进入微信公众平台,功能-微信支付中确认关联 具体流程请浏览官方文档:接入前准备-小程序支付 | 微信支付商户平台文档中心 流程走

    2024年02月06日
    浏览(42)
  • 微信小程序支付-java对接微信

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

    2024年02月12日
    浏览(37)
  • 小程序微信支付V3版本Java集成

    相较于之前的微信支付API,主要区别是: 遵循统一的REST的设计风格 使用JSON作为数据交互的格式,不再使用XML 使用基于非对称密钥的SHA256-RSA的数字签名算法,不再使用MD5或HMAC-SHA256 不再要求携带HTTPS客户端证书(仅需携带证书序列号) 使用AES-256-GCM,对回调中的关键信息进

    2024年02月11日
    浏览(43)
  • 【Java】微信小程序V3支付(后台)

    目录         相关官网文档         1.需要的参数         2.引入库         3.用到的工具类         4.支付下单实现         5.支付回调 接入前准备-小程序支付 | 微信支付商户平台文档中心 微信支付-JSAPI下单 获取平台证书列表-文档中心-微信支付商户平

    2024年02月12日
    浏览(37)
  • Java实现微信小程序V3支付

    2024年02月12日
    浏览(43)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包