资讯专栏INFORMATION COLUMN

微信公众号开发小记——5.python微信红包

JerryZou / 2784人阅读

摘要:微信各个服务是独立的,比较蛋疼,要用红包功能,首先你需要注册一个微信商户平台账号。首先是微信证书,用的是,与这两个。写在最后微信开发者工具挺好用的,服务号里把自己加为开发者就能用了。

描述

有时候产品有这么一些需求,当用户满足一定条件时,给他发一定金额的红包。

微信各个服务是独立的,比较蛋疼,要用红包功能,首先你需要注册一个微信商户平台账号。

代码位置 分支pay-20160802

微信支付比较烦,因为他有自己的加密方式,还要用证书,所以不能用之前sdk的东西,自己随便按照文档封了下加密以及api之类的算法,代码什么的很简单,跟着文档来好了。

一些需要介绍的东西

接入时最蛋疼的其实是刚入手不知道证书以及秘钥什么的有啥用,也没看到什么python的前辈仔细介绍过这些东西。

首先是微信证书,python用的是apiclient_cert.pem,与apiclient_key.pem这两个。

其次是加密时用得api秘钥,文档

代码讲解

配置

WEIXIN_PAY_CERT_FOLDER_PATH = "cert_folder_path" # 证书文件夹路径
# 四个证书具体路径
WEIXIN_PAY_P12_CERT_PATH = "apiclient_cert.p12_file_path"
WEIXIN_PAY_CERT_PATH = "apiclient_cert.pem_file_path"
WEIXIN_PAY_CERT_KEY_PATH = "apiclient_key.pem_file_path"
WEIXIN_PAY_CA_CERT_PATH = "rootca.pem_file_path"
WEIXIN_PAY_API_KEY = "" # 微信商户平台api安全中设置的安全码
WEINXIN_PAY_MCH_ID = "" # 微信商户平台id

具体发红包的代码 pay.py

加密发红包没什么好说的,照着文档写就是了,就下面这一句,requests请求是可以带证书的,把微信要的证书给带上。

respose = requests.post(SENDREDPACK_URL, data=content, headers=headers,
            cert=(settings.WEIXIN_PAY_CERT_PATH, settings.WEIXIN_PAY_CERT_KEY_PATH))

models.py

血坑!!!解决方案请自行考虑

由于是血坑,我已经踩进去了,所以这里用一级标题标识。

并发啊,高并发啊,中国人知道发钱这种事情都是疯子啊,当你丢出一个发钱的链接后,就会有人用fiddler,charles之类的抓包然后干你,数据库太太太慢了,你一定要做好api的调用频次限制,而且这种活动上线后最好把跟主服务的几台机器分开,nginx只把这个活动的东西代过来,频次限制之类的一定要用redis之类的缓存,而且微信会面临红包的各种failed状况,无论微信那边成功失败与否,一次请求就是一次请求,频次限制无视微信那边的返回都要限(不要说用户体验不好,服务器炸了一天的飘过,当整个服务器炸了之后谁还管体验)。

写在最后

微信web开发者工具挺好用的,服务号里把自己加为开发者就能用了。

一个nginx例子

例如,我已经有一个web服务,假设web的名字叫做 www.duoduo369.com,这时候80端口已经没了,但是我要接微信服务器,又没有另外的一台机器,这时候用nginx做一下就ok了,首先django加一个url,/weixin_server,创建一个二级域名例如weixin.duoduo369.com,然后nginx把weixin.duoduo369.com的所有请求代到 www.duoduo369.com/weixin_server即可。

upstream your-backend {
    server 127.0.0.1:8000 fail_timeout=0;
}

server {
  server_name weixin.yourdomain.com yourdomain.ittun.com;
  location / {
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://your-backend/weixin_server;
  }
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/38082.html

相关文章

  • 微信公众开发小记——1.接入微信服务器

    摘要:描述由于马上要做一波公众号开发,今天先调研,把基本的服务器接起来。手脚架地址文档微信公众号公众号开发首先你要有个公众号,这里就不说了按照流程申请。脚手架的说明微信公众号接入的时候要做很多事情,为了简化开发,提供一个版本的服务器。 描述 由于马上要做一波公众号开发,今天先调研,把基本的服务器接起来。微信公众号服务器在接入的时候要做一些烦躁的事情,改配置的时候要进行握手,api调用要做一些...

    sshe 评论0 收藏0
  • 浅析微信支付:商户平台开通现金红包、指定用户发放、红包记录查询

    摘要:本文是浅析微信支付系列文章的第十三篇,主要讲解在如何开通商户平台的红包功能和为用户发放红包,以及查询发送红包记录。操作路径登录微信支付商户平台产品中心现金红包开通。 本文是【浅析微信支付】系列文章的第十三篇,主要讲解在如何开通商户平台的红包功能和为用户发放红包,以及查询发送红包记录。 浅析微信支付系列已经更新十三篇了哟~,没有看过的朋友们可以看一下哦。 浅析微信支付:(余额提现)企业...

    fizz 评论0 收藏0
  • 浅析微信支付:开发前的准备

    摘要:本文是浅析微信支付系列文章的第三篇,主要会讲一下在开发前的一些注意事项。浅析微信支付系列已经更新两篇了哟,没有看过的朋友们可以看一下。开通微信支付需要注册登陆微信商户平台,微信支付相关的信息都需要在这个平台上进行操作。 本文是【浅析微信支付】系列文章的第三篇,主要会讲一下在开发前的一些注意事项。 浅析微信支付系列已经更新两篇了哟~,没有看过的朋友们可以看一下。 浅析微信支付:前篇大纲...

    yanest 评论0 收藏0
  • 微信公众开发小记——3.接入三方登录

    摘要:我接触已经很久了,其中微信的就是我贡献的代码,然而当时做的时候比较年轻,而且这个项目处于一个很大的代码重构中,借这次机会重新用正确的姿势接入了一下三方登录,可以当做一个学习接入三方的。 为什么要接入三方登录 如果你的微信服务器要做复杂的逻辑,比如html5、给用户提供高级的服务,并且有很好看的页面等等,这种时候你就需要一个正常的web服务器,用户打通就需要做三方登录了。 而如果你决定直...

    aisuhua 评论0 收藏0
  • 微信公众开发小记——2.80端口上的服务

    摘要:微信在做一些操作是需要用到生成二维码等而每天接口的调用上限为,需要自己做缓存文档讲了几种方式,我觉得放在中拿比较妥当。微信菜单会缓存分钟,你可以取消关注,然后在关注查看菜单变化效果。 描述 微信公众号开发基本分为2大种类型 1.用户直接做了某些操作(回复信息、订阅、扫码、发语音、点按钮等),此时这些信息微信会发送到微信服务器的80端口,这是一种开发类型;2.通过连接(按钮、文章)引导用...

    frank_fun 评论0 收藏0

发表评论

0条评论

JerryZou

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<