最近要做一个公众号开发,里面还涉及到微信支付,对着微信支付接口文档撸了个大概,现在分享出来,希望对大家有所帮助。其实,微信的开发文档中已经说得很全了,通读一遍就会发现一点都不复杂。

1.准备工作申请一个微信公众号,并成为开发者。

开发者入口

成为开发者开通微信支付,并开通商户平台

微信支付申请入口

微信支付申请完成后会给公众号相关联的邮箱发送一封邮件,这封邮件很重要,不要删了。另外,个人类型的公众号是不能申请微信支付的。配置支付授权目录,就是发起微信支付的页面目录,在微信公众平台--微信支付--开发配置中

支付授权目录

2.分析支付核心流程。

先看一张微信支付的时序图,微信的开发文档中有的

微信支付的时序图

先来大致理解下这张图。https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_1。就拿开发文档中的例子来说。用户选购商品,点击立即充值,前端像商户后端发送请求,生成一个商户侧的订单,然后商户后端调用微信统一下单api,生成微信预付订单,得到微信服务器返回的数据后,商户后端将数据进行处理然后返回前端页面。(按照上面时序图的说法,页面在打开h5商户页面浏览的时候会请求生成预付订单。但我个人理解是用户在选定商品后点击确认才发起请求生成预付订单。关于这点,如果有不同见解希望可以提出来讨论)

选购商品

前端页面拿到数据后利用js-api直接向微信服务器发送支付请求。此时微信会向用户请求支付授权,就像下面这样。

请求用户支付授权

点击确认支付后提示输入密码

输入支付密码

密码输入完成后,支付成功。

支付成功

时序图中第10,11步。用户在支付成功后会异步发送通知给商户后端。这里我理解的是,就相当于我们按照微信给定的标准给微信服务器提供一个接口,支付成功后,微信调用我们提供的接口,将数据以xml格式传入接口,我们在接口中进行数据处理,然后按照指定的格式返回给微信。而这个地址就是在我们调用统一下单API的时候传给微信服务端的。整个核心的支付流程就是这个样子。现在我们来看接口怎么调。

3.开始开发。

下载微信支付SDK与DEMO,下载解压,将wxpay-sdk.jar导入项目中。这个sdk中已经封装好了微信支付所需要的请求及其他方法,我们无需自己再去写http请求调用微信api并解析结果了,我们只需关注业务就行。开发的时候将demo文件中的readme.md文档打开,这个文档会告诉你 微信api接口怎么调用。

第一步,创建一个类继承自WXPayConfig,并实现里面的方法.参照readme.md中的MyConfig.其中certData表示证书数据证书在商户平台-账户中心-api安全下。appID为公众号ID,MchID为微信支付商户号,在申请微信支付成功后的邮件中有。key为API秘钥,这是自己在微信商户平台下设置的。跟证书在一个栏目下,自己设置下就行。

统一下单,参照readMe.md文档的例子。注意在统一下单请求成功后会得到一个prepay_id,这个prepay_id是要返回前端的,但是根据时序图的说法,好像这个prepay_id跟其他参数要做一个签名?可以调用WXPayUtil中的generateSignature(Map data,String key)进行签名,将签名后的数据返回给前端。然后前端用js-sdk调用微信支付控件。

其它的API调用什么的微信开发文档中都已经说的很清楚了,参照readme.md中的内容,结合自己的业务需要,依葫芦画瓢就行了。我接触这个也才两天,刚把接口写完,还没跟前端进行调试,测试,所以肯定还有很多的不完善的地方,今天只是写个思路,等产品上线并测试后再汇总问题。

php公众号支付开发,微信公众号支付开发相关推荐

  1. java开发微信公众号支付

    这篇文章主要给大家结合微信支付接口开发的实践,从获取用户授权到各主要接口的使用方法等方面介绍微信支付的关键点技术,有需要的小伙伴可以参考下 最近做了微信公众号支付的开发,由于是第一次做也摸索了几天的时 ...

  2. SpringBoot开发微信公众号

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 在讲微信公众号开发之前,先来大概了解一下微信公众号.微信公 ...

  3. Spring Boot 开发微信公众号

    点击上方蓝色"方志朋",选择"设为星标"回复"666"获取独家整理的学习资料! 在讲微信公众号开发之前,先来大概了解一下微信公众号.微信公众 ...

  4. 使用C# .net开发微信公众号之服务器URL配置

    服务器URL配置 是微信公众号开发里非常重要的一个步骤. 虽然微信公众平台已经给了我们很多 必要的功能 像:查看用户,查看用户消息,给用户回复消息,自动给用户回复消息,根据用户消息内容回复给用户图文消 ...

  5. 微信,支付宝支付,微信公众号小程序授权等

    微信,支付宝支付,微信公众号小程序授权等 前言 微信支付 微信授权 maven依赖(更新) 前言 最近在公司也做了很多移动端项目,如今微信公众号,小程序又特别火爆,免不了要接触支付,授权这类的业务需求 ...

  6. 微信公众号之接入微信公众号服务器开发(一)

    说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 一丶概述 公众号与公众平台 1. 微信账号类型 个人号 公众号 订阅号 服务号 企业号 2. 公众号 微信公众号主要面向名人.政府 ...

  7. uniapp 开发微信公众号H5 隐藏右上角扩展按钮

    uniapp 开发微信公众号H5 隐藏右上角扩展按钮 1.首先使用npm安装一下微信的jsApi (这个应该都会吧 就跟vue使用npm安装依赖一样) 初始化: npm init -y 安装微信模块: ...

  8. 微信支付、微信公众号接口认证方案

    1 微信公众号接口认证方案 1.1 认证流程 安全API接口认证方案 流程图模板_ProcessOn思维导图.流程图​www.processon.com/view/link/636e05a21e085 ...

  9. python开发微信订阅号如何申请_基于Python的微信公众平台二次开发(Python常用框架、订阅号开发、公众号开发)...

    1.1.课程的背景 微信公众平台的火热程度已经不用多言,无论是个人还是企业,政府还是商家,都已经开始搭建微信公众平台,微信的作用已经被各界人士认可.微信公众平台的技术需求市场缺口巨大.同时python ...

  10. vue开发微信公众号订阅消息踩坑记录

    今天做了一个微信公众号的网页开发, 使用的是vue做的开发,没错,就是微信公众号的开发,这都2021年了, 还有人有开发微信公众号的需求,我也是晕了, 微信公众号是我开发中感觉,最难调试的开发工作,没 ...

最新文章

  1. 关于人脸识别滥用的十个可能的应对方案
  2. 【深度学习】Transfomer在文本处理上的应用(风格识别)
  3. MacBook Air 使用技巧
  4. KlayGE中的FXAA已经完成
  5. iphone有什么软件可以修改html,现在iPhone组装机太可怕,修改数据即可变原装?...
  6. 【oracle11g,17】存储结构: 段的类型,数据块(行连接、行迁移,块头),段的管理方式,高水位线...
  7. 项目实战之服务端分页的实现——SQL
  8. Python绘制KS曲线
  9. Linux中关机与重启命令
  10. 5.29 狡猾的商人(把后天的写了,老师不会打我吧)
  11. 哥德巴赫猜想—初等数论课后习题
  12. mac部署rabbitmq流程与异常总结
  13. 平面设计的基础知识有哪些?
  14. 回撤率 python_最大回撤用python怎么计算
  15. Aspose.Slides使用教程:使用 C# 在 PowerPoint 演示文稿中添加页眉和页脚
  16. 一个int类型到底占多少个字节?
  17. 论文笔记-精读-8.22-Manifold Regularized Dynamic Network Pruning
  18. Matplotlib绘制三维数据点与线
  19. 计算自然数e以及怎样理解为什么出现这么一个数
  20. 台式计算机如何升级,台式电脑怎样升级系统

热门文章

  1. CAJ浏览器看论文如何设置背景为护眼色
  2. linux界面进入mysql命令
  3. 提高百度竞价广告质量度的5个关键方法
  4. html在线快递单号打印,HTML 快递打印模板(示例代码)
  5. Spark 已死,Storm 已凉,Flink 永远滴神!
  6. [转载]希捷固件门7200.12 CC46固件升级方法
  7. oracle学习视频
  8. PDF转CAD格式步骤再简单
  9. 系统服务器属于无形资产,企业管理系统是否属于无形资产?
  10. VMware虚拟机刷openWRT