模式一

    商户后台系统根据微信支付规则链接生成二维码,链接中带固定参数productid(可定义为产品标识或订单号),用户扫码后,微信支付系统将productid和用户唯一标识(openid)回调商户后台系统(需要设置支付回调URL),商户后台系统根据productid生成支付交易,最后微信支付系统发起用户支付流程...

两种模式,在支付的流程中,有一定的共同的流程:
1,生成订单。
2,用户支付。

差别在于:
模式一,先扫码,再生成订单。
模式二,先生成订单,再扫码。

而 生成订单,代表着 本次支付给商户的金额是否是已经确定了。
在模式一中,用户扫描的二维码,此时可以还没有确定实际要支付的金额。
在模式二中,用户扫描的二维码,金额已经是确定的。

可以这么理解,模式一中的二维码,是商品的二维码。
模式二中的二维码,是 订单的二维码,也因为这个是订单的二维码,所以必须要有时效性。

那么这两个场景的玩法,可以有一个明显的差别,
模式一,更适合无人职守的自动售卖机。所有的商品都有一个固定的二维码,价格相对稳定,当用户使用微信支付扫描了二维码,微信再请求自动售卖机的服务提供商的 后台接口,注意,这个请求中,是包含了商品ID以及用户信息的,这样,商户系统就可以根据 商品ID,以及用户的身份,再来确定用户实际要支付的金额。

模式二,更适合有人职守的,支付金额非常不确定的场合。比如,你去饭馆吃饭,虽然每个菜的金额是固定的,但一桌子饭菜的金额不固定,甚至是你还可能使用饭馆事先发放的代金券。这个时候,就需要收银员,预先创建一个订单,确定好金额,然后你再来扫描这个二维码来支付。

当然,用模式二来实现无人值守的自动售卖机,也是可以的。只是这个自动售卖机的就要多承担一些交互以及业务逻辑,在生成二维码之前,创建订单。

扫码支付的这两个实现模式对于非专业人士可能理解起来有点小难度,通俗的说,其实就是线下支付和线上支付连各种模式:
1、模式1—也就是线下支付,这种模式是商户自己为商品生成链接二维码,顾客通过扫描商品二维码得到商品详细信息并选择是否确认购买;
2、模式2—也就是线上支付,这种模式是顾客在线选好商品选择调用微信支付,商户平台给予相应,完成购买动作。

1.【模式一】:

可应用场景: 线上、线下

场景说明:
线下:因为一张二维码可重复应用于多人,不会过期,所以多用于线下,(所以只要为某一种商品贴上一个二维码,用于扫描该二维码完成支付就可以带走一件该类商品了),
tip:还未买,可应用于多人,每个人都还没生成订单,每个人扫描二维码时才会生成系统内部订单,以及微信预支付订单prepay_id,后续的步骤和公众号内支付类同。。。

线上:还可以应用于线上,只不过,相比较模式二,流程较长,会耗时较长影响用户体验。。。,如果非要应用于线上的话,因为线上的系统内部订单是预先生成好的,
所以二维码地址参数中要携带预先生成好的订单,如可以给product_id赋予内部订单号,官方对product_id的参数说明如下图:商户定义的商品id或者订单号

tip:已生成订单,二维码中携带的product_id就可以作为订单号来使用,当然啦,也不一定要安装官方说的来,你也可以将你要携带的各种参数经过一定的拼接和编码(如商品id、订单号,等其他各种参数,以下划线隔开拼接起来) 赋给product_id,不过长度你就要把握好了哦…

说明:
i:调用统一下单不需要传递openid了,沾了模式二的光(因为模式二不知道具体谁会扫描二维码,而统一下单接口大家都是公用的),好哎。。。
ii:因为展示的二维码中不含有预支付订单prepay_id等信息(prepay_id预支付订单唯一标示,存在2个小时有效期),所以二维码的有效时间为无限期。。。

2.【模式二】:商户后台系统调用微信支付【统一下单API】生成预付交易,
将接口返回的链接生成二维码,用户扫码后输入密码完成支付交易。注意:该模式的预付单有效期为2小时,过期后无法支付。

可应用场景:线上,(线下不建议使用,因为每张二维码只能扫一次,而且有时间限制)

场景说明:因为二维码有效期和应用人数限制,所以多应用于线上(线上订单生成时间是确定的,而2个小时足够支付完成了,还有就是一张二维码只能用于一个人,因为
二维码种包含了prepay_id等预支付信息,而每个预支付订单只能由一个人支付完成,重复对一个prepay_id支付,会提示订单已经支付,所以只能应用于一个人)

说明:
i:一对一的模式,和公众号支付类同,预先生成了系统内部订单,只有一个人能支付成功哦,因为不知道是谁会扫码,所以openid不需要传了
ii:用户提交系统内部订单,然后根据模式二生成二维码,扫码完成后再支付(不一定要扫码,如果是移动端,可以直接通过a链接打开),不适用于多人扫一张,因为只能有一个人付款成功。。。
iii:还有一种场景是预先生成订单,谁先付款,谁得到,后期再根据openid识别谁抢到了。。。1分钱秒杀活动开始 start…

ps:生成的二维码链接地址如:weixin://wap/pay?appid%3Dwxcd7143c00e5bb6f7%26noncestr%3DX7D6ghJRDJ5jNlO2s133wOpDBWvhDQVc%26package%3DWAP%26prepayid%3Dwx20151130233233f97682849d0514473918%26sign%3D2767EA5CAFAAC15041F867D6FD8EC805%26timestamp%3D1448897278466在移动端浏览器(除微信浏览器外)是可以直接通过a链接标签打开的
点击a链接可直接打开了微信app中的支付界面

扫码支付(原生支付)-模式一和模式二相关推荐

  1. asp微信点餐系统下载,asp微信扫码点餐支付,asp源码开发的mdb数据库

    上周接了一个朋友的私活,用asp开发一套点餐系统,因为他现在的服务器就是支持asp的,点餐系统本身是不大的,但是他的要求很高: 1.要能点套餐,先扫码确定桌号,然后选套餐和人数,下单支付 2.扫码确定 ...

  2. 微信扫码登录、支付项目总结

    一.前期准备 项目代码https://gitee.com/lcaicai/xdvideo.git 微信网站应用扫码登录官方文档:https://open.weixin.qq.com/cgi-bin/s ...

  3. Unity发布PC平台,接入微信开放平台网页应用,扫码登录不拉起浏览器直接显示二维码在UI上

    文章目录 一.前言 二.登录微信开放平台,申请网页应用 三.抓取授权二维码原理 四.测试 五.核心代码 六.补充:如何知道用户扫码成功 一.前言 Unity发布PC平台,如果在PC平台想要使用微信登录 ...

  4. 如何扫码填写数据?在线制作表单二维码的方法

    二维码填写表单是现在很常见的一种方式,这种方法对比以前纸质的信息收集,更加的简单快捷,能够有效的提高效率.通过二维码生成器(免费在线二维码生成器-二维码在线制作-音视频二维码在线生成工具-机智熊二维码 ...

  5. 支付宝扫码即时到账支付

    String strResult1 = "";// //请求参数//// 接口调用时间String timestamp = UtilDate.getDateFormatter(); ...

  6. 随着无人新零售经济的崛起,商场、车站、大厦等各种场所都引入了无人饮品自动售货机,方便人们选购自己想要的饮品。购买者选择想要的饮品,通过投币或扫码的方式支付,支付成功后从出货口取出饮品。

    drink={'绿茶':2,'冰糖雪梨':2,'尖叫':4,'阿萨姆':4.5,} Cart=[] def Go_shooping():for key, values in drink.items() ...

  7. android studio怎么改软件扫码界面_Android测试工具入门介绍(二)

    今天我们来讲讲一款牛逼的安卓集成工具:就是大名还算顶顶的AndroidKill: 先来个软件界面截图: 多么简单有华丽的界面啊!我说的是功能华丽,该有的功能他都有. 首先我们先点开菜单中的Androi ...

  8. 扫码登录,将请求路径制作成二维码

    今天,写了一个二维码制作的工具类,在这里和大家分享一下. 需要在pom文件中添加jar包 <!--zxing二维码包--> <dependency><groupId> ...

  9. Java之微信支付(扫码支付模式二)案例实战

    摘要:最近的一个项目中涉及到了支付业务,其中用到了微信支付和支付宝支付,在做的过程中也遇到些问题,所以现在总结梳理一下,分享给有需要的人,也为自己以后回顾留个思路. 一:微信支付接入准备工作: 首先, ...

最新文章

  1. Mybatis接口Mapper内的方法为啥不能重载?
  2. python趣味编程入门 迈克 桑德斯_Python趣味编程入门
  3. https协议 ppt 下载卷_做PPT被版权吓得心颤颤?教你如何搞到靠谱素材
  4. 一步一步学Silverlight 2系列(4):鼠标事件处理
  5. 软件工程领域相关的技术标准_女生是否适合学习软件工程专业,以及是否能够有好的就业机会...
  6. mysql+表复制+效率_MySQL数据库复制表的几种方式讲解
  7. 有趣的灵魂连墓碑都很酷! | 今日趣图
  8. Java 7:在不丢失数据的情况下关闭NIO.2文件通道
  9. eBPF 入门之编程
  10. PostgreSQL 中如何delete重复数据
  11. 使用malloc分别分配2KB的空间,然后用realloc调整为6KB的内存空间,打印指针地址...
  12. 关于opencv中图像的坐标原点的区分
  13. idea 检测 重复代码_重复代码检测
  14. 用html制作的旅游相册名字唯美,好听的相册名字
  15. 运筹说 第19期 | 线性规划经典例题讲解
  16. 2020年下半年系统集成项目管理资料、精心整理
  17. 音频转文字怎么转?这些方法值得一试
  18. 盘点那些真正能提升工作幸福度的小工具
  19. 第14讲:Python使用加法和乘法运算符操作列表
  20. [转载]Mac地址、IP、子网掩码、网关、DNS(转)

热门文章

  1. 百度地图AK鉴权说明与白名单设置方法
  2. 梁昌勇 软件工程_梁昌勇简介_研究领域_学术成果_合肥工业大学管理学院教授-教师点评 - 人大经济论坛...
  3. CentOS6.5 安装CPAN,从而安装perl的各种模块
  4. 企业经营(数据)分析
  5. 马云的又一招棋,平台基因怎么让飞猪成为出境游领军者
  6. 如何选择一款适合自己的医疗险,看保通来详解
  7. java dispo lock_Rxjava2 学习记录。
  8. Mac版本EndNote基本用法
  9. Java行之有效的学习方法,Java直播课:Spring Cloud Alibaba Nacos 注册中心
  10. i致我们终将组件化的Web