by:一起奋斗(转载请注明出处)http://blog.csdn.net/u011852706/article/details/50300915
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中的支付界面