微信支付MD5签名算法实现

【Golang 接口自动化06】微信支付md5签名计算及其优化 可能看过我博客的朋友知道我主要是做的支付这一块的测试工作。而我们都知道现在比较流行的支付方式就是微信支付和支付宝支付,当然最近在使用低手续费大力推广的京东金融(已改名为京东数科)以后也可能站到第一队列,但是要在中国市场走到和财付通、蚂蚁金服一个层级就任重而道远了。废话不多说,我们一起来看看微信支付签名的官方文档。搜索微信支付--点击支付开发文档--接口规则--安全规范。 阅读详情

 

 

调用微信统一下单接口生成预支付订单:有没有遇到这个问题呢?

微信支付签名算法文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_3

/**
* 微信支付签名算法sign
* @param parameters
* @return
*/
public  String createSign(SortedMap<String,String> parameters){
        StringBuffer sb = new StringBuffer();
        Set es = parameters.entrySet();//所有参与传参的参数按照accsii排序(升序)
        Iterator it = es.iterator();
        while(it.hasNext()) {
            Map.Entry entry = (Map.Entry)it.next();
            String k = (String)entry.getKey();
            Object v = entry.getValue();
            if(null != v && !"".equals(v)
                    && !"sign".equals(k) && !"key".equals(k)) {
                sb.append(k + "=" + v + "&");
            }
        }

        sb.append("key=" + this.wxpayKey);
                System.out.println("签名字符串:"+sb.toString());
        String sign = md5Password(sb.toString()).toUpperCase();
        return sign;
    }
/**
     * 生成32位md5码
     *
     * @param key
     * @return
     */
    public static String md5Password(String key) {
        char hexDigits[] = {
                '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'
        };
        try {
            byte[] btInput = key.getBytes();
            // 获得MD5摘要算法的 MessageDigest 对象
            MessageDigest mdInst = MessageDigest.getInstance("MD5");
            // 使用指定的字节更新摘要
            mdInst.update(btInput);
            // 获得密文
            byte[] md = mdInst.digest();
            // 把密文转换成十六进制的字符串形式
            int j = md.length;
            char str[] = new char[j * 2];
            int k = 0;
            for (int i = 0; i < j; i++) {
                byte byte0 = md[i];
                str[k++] = hexDigits[byte0 >>> 4 & 0xf];
                str[k++] = hexDigits[byte0 & 0xf];
            }
            return new String(str);
        } catch (Exception e) {
            return null;
        }
    }

总结:主要是利用了java的SortedMap实现元素排序的有序性;

微信支付的签名算法 第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。 特别注意以下重要规则: - 参数名ASCII码从小到大排序(字典序); - 如果参数的值为空不参与签名; - 参数名区分大小写; - 验证调用返回或微信主动通知签名时,传送的sign参数不参与签名,将生成的签名与该sign值作校验。 - 微信接口可能增加字段,验证签名时必须支持增加的扩 阅读详情

相关推荐

支付宝 java 签名算法_微信支付签名算法java版本-其他地方都可通用

一、算法简介签名生成的通用步骤如下:第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。特别注意以下重要规则:◆ 参数名ASCII码从小到大排序(字典序);◆ 如果参数的值为空不参与签名;◆ 参数名区分大小写;◆ 验证调用返...

weixin_28878621的博客 1155

对接微信支付APIv3版本签名验签学习

对接微信支付API v3版本签名验签

qq_38653981的博客 3850

DeepSpeed Zero3 Offload实战:从GCC版本检查到环境配置的完整避坑指南

本文是一份针对DeepSpeed Zero3 Offload部署的完整避坑指南。针对训练中常见的`AttributeError: ‘DeepSpeedCPUAdam‘ object has no attribute ‘ds_opt_adam`报错,文章深入剖析了其根源在于GCC编译器版本过低。指南提供了从系统GCC版本深度探查、安全启用高版本GCC环境,到DeepSpeed一致性安装验证的全链路实战方案,旨在帮助用户构建稳定的大模型训练环境。

weixin_29070721的博客 473

微信支付签名算法java实现

本例demo下载地址:WxPayDemo 简介: 使用微信支付的时候有一步需要实现对各个参数升序排序后进行签名,再把签名后的结果加到参数里面,然后再将参数转换为xml格式去请求,具体要求如下: java代码实现: private static final String hexDigits[] = { "0", "1", "2", "3", "4", "5", "6", "7",...

王明海的专栏 5255

微带T型一分四功分器HFSS仿真与实物制作教程

本文介绍了使用HFSS软件进行微带T型一分四功分器的仿真与使用国产立创EDA软件将HFSS仿真文件转为PCB可加工文件的方法

qq_52127343的博客 2万+

Vue3 + 高德地图实现车辆电子围栏监控与报警

通过本文的实现,我们完成了一个通用的车辆电子围栏监控功能:支持多种围栏类型。支持进入/离开/双向报警。使用缓存机制避免重复告警。可与Vue3 + 高德地图无缝集成。在实际项目中,可以结合WebSocket 实时定位,实现车辆的实时监控 + 围栏告警系统🚀。

专注于前端开发与实战技巧,记录从零到一的学习与项目经验。分享 Vue3 / JavaScript / TypeScript / Flutter /Uniapp等前端技术,以及 性能优化、工程化、最佳实践。 1033

php 微信支付md5签名,微信支付 MD5 签名中文问题

微信支付流程中, 需要先调用微信商户平台的统一下单接口,生成 prepay_id,传输的参数值通常包含中文,示例如下:image.png因此,在进行 MD5 生成签名时,需要注意能够支持中文(注:部分第三方模块存在不支持中文的情况,导致生成的签名,与微信后台生成的签名不一致,出现”签名错误“的提示)微信公众平台支付接口调试工具(左边地址可以对签名进行调试比对)解决办法:使用支持中文的MD5 模块即...

weixin_42169971的博客 775

Android功耗系列专题理论之六:外设功耗问题分析方法

本文介绍了移动设备功耗问题的分析方法,重点针对传感器和GPU两大模块。传感器部分详细讲解了通过ADB命令获取日志、状态差异分析和单传感器隔离测试的排查方法,并给出优化建议。GPU部分从基础功耗测量、场景测试到功能模块拆解进行多维度分析。同时阐述了GNSS/GPS功耗的测试方法,包括前后台对比、星座双频拆解及SAP/DPO等特殊功能的电流分析,为移动设备功耗优化提供系统性的诊断思路。

371

java 微信支付 md5_微信支付MD5签名算法实现

调用微信统一下单接口生成预支付订单:有没有遇到这个问题呢? 微信支付签名算法文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_3/*** 微信支付签名算法sign* @param parameters* @return*/public String createSign(SortedMapparameters){Strin...

weixin_39980893的博客 508

EZ-INSAR工具箱(使用历史问题)

把 rasterio 升到 1.3+(或退回 py39)→features能 import → 脚本能跑 → 出图 → MATLAB 不再报错!

2301_79258000的博客 121

后仿真中《SDF反标必懂连载篇》之 Negative Delay (理论篇)

今天,学习一下SDF文件中的负数延时问题。比如下面的图片中的SETUPHOLD 中的hold time 为负数。

那么菜的博客 2573

PHP实现微信支付签名算法(MD5版本及HMAC-SHA256版本)

整理了自己在开发微信支付相关接口时,根据官方文档实现的签名算法供大家参考,欢迎提出改进优化建议! MD5版本基本步骤及实现 使用ksort()函数对参数数组按照数组键名进行升序排序 使用array_filter()函数过滤掉不符合签名条件的数组值 使用http_build_query()函数将数组键名与键值组合成URL字符串 对字符串进行MD5编码 最后使用strtoupper()函数将字符串转换为大写即可 /** * Create the wechat pay sig.

lauwen 2157

FastAPI基础项目:仿头条新闻的web项目,实现基本的新闻列表页和详情页查看功能

该项目是一个基于FastAPI和MySQL的新闻应用入门项目。主要包含新闻列表页和详情页两个功能页面。项目结构清晰,包含主应用文件、数据库脚本和HTML模板。使用SQLAlchemy进行数据库操作,通过脚本可自动生成50条示例新闻数据。环境配置简单,仅需安装FastAPI、MySQL驱动等基础依赖,通过.env文件管理数据库连接。该项目适合作为FastAPI+MySQL的入门学习案例,展示了基本的CRUD操作、分页查询和模板渲染功能。

数据知道的博客 4427

php函数 sha256算法,PHP实现微信支付签名算法(MD5版本及HMAC-SHA256版本)

在开发微信支付的时候有时候会用到签名的同步是否和微信方一致,来验证有效性,微信目前签名方式大致有两种,如下:MD5版本实现思路使用ksort()函数对参数数组按照数组键名进行升序排序使用array_filter()函数过滤掉不符合签名条件的数组值使用http_build_query()函数将数组键名与键值组合成URL字符串 对字符串进行MD5编码最后使用strtoupper()函数将字符串转换为大...

weixin_39959298的博客 881

基于simulink构建一个完整的航空航天器姿态控制与导航仿真模型

航空航天器的姿态控制与导航系统是确保飞行器稳定运行和精确执行任务的核心技术。其目标是通过传感器获取飞行器的状态信息,并利用控制器调整飞行器的姿态,使其按照预定轨迹飞行。基于MATLAB/Simulink平台进行航空航天器姿态控制与导航系统的建模与仿真,可以帮助研究者验证算法性能并优化系统的动态响应。本项目旨在构建一个完整的航空航天器姿态控制与导航仿真模型,包括飞行器动力学建模、传感器模块设计、控制器实现以及导航算法仿真,并通过仿真分析其性能。

xiaoheshang_123的博客 272

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

签名算法 MD5签名方式与HMAC-SHA256 java版

对接过微信的小朋友都知道,微信接口都是需要sign的,在最新的APIv3版中,签名类型它又变了,哈哈,如图,废话不多说,直接上图。 官方文档:https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=4_3 java版代码 package com.wsw.sdk.utils; import java.lang.ref...

w1170384758的博客 2523

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

微信支付签名算法

微信支付签名算法 package com.ot.demo.utils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import java.security.MessageDigest; impo...

bnxf_xv的博客 527

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

微信支付SDK中需要实现的各种算法

前言: iOS版的微信支付SDK中需要实现,随机数算法,获取时间戳,签名算法,MD5加密算法,一下是我所实现的这些算法,已经应用到项目了,都是按照微信支付文档上的要求实现的。 1、随机数算法 实现一个由数字和大写字母随机组成的32位长的字符串。 ///获取微信支付需要的随机数 + (NSString *)paymentWechatNonceString { NSArray *sam

我的iOS王者之路 2063

【java】微信支付生成签名的过程

关于签名的算法,api提供的原文是: 1.签名算法 签名生成的通用步骤如下: 第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。 特别注意以下重要规则:  ◆ 参数名ASCII码从小到大排

xuanjiewu的专栏 2663

md5签名 python_python接口自动化实现sign签名(MD5加密)

一,前序今天在学习sign签名的的时候,了解了下常用的sign加密算法,突然心血来潮,想用python试着将签名生成的通用步骤用代码实现出来,虽然中间经历了一点小波折,请教了开发同事后,按照他给的思路建议,搞定了。我实现的是微信支付的签名算法规则。二,加密业务规则签名生成的通用步骤如下:第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序...

weixin_36087905的博客 1438

微信支付生成sign签名(MD5格式) 校验sign

import com.aui.stock.controller.mini.config.WxSPConfig; import com.aui.stock.util.wx.xml.XmlUtil; import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.lang3.StringUtils; im...

yinlell的博客 7149

Java后台微信支付签名算法(MD5)

微信支付提交订单的时候,一直返回签名错误的问题。 主要点在于: 1、所有参数,不能有中文、特殊字符 2、所有需要提交的参数,除了sign之外都需要参与签名算法 3、所有参数的参与顺序,需要排序(按照accsii升序排序)   附上签名算法: /** * 微信支付签名算法sign * @param parameters * @return *...

qq_33601179的博客 4925

PHP签名验证算法,微信支付签名

入口文件index.php代码 1 <?php 2 include './Base.php'; 3 4 class WeiXinPay extends Base 5 { 6 public function __construct() 7 { 8 $arr = [ 9 'appid' =&gt...

dizaoshen1316的博客 1882

微信支付 签名 java_Java后台微信支付签名算法(MD5)

微信支付提交订单的时候,一直返回签名错误的问题。主要点在于:1、所有参数,不能有中文、特殊字符2、所有需要提交的参数,除了sign之外都需要参与签名算法3、所有参数的参与顺序,需要排序(按照accsii升序排序)附上签名算法:/*** 微信支付签名算法sign* @param parameters* @return*/public static String createSign(SortedMa...

weixin_39835991的博客 351
上一篇: Ubuntu MySQL数据库data目录内容更换
下一篇: 节气查询sql
番茄鸡蛋挂面
博客等级 码龄9年 14粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值