微信支付开发教程JAVA编[006]-刷卡支付

        好了,终于要进行正题了.我们来进行实现的支付动作.刷卡支付,即用户打开微信->我->钱包->刷卡.会显示如下界面.商家使用扫描设备读取条形码或二维码,其实就是读取最顶上的那一串字符串.这个界面,每分钟自动刷新新的字符串.如图:

微信支付开发教程JAVA编[006]-刷卡支付_第1张图片

 

扫码支付,只需将特定的xml消息,post到微信服务器: https://api.mch.weixin.qq.com/pay/micropay..如下:

 


	
	
	1391091002
	
	10
	130511591103617845
	
	
	

sign字段即为签名字段,签名算法见官方文档:https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=4_3

 

其他字段,见官方文档...

调用这个api会返回xml消息.例如:

 


	
	
	
	
	
	
	
	
	
	
	
	10
	
	
	
	
	
	10
	

 

 

        需要注意的是,这个api是即时返回的,而当用户当天多次(多于5笔)刷卡之后,微信要求用户输入密码.但是,这个api却是马上返回如下xml的:

 


	
	
	
	
	
	
	
	
	

        

 

        这个困扰了我蛮久,不知道微信在大神是如何考滤的,还想着是不是因为http协议的原因,不能让请求卡在那里,一直等一直等,而不返回.后面想想,确实是有道理的,万一用户不输入密码了呢?难道死等下去?

        所以api的返回值,并不是正确的,官方文档里也说明,需要商户去轮询调用查询订单接口,获得真正的结果.但是,像扫码支付,公众号支付,都是可以配置notify_url的,微信会向这个url回调支付结果,一开始我也在想,为什么刷卡支付就不使用这种notify_url处理方式了呢?也许是因为考滤,刷卡支付可以实现在硬件上吧,例如,扫码枪.可以省掉一个服务器,如果店家只把刷卡硬件当收费工具,而不需要对这些账单折腾到服务器上时.

你可能感兴趣的:(微信支付开发教程JAVA编[006]-刷卡支付)