Python使用JsAPI发起微信支付 Demo

这个是基于Django框架。
了解更多,可以关注公众号“轻松学编程”

1、公众号设置、微信商户号设置

这些都可以在官网查得到,

公众号

左边找到“开发”->“基本配置”在公众号配置域名、ip白名单,获取必须参数(AppID,AppSecret))等

商户号 需要在商户号配置域名,获取必须参数(商户号mchID)等。

登录https://pay.weixin.qq.com/core/home/login商户平台,找到:

需要的主要信息有:

APPID = '你的公众号appid'
APPSECRET = '你的公众号appsecret'
GZH_TOKEN = '公众号token' # 如果公众号开启使用服务器来推送信息需要设置这个 # 商户id
MCH_ID = '你的商户id'
# 微信商户平台(pay.weixin.qq.com)-->账户设置 -->API安全 -->密钥设置,设置完成后把密钥复制到这里
API_KEY = '你的商户key'

还需要https域名、服务器ip,然后在wechatPayDemo\wx_pay_settings.py中设置好这些必需的参数。

2、在linux下安装部署项目

我使用的是ubuntu18.04,其他的命令类似。

具体操作可以参考我写的这篇博客

在wechatPayDemo\settings.py中把 数据库信息改为你的,并Linux下创建数据库

在这个项目中我也提供了uwsgi.ini,和一个nginx参考文件,wechatPayDemo_nginx

3、说下微信支付流程

这个在官网也讲得很详细。

  • 用户从公众号、扫码进入商城,先调用https://xxx/pay/get_wx_code/接口从微信系统获取code,通过code和全局access_token来获取用户信息

  • 获取到用户信息后可以保存到数据库,然后返回商城页面给用户

  • 用户选择商品后会点击支付按钮,这时会调用https://xxx/pay/gzhwxpayparams/获取调起微信支付接口的必要参数,比如签名等

  • 用户支付成功后,后端:微信会回调你设置的url(https://xxx/pay/wxpayresult/),把支付结果返回给你,你可以获取到用户信息,订单信息,然后进行支付结果逻辑处理。前端:支付成功或者失败,会跳转到https://xxx/pay/payresultpage/,把支付结果展示给用户。

4、自定义公众号菜单

在公众号的基本配置中可以开启服务器配置,然后自定义回复用户发来的信息。

方式一:可以在公众号后台自定义菜单:

方式二:也可以通过代码来自定义公众号菜单,在wechatPayDemo\pay\wechat_utils.py中的函数define_menu_button定义好菜单后,可以在浏览器中输入https://xxx/define_menu/来创建公众号菜单,创建成功,需要重新打开公众号才能看到效果。

需要demo的可以加我微信【1257309054】

公众号:

最新文章

  1. 打印IP 来源
  2. btrfs-snapper 实现Linux 文件系统快照回滚
  3. css中伪元素before或after中content的特殊用法attr
  4. 怎么学习AOPR使用方法
  5. mac使用指南:brew的安装
  6. (七)学习MVC之CodeFirst迁移更新数据库
  7. Oracle DB优化
  8. Mac系统下安装PIL
  9. QML中多样化的ListModel(MultiDelegate)
  10. switch case语句里面不能定义对象,有语法错误,除非加一个花括号
  11. Vue学习之路8-v-on指令学习简单事件绑定之属性
  12. Python爬虫【四】Scrapy+Cookies池抓取新浪微博
  13. curd——5
  14. ubuntu增加工作分区命令
  15. 编译开源C或者C++项目最好像执行如下命令,否则可能会有这种奇葩问题
  16. 【面试虐菜】—— JAVA面试题(2)
  17. redash docker 运行
  18. elasticdump
  19. BZOJ3261:最大异或和——题解
  20. Java Mail(一):telnet实现发送收取邮件

热门文章

  1. 【CF1425A】 Arena of Greed题解
  2. Python练习题 042:Project Euler 014:最长的考拉兹序列
  3. js简单数据类型和复杂数据类型
  4. C++ 异常处理 catch(...)介绍
  5. IntelliJ IDEA 调试 Java 8 Stream,实在太香了!
  6. CyclicBarrier原来是这样的
  7. mysql DISTINCT选取多个字段,获取distinct后的行信息
  8. 经验分享:Windows10值得推荐的软件,总有一款是你的菜
  9. go 参数传递的是值还是引用 (转)
  10. centos8平台redis5的主从同步搭建及sentinel哨兵配置