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

本文分享了微信红包开发过程中的关键步骤及注意事项,包括如何正确使用密钥、签名规则、发送红包请求时的证书配置等内容。

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

一 微信支付的密钥

统一使用公众号密钥: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平台,还要安装个人证书,为证书添加用户权限等.

微信开发使用的cert,里面微信支付API共四份(证书pkcs12格式、证书pem格式、证书密钥pem格式、CA证书),为接口中强制要求时需携带的证书文件。 证书属于敏感信息,请妥善保管不要泄露被他人复制。 不同开发语言下的证书格式不同,以下为说明指引: 证书pkcs12格式(apiclient_cert.p12) 包含了私钥信息的证书文件,为p12(pfx)格式,由微信支付签发给您用来标识界定您的身份 部分安全性要求较高的API需要使用该证书来确认您的调用身份 windows上可以直接双击导入系统,导入过程中会提示输入证书密码,证书密码默认为您的商户ID(如:10010000) 证书pem格式(apiclient_cert.pem) 从apiclient_cert.p12中导出证书部分的文件,为pem格式,请妥善保管不要泄漏被他人复制 部分开发语言环境,不能直接使用p12文件,而需要使用pem,所以为了方便您使用,已为您直接提供 您也可以使用openssl命令来自己导出:openssl pkcs12 -clcerts -nokeys -in apiclient_cert.p12 -out apiclient_cert.pem 证书密钥pem格式(apiclient_key.pem) 从apiclient_cert.p12中导出密钥部分的文件,为pem格式 部分开发语言环境,不能直接使用p12文件,而需要使用pem,所以为了方便您使用,已为您直接提供 您也可以使用openssl命令来自己导出:openssl pkcs12 -nocerts -in apiclient_cert.p12 -out apiclient_key.pem CA证书(rootca.pem) 微信支付api服务器上也部署了证明微信支付身份的服务器证书,您在使用api进行调用时也需要验证所调用服务器及域名的真实性 该文件为签署微信支付证书的权威机构的根证书,可以用来验证微信支付服务器证书的真实性 某些环境工具已经内置了若干权威机构的根证书,无需引用该证书也可以正常进行验证,这里提供给您在未内置所必须根证书的环境中载入使用
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值