本文是【浅析微信支付】系列文章的第二篇,主要讲解一下普通商户接入的支付方式以及其中的不同之处。


上篇文章讲了本系列的大纲,没有看过的朋友们可以看一下。

浅析微信支付:前篇大纲

微信支付是集成在微信客户端的支付功能,用户可以通过手机完成快速的支付流程。微信支付以余额、绑定银行卡的快捷支付为基础,向用户提供安全、快捷、高效的支付服务。

微信支付开通需要申请商户平台功能,所以,个人的订阅号是不能开通微信支付的,只有服务号可以开通,申请成为公众账号支付商户必须满足以下条件:

1)拥有公众帐号,且为服务号;
2)公众帐号须通过微信认证;

微信认证资质审核通过后,即可申请微信支付功能。

这里就不演示如何开通微信支付了,百度有现成的例子。

下面讲开通微信支付后的开发选择。

1、支付方式

从微信支付商户平台的首页 https://pay.weixin.qq.com/wiki/doc/api/index.html 进入,选择 普通商户 版本的支付方式,主要分为以下六种:

1.刷卡支付:用户打开微信钱包的刷卡的界面,商户扫码后提交完成支付
2.公众号支付:用户在微信内进入商家H5页面,页面内调用JSSDK完成支付
3.扫码支付:用户打开"微信扫一扫“,扫描商户的二维码后完成支付
4.APP支付:商户APP中集成微信SDK,用户点击后跳转到微信内完成支付
5.H5支付:用户在微信以外的手机浏览器请求微信支付的场景唤起微信支付
6.小程序支付:用户在微信小程序中使用微信支付的场景

以上六种支付方式,比较常用的是 2、4、6 这三种,刷卡、扫码、H5现在相对来说用的比较少,本文就主要讲 2、4、6 这三种支付方式了。

1.1.公众号支付

公众号支付用途非常广泛,主要用于商家在微信服务号中自建网页商城网站,用户通过链接或者二维码进入微信内部网页浏览器时,进行购买下单等支付操作时调用的流程。

开发前准备:

https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_3

一、设置支付目录
请确保实际支付时的请求目录与后台配置的目录一致(现在已经支持配置根目录,配置后有一定的生效时间,一般5分钟内生效),否则将无法成功唤起微信支付。

在微信商户平台(pay.weixin.qq.com)设置您的公众号支付支付目录,设置路径:商户平台-->产品中心-->开发配置。公众号支付在请求支付的时候会校验请求来源是否有在商户平台做了配置,所以必须确保支付目录已经正确的被配置,否则将验证失败,请求支付不成功。

二、设置授权域名
开发公众号支付时,在统一下单接口中要求必传用户openid,而获取openid则需要您在公众平台设置获取openid的域名,只有被设置过的域名才是一个有效的获取openid的域名,否则将获取失败。

PS:简单讲就是需要填写一个微信认证通过的域名,这个域名就是咋们访问的页面链接,需要注意的一点是,请尽量认证绝对域名,比如使用 www.yclimb.com,不使用 www.yclimb.com/blog 这样,认证成功后就可以使用微信的网页授权接口来获取用户信息了。

如果需要本地测试,则需要去申请一下测试号来测试本地的用户信息,详情见如下链接:
https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

注意:测试号不支持微信支付!!!

官方场景介绍如下:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_1

开发流程:

1.用户通过链接或二维码进入网页 ->
2.调用微信网页授权接口[官方接口] ->
3.用户授权后获取用户信息[官方接口] ->
4.封装商品信息并下单 ->
5.调用微信统一下单接口[官方接口] ->
6.根据统一下单接口返回信息组装前端需要的支付参数[官方验证] ->
7.前端使用支付参数唤起微信支付界面[官方接口] ->
8.支付成功后微信异步调用统一下单时传入的回调接口[官方接口] ->
9.更新商户订单信息

基本流程就如上所述,详细介绍见下一章。

1.2.APP支付

APP支付适用于商户在移动端APP中集成微信支付功能。
商户APP调用微信提供的SDK调用微信支付模块,商户APP会跳转到微信中完成支付,支付完后跳回到商户APP内,最后展示支付结果。
目前微信支付支持手机系统有:IOS(苹果)、Android(安卓)和WP(Windows Phone)。

官方场景介绍如下:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_1

开发流程:

1.用户进入商户APP,选择商品下单、确认购买,进入支付环节。商户服务后台生成支付订单,签名后将数据传输到APP端。
2.用户点击后发起支付操作,进入到微信界面,调起微信支付,出现确认支付界面。
3.用户确认收款方和金额,点击立即支付后出现输入密码界面,可选择零钱或银行卡支付。
4.输入正确密码后,支付完成,用户端微信出现支付详情页面。
5.回跳到商户APP中,商户APP根据支付结果个性化展示订单处理结果。

PS:APP支付和公众号支付有几个不同的点:

1.公众号支付需要进行用户授权获取用户信息,统一下单接口需要用户的openid
2.APP支付不需要用户授权,也不需要用户的openid
3.APP支付依赖于平台,如iOS、Android,需要前端小伙伴配合SDK开发,公众号直接调取http/https接口即可
4.统一下单时类型不同,开发时注意个别字段的值变化

1.3.小程序支付

小程序支付开发步骤:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_3&index=1

如果开发者已做过JSAPI(公众号支付)或JSSDK(H5)调起微信支付,接入小程序支付非常相似,以下是三种接入方式的对比:

对比栏目 JSAPI JSSDK 小程序
统一下单 都需要先获取到Openid,调用相同的API
调起数据签名 五个字段参与签名(区分大小写):appId,nonceStr,package,signType,timeStamp
调起支付页面协议 HTTP或HTTPS HTTP或HTTPS HTTPS
支付目录
授权域名
回调函数 success回调 complete、fail、success回调函数

PS:小程序访问商户服务都是通过HTTPS,开发部署的时候需要安装HTTPS服务器

商户系统和微信支付系统主要交互:

1、小程序内调用登录接口,获取到用户的openid,api参见公共api【小程序登录API】
2、商户server调用支付统一下单,api参见公共api【统一下单API】
3、商户server调用再次签名,api参见公共api【再次签名】
4、商户server接收支付通知,api参见公共api【支付结果通知API】
5、商户server查询支付结果,api参见公共api【查询订单API】

2、支付工具

普通商户 版本的支付工具,主要分为以下三种:

1.代金券或立减优惠:商户营销和运营的能力,给用户发放代金券或立减优惠的相关说明
2.现金红包:提供给商户营销的能力,商户给用户派发现金红包相关说明
3.企业付款:企业付款至用户微信支付零钱或银行卡

支付工具待将支付接口讲完之后,会单独拿几章来讲一下,这里就不细讲了!

3、注意事项

上面主要讲了小程序、公众号、APP这三种支付方式,我们需要注意的是,无论哪种支付方式,最终都会去调取 统一下单接口,这个接口主要是将咋们商户中的订单信息拼接为支付信息传入到微信平台,微信平台会返回一个 预支付单 信息,我们对这个信息进行再次加密后拼接为实际支付所需的参数(五个字段参与签名(区分大小写):appId,nonceStr,package,signType,timeStamp),给到微信提供的官方接口中即可调起支付页面了;

关于上面的步骤这里不细讲,后面几章会着重说明调取微信支付的前期准备,以公众号支付为例子,讲一下如何获取授权、拉取用户信息,生产支付信息、调起微信支付等...

结语

前面几章都是一些比较琐碎的概念型文章,从下一章开始进入实操代码环节,下一章会讲 进入微信支付的前期准备 尽情期待!

​如果想要提前一览源码的小伙伴,可以先看看我的 github,地址如下: https://github.com/YClimb/wxpay-sdk/blob/master/README.md

加作者私人微信,作者微信号如下 yclimb,标明 微信支付 可拉入微信支付讨论群与小伙伴一起探讨哦,一定要标明 微信支付 哦~

到此本文就结束了,关注公众号查看更多推送!!!



转载于:https://www.cnblogs.com/yclimb/p/9934002.html

浅析微信支付:微信支付简单介绍(小程序、公众号、App、H5)相关推荐

  1. 小程序+公众号=App?小程序、公众号、App这三者间如何导流?

    小程序+公众号=App,相信很多做小程序的产品和运营都会一下就看懂这条公式,公众号的内容+小程序的活动/功能可以说是完美的结合体,因此很多产品也将资源大量投入到公众号和小程序.这个公式究竟成立吗?小程 ...

  2. 相亲婚恋交友平台小程序+公众号+app【uniapp+thinkphp】开发功能全开源

    主要功能: 优惠券 会员等级 会员分区 信息付费置顶 首页推荐 会员实名认证 赠送礼物 实名认证  智能匹配  活动 视频 多级筛选  语音留言 红娘入住  找对象 1.大厅 首页模块可以进行筛选,从 ...

  3. 微信html5测试工具,FAutoTest- 微信小程序 / 公众号 H5 自动化利器

    X5 内核 H5 自动化背景 近来有很多童靴咨询如何做微信小程序/公众号等 H5 页面来做自动化,之前写了一篇文章微信小程序自动化测试实践 https://www.cnblogs.com/yyoba/ ...

  4. 微信小程序公众号开发

    微信小程序&公众号开发 一.什么是微信开发 二.微信开放平台 三.微信公众平台 四.小程序与公众号的区别 1. 用途不同 2. 运营方式不同 3. 操作方法不同 4. 用户体验不同(公众号操作 ...

  5. 开源全平台版知识付费系统源码 支持微信小程序+公众号+H5+PC端

    分享一个开源全平台版知识付费系统源码,系统支持微信小程序+公众号+H5+PC端,一套系统实现全端数据及用户体系全面打通,轻松实现店铺全网一站式运营.含完整代码包和详细搭建教程. 系统支持视频课程.音频 ...

  6. 微信小程序公众号开发者自动编译,热启动,自动保存

    微信小程序公众号开发者自动编译,热启动,自动保存 1.自动保存 选择左上角设置➡编辑器设置➡勾选需要的设置即可 2.热启动 选择右上角详情➡本地设置➡勾选启动代码自动热重载(建议搭配自动保存使用)

  7. 微信小程序/公众号/开放平台账号被冻结后原始ID找回方法

    1. 问题: 微信小程序/公众号/开放平台账号长时间不用被冻结,想再次使用找回时需要原始ID,原始ID已忘记.(适用于所有原始ID忘记找回). 2. 解决办法 ##2. 1. 打开用于开发小程序/公众 ...

  8. 微信小程序+公众号的流量主收入图在线制作微信小程序源码

    微信小程序+公众号的流量主收入图在线制作微信小程序源码,这是一款流量主制作生成小工具,支持小程序流量主图制作生成,也支持公众号的流量主制作生成. 每一种制作都包含了所有的 流量主 模式,用户自己填写选 ...

  9. fiddler使用教程+抓包实践+filder抓包APP+HTTPS,PC微信小程序公众号抓包笔记,fidder插件

    fiddler使用教程+抓包实践+filder抓包APP+HTTPS,PC微信小程序公众号抓包笔记,fidder插件 fiddler使用教程 界面 File->captur traffic 开启 ...

  10. 渗透测试-微信小程序-公众号测试经验总结

    微信小程序-公众号测试 微信公众号H5端 微信公众号H5端 限制手段及绕过方法: 1.未做限制 使用其他浏览器可直接打开页面进行浏览 2.通过 UserAgent 来限制 现象:使用其他浏览器打开后会 ...

最新文章

  1. HttpClient ||GET请求||带参数的GET请求
  2. LBP特征的理论介绍
  3. java ArrayList排序
  4. margin负值布局(一)
  5. 2020CCPC(长春) - Combination Lock(二分图博弈)
  6. 实战能力|一文看懂GDB调试底层实现
  7. 人才管理是什么意思_上海托管仓库外包仓库管理什么意思
  8. TensorFlow实验(3)
  9. dll侧加载_动态载入DLL所需要的三个函数详解(LoadLibrary,GetProcAddress,FreeLibrary)...
  10. HTML (3)---HTML编辑器
  11. 开源:秋式广告杀手源码
  12. 【GPORF源码编译】GDB源码编译之gprof交叉编译
  13. python canny算法_Python 实现 Canny 边缘检测算法
  14. 2022年全球市场凝胶渗透色谱系统总体规模、主要生产商、主要地区、产品和应用细分研究报告
  15. ArangoDB高级查询(一)
  16. Unity 透视相机世界和屏幕坐标系转换
  17. 计算机管理员密码忘记了怎么恢复,新版tplink(tplogin.cn)管理员密码忘记了怎么办?...
  18. 深入浅出-交接运维工作
  19. Gram矩阵+Gram矩阵和协方差矩阵的关系
  20. 根目录磁盘空间不足,使用fdisk添加新磁盘问题

热门文章

  1. Fis3的前端工程化之路[三大特性篇之资源定位]
  2. 用Android NDK打造自己的toolchain(使用C/C++默认的Makefile)
  3. UIGestureRecognizer与UIButton Action在同一界面冲突的问题
  4. 减少到处衍生的实体类
  5. 关于一次装机后的个人总结
  6. 美工一流的个人网站源码系列(2),不漂亮你可以不下载!
  7. Go语言 读写锁互斥锁原理剖析(1)
  8. Python module模块 包 __name__
  9. Centos7找不到ifconfig和netstat命令
  10. Spring源码学习:day2