微信红包签名算法 C#代码时限

string stringA = "appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_id=10000100&nonce_str=ibuaiVcKdpRxkhJA";

            string stringSignTemp = stringA + "&key=192006250b4c09247ec02edce69f6a2d";

            string sign = MD5Helper.GetMD5Hash(stringSignTemp).ToUpper();
 public class MD5Helper
    {
        public static string GetMD5Hash(string value)
        {
            MD5 md5 = new MD5CryptoServiceProvider();
            byte[] hashByte = md5.ComputeHash(Encoding.Default.GetBytes(value));
            StringBuilder sb = new StringBuilder();
            foreach (byte b in hashByte)
            {
                sb.Append(b.ToString("x").PadLeft(2, ‘0‘));
            }
            return sb.ToString();
        }
    }

假设传送的参数如下:

appid: wxd930ea5d5a258f4f

mch_id: 10000100

device_info: 1000

body: test

nonce_str: ibuaiVcKdpRxkhJA

第一步:对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:

stringA="appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_id=10000100&nonce_str=ibuaiVcKdpRxkhJA";

第二步:拼接API密钥:

stringSignTemp="stringA&key=192006250b4c09247ec02edce69f6a2d"

sign=MD5(stringSignTemp).toUpperCase()="9A0A8659F005D6984697E2CA0A9CF3B7"

最终得到最终发送的数据:

<xml>

<appid>wxd930ea5d5a258f4f</appid>

<mch_id>10000100</mch_id>

<device_info>1000<device_info>

<body>test</body>

<nonce_str>ibuaiVcKdpRxkhJA</nonce_str>

<sign>9A0A8659F005D6984697E2CA0A9CF3B7</sign>

<xml>

https://pay.weixin.qq.com/wiki/doc/api/cash_coupon.php?chapter=4_3

时间: 2024-10-12 13:41:31

微信红包签名算法 C#代码时限的相关文章

基于微信红包插件的原理实现android任何APP自动发送评论(已开源)

背景 地址:https://github.com/huijimuhe/postman 核心就是android的AccessibilityService,回复功能api需要23以上版本才行. 其实很像在做单元测试.你可以有n种方式实现发帖功能,这只是一个比较邪火的方式,亲测过一次,可行.这里我以网易新闻客户端举例. 模拟你在手机端的物理动作:选择新闻->回复->退回新闻列表->进入下一个新闻->回复->退回新闻列表刷新->进入->回复.... 做的不精细,只是探究到

微信红包的实现

封装一个微信用包类,主要的功能有|: 红包中存有钱,多少个人分:每个分到的钱数,及获收红包的时间: 主要的功能有 打开红包:(如果打开红包的人数没有达到上限,则可以打开,并随机获得金额) 查看红包分配信息: 设置截止日期:(如果超过最大金额,则再打时提示过期) 思路:微信红包类应该具有的属性有红包金额,红包数,过期时间,领红包的人,时间等. 难点在于:将红包如何分成几份,等可能的被其他人抢到,而且不会出现为0的红包. 首先运用取随机数的类,每次取当前所剩金额的随机数,然后将这些分好的红包放到数组

微信红包金额分配的算法 http://timyang.net/architecture/wechat-red-packet/

虽然春节已经过去一段时间,但不少微信群里面依旧乐此不疲的在玩发红包活动,用户自发的将最初的一个春节拜年的场景功能慢慢演化成一个长尾功能. 用户在微信中抢红包时分成抢包和拆包两个操作.抢包决定红包是否还有剩余金额,但如果行动不够迅速,在拆包阶段可能红包已经被其他用户抢走的情况. 红包的金额是在什么时候算? 据某架构群腾讯财付通专家反馈,红包的金额是拆的时候实时计算,而不是预先分配,实时计算基于内存,不需要额外存储空间,并且实时计算效率也很高.每次拆红包时,系统取0.01到剩余平均值*2之间作为红包

微信红包算法

微信红包有多种玩法,其中一种就是指定金额.人数(m),拆红包的人收到的金额是随机,收到的金额保留两位小数,至少有一分,所有人的红包加起来等于指定金额. 我想到一种做法就是:将指定金额放大100倍,也就是变成单位"分",这时金额就是整数了,设为n,从1到n这个整数区间随机抽取m(是人数)个整数,这样1到n的整数区间就分成了m或m+1(这种情况,最后的两个区间合成一个区间)个区间. 比如输入金额1.00元,人数m=3,n=100 * 1.从1到100之间随机选中的三个整数为15.42.88

微信红包算法TEST

1.基本算法 设定总金额为10元,有N个人随机领取:N=1 则红包金额=X元: N=2 为保证第二个红包可以正常发出,第一个红包金额=0.01至9.99之间的某个随机数 第二个红包=10-第一个红包金额: N=3 红包1=0.01至0.98之间的某个随机数 红包2=0.01至(10-红包1-0.01)的某个随机数 红包3=10-红包1-红包2 -- 2.java代码 1 package Demo_1.Test_1; 2 3 import java.math.BigDecimal; 4 impor

微信红包的坑~参数详解和密钥的坑

对于之前微信支付的文章中,我们谈过了它的很多"坑",而在进行红包开发时,这种坑依然不少,主要是微信为我们提供的各种账号和密钥太多,把开发人员都搞晕了,下面大叔总结一下: 一 微信支付的密钥 统一使用公众号密钥:Key 二 微信红包的密钥 统一使用商户账号的密钥:AppSecret 三 红包进行签名要注意的 使用场景可以排除,如果大于200元时才需要这个参数,如果你随便写一个场景,而商户平台没有开通,反而会报错 四 向微信发送红包请求时要带上证书 需要现时读取apiclient_cert.p12的

微信红包开发

以下是C#开发微信红包的源码 public ActionResult CashRedPack() { //post请求 string reqUrl = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack"; string nonce_str = WeChatMPToken.createNonceStr();//随机字符串 string sign = ""; // string mch_billno

微信红包金额分配案例

<?php // 本类由系统自动生成,仅供测试用途 class IndexAction extends Action { /* 微信红包的总额有100元,必须要发送给60个用户, 每个用户领取的红包是随机的,且每个用户领取的金额不得大于2元 **/ public function index(){ $total =100;//100元 $amount = 60;//60人 $baseCash = 0.1;//基础值 $arr = $this->assign_money($total,$amou

微信红包店小程序开发过程中遇到的问题 php获取附近周边商家 显示最近商家

最近公司在做一个项目就是微信红包店.仿照的是微信官方在做的那个红包店的模式.客户抢红包,抢到以后到店消费,消费以后就可以拿到商家的红包了. 项目中的两个难点: 1通过小程序来发红包  这个之前在开发语音红包的时候已经遇到这些坑了,已经成功的踩过了.在这里也总结下,因为最近还是有不少人加我微信咨询这个.在这里我再给大家总结下. 小程序发红包接口使用的是微信支付文档里的, 企业付款到零钱的功能, 只要不用红包接口就行了, 改成企业付款到零钱的接口, 一切就迎刃而解了, 然后注意 接口里的appid就