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

简介:

对于之前微信支付的文章中,我们谈过了它的很多"坑",而在进行红包开发时,这种坑依然不少,主要是微信为我们提供的各种账号和密钥太多,把开发人员都搞晕了,下面大叔总结一下:

一 微信支付的密钥

统一使用公众号密钥:Key

二 微信红包的密钥

统一使用商户账号的密钥:AppSecret

三 红包进行签名要注意的

使用场景可以排除,如果大于200元时才需要这个参数,如果你随便写一个场景,而商户平台没有开通,反而会报错

四 向微信发送红包请求时要带上证书

需要现时读取apiclient_cert.p12的签名内容,因为https是双向检验的,在.net平台,程序要加载p12这个证书,并发到微信;在操作系统上,还要安装这个证书,两者缺一不可.

public static string Post(string url, string param)
        {
            try
            {
                string cert = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "apiclient_cert.p12");
                string password = WxPayConfig.MCHID;
                ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
                X509Certificate cer = new X509Certificate(cert, password);

                HttpWebRequest webrequest = (HttpWebRequest)HttpWebRequest.Create(url);
                webrequest.ClientCertificates.Add(cer);
                webrequest.Method = "post";

                byte[] someBytes = System.Text.Encoding.UTF8.GetBytes(param);
                webrequest.ContentLength = someBytes.Length;
                Stream reqStream = webrequest.GetRequestStream();
                reqStream.Write(someBytes, 0, someBytes.Length);
                reqStream.Close(); //必须要关闭 请求

                HttpWebResponse webreponse = (HttpWebResponse)webrequest.GetResponse();
                Stream stream = webreponse.GetResponseStream();
                string resp = string.Empty;
                using (StreamReader reader = new StreamReader(stream))
                {
                    resp = reader.ReadToEnd();
                }
                return resp;
            }
            catch (Exception e)
            {
                Lind.DDD.Logger.LoggerFactory.Instance.Logger_Info(string.Format("微信红包接口日志:错误代码:{0} {1}", e.Message, e.StackTrace));
                throw;
            }

五 签名时的key一定要用AppSecret,下面代码是错误的

有了上面几个经验之后,我们的红包模块才可以测试成功!

真的挺不容易的,尤其是.net平台,还要安装个人证书,为证书添加用户权限等.

本文转自博客园张占岭(仓储大叔)的博客,原文链接:微信红包的坑~参数详解和密钥的坑,如需转载请自行联系原博主。

目录
相关文章
|
小程序 开发者
微信小程序通过普通二维码扫码进入指定页面带参数
微信小程序通过普通二维码扫码进入指定页面带参数
|
3月前
|
前端开发 JavaScript API
微信公众号项目,实现微信支付(具体流程和参数)
微信公众号项目,实现微信支付(具体流程和参数)
|
4月前
|
API
支付系统----微信支付24--APlv3介绍,首先我们要引入支付参数,包含商户号,APPID、API秘钥,数字证书,用代码加载到应用程序当中,之后加载商户私钥,商户需要用私钥进行验签,微信平台接收商
支付系统----微信支付24--APlv3介绍,首先我们要引入支付参数,包含商户号,APPID、API秘钥,数字证书,用代码加载到应用程序当中,之后加载商户私钥,商户需要用私钥进行验签,微信平台接收商
|
4月前
|
安全 API 数据安全/隐私保护
支付系统05------微信支付,接入指引----获取密钥和证书,随机密码生成器的工具,
支付系统05------微信支付,接入指引----获取密钥和证书,随机密码生成器的工具,https://suijimimashengcheng.bmcx.com/随机密码生成器的工具
|
小程序
微信小程序扫描二维码的内容,作为参数跳转填入到下一个页面input框
微信小程序扫描二维码的内容,作为参数跳转填入到下一个页面input框
88 1
|
6月前
|
小程序
uniapp 实现当前页面分享至微信好友或朋友圈功能(带参数和无参数)
uniapp 实现当前页面分享至微信好友或朋友圈功能(带参数和无参数)
910 0
|
11月前
|
小程序 PHP 开发者
微信公众号开发(八)生成带参数二维码,以及将二维码下载至本地
微信的二维码真是个神奇的东西。在我们开发中,应用也是很多~ 用户扫描带场景值(参数)二维码时,可能推送以下两种事件:
389 1
|
6月前
|
小程序
微信小程序如何进行跨页面传参,并在跳转后的页面获取参数
微信小程序如何进行跨页面传参,并在跳转后的页面获取参数
523 0
|
6月前
|
存储 小程序
微信小程序怎样获取参数!!!
微信小程序怎样获取参数!!!
|
6月前
|
XML 移动开发 小程序
小程序微信支付API?以及参数有哪些
小程序微信支付API?以及参数有哪些
365 0