1.【模式一】:商户后台系统根据微信支付规则链接生成二维码,链接中带固定参数productid(可定义为产品标识或订单号),
用户扫码后,微信支付系统将productid和用户唯一标识(openid)回调商户后台系统(需要设置支付回调URL),
商户后台系统根据productid生成支付交易,最后微信支付系统发起用户支付流程...
可应用场景:
线上、线下
场景说明:
线下:因为一张二维码可重复应用于多人,不会过期,所以多用于线下,(所以只要为某一种商品贴上一个二维码,用于扫描该二维码完成支付就可以带走一件该类商品了),
tip:还未买,可应用于多人,每个人都还没生成订单,每个人扫描二维码时才会生成系统内部订单,以及微信预支付订单prepay_id,后续的步骤和公众号内支付类同。。。
线上:还可以应用于线上,只不过,相比较模式二,流程较长,会耗时较长影响用户体验。。。,如果非要应用于线上的话,因为线上的系统内部订单是预先生成好的,
所以二维码地址参数中要携带预先生成好的订单,如可以给product_id赋予内部订单号,官方对product_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,生成订单。
2,用户支付。
差别在于:
模式一,先扫码,再生成订单。
模式二,先生成订单,再扫码。
而 生成订单,代表着 本次支付给商户的金额是否是已经确定了。
在模式一中,用户扫描的二维码,此时可以还没有确定实际要支付的金额。
在模式二中,用户扫描的二维码,金额已经是确定的。
可以这么理解,模式一中的二维码,是商品的二维码。
模式二中的二维码,是 订单的二维码,也因为这个是订单的二维码,所以必须要有时效性。
那么这两个场景的玩法,可以有一个明显的差别,
模式一,更适合无人职守的自动售卖机。所有的商品都有一个固定的二维码,价格相对稳定,当用户使用微信支付扫描了二维码,微信再请求自动售卖机的服务提供商的 后台接口,注意,这个请求中,是包含了商品ID以及用户信息的,这样,商户系统就可以根据 商品ID,以及用户的身份,再来确定用户实际要支付的金额。
模式二,更适合有人职守的,支付金额非常不确定的场合。比如,你去饭馆吃饭,虽然每个菜的金额是固定的,但一桌子饭菜的金额不固定,甚至是你还可能使用饭馆事先发放的代金券。这个时候,就需要收银员,预先创建一个订单,确定好金额,然后你再来扫描这个二维码来支付。
当然,用模式二来实现无人值守的自动售卖机,也是可以的。只是这个自动售卖机的就要多承担一些交互以及业务逻辑,在生成二维码之前,创建订单。
扫码支付的这两个实现模式对于非专业人士可能理解起来有点小难度,通俗的说,其实就是线下支付和线上支付连各种模式:
1、模式1—也就是线下支付,这种模式是商户自己为商品生成链接二维码,顾客通过扫描商品二维码得到商品详细信息并选择是否确认购买;
2、模式2—也就是线上支付,这种模式是顾客在线选好商品选择调用微信支付,商户平台给予相应,完成购买动作。