微信支付开发教程JAVA编[006]-刷卡支付
来源:互联网 发布:郑州淘宝加盟宣判了吗 编辑:程序博客网 时间:2024/04/30 16:14
我承接app和微信公众号开发,如果有谁需要的话,可以惠顾我,谢谢.
QQ: 40678884
微信: szuzsq
主页: http://www.wxshaker.com
博客: http://blog.csdn.net/szuzsq
-------------------------------------------------------------------------------------------------------------------------------------
好了,终于要进行正题了.我们来进行实现的支付动作.刷卡支付,即用户打开微信->我->钱包->刷卡.会显示如下界面.商家使用扫描设备读取条形码或二维码,其实就是读取最顶上的那一串字符串.这个界面,每分钟自动刷新新的字符串.如图:
扫码支付,只需将特定的xml消息,post到微信服务器: https://api.mch.weixin.qq.com/pay/micropay..如下:
<xml><sign><![CDATA[E283A17BFFDE291CB86945B9534E3F0C]]></sign><body><![CDATA[微微花语-花束]]></body><mch_id>1391091002</mch_id><spbill_create_ip><![CDATA[127.0.0.1]]></spbill_create_ip><total_fee>10</total_fee><auth_code>130511591103617845</auth_code><appid><![CDATA[wxfedef3857580f5a0]]></appid><out_trade_no><![CDATA[h80j32aw0zsvw256tfsjj4jmfyd6xrbh]]></out_trade_no><nonce_str><![CDATA[86qlwk7iyq5egk4la2pahuwuglvgz2b0]]></nonce_str></xml>sign字段即为签名字段,签名算法见官方文档:https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=4_3
其他字段,见官方文档...
调用这个api会返回xml消息.例如:
<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg><appid><![CDATA[wxfedef3857580f5a0]]></appid><mch_id><![CDATA[1391091002]]></mch_id><nonce_str><![CDATA[86qlwk7iyq5egk4la2pahuwuglvgz2b0]]></nonce_str><sign><![CDATA[0DA97530CE3C7F5AD0F501042AD5D695]]></sign><result_code><![CDATA[SUCCESS]]></result_code><openid><![CDATA[oeXrjw-JM3GPjBRTPKUM8DOTAQ5A]]></openid><is_subscribe><![CDATA[Y]]></is_subscribe><trade_type><![CDATA[MICROPAY]]></trade_type><bank_type><![CDATA[CMB_DEBIT]]></bank_type><total_fee>10</total_fee><fee_type><![CDATA[CNY]]></fee_type><transaction_id><![CDATA[4005682001201703224272564945]]></transaction_id><out_trade_no><![CDATA[h80j32aw0zsvw256tfsjj4jmfyd6xrbh]]></out_trade_no><attach></attach><time_end><![CDATA[20170322182020]]></time_end><cash_fee>10</cash_fee><cash_fee_type><![CDATA[CNY]]></cash_fee_type></xml>
需要注意的是,这个api是即时返回的,而当用户当天多次(多于5笔)刷卡之后,微信要求用户输入密码.但是,这个api却是马上返回如下xml的:
<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg><appid><![CDATA[wxfedef3857580f5a0]]></appid><mch_id><![CDATA[1391091002]]></mch_id><nonce_str><![CDATA[AwIezlvfb055LwLO]]></nonce_str><sign><![CDATA[EB43AF0272D48978F9DF681E935BD347]]></sign><result_code><![CDATA[FAIL]]></result_code><err_code><![CDATA[USERPAYING]]></err_code><err_code_des><![CDATA[需要用户输入支付密码]]></err_code_des></xml>
这个困扰了我蛮久,不知道微信在大神是如何考滤的,还想着是不是因为http协议的原因,不能让请求卡在那里,一直等一直等,而不返回.后面想想,确实是有道理的,万一用户不输入密码了呢?难道死等下去?
所以api的返回值,并不是正确的,官方文档里也说明,需要商户去轮询调用查询订单接口,获得真正的结果.但是,像扫码支付,公众号支付,都是可以配置notify_url的,微信会向这个url回调支付结果,一开始我也在想,为什么刷卡支付就不使用这种notify_url处理方式了呢?也许是因为考滤,刷卡支付可以实现在硬件上吧,例如,扫码枪.可以省掉一个服务器,如果店家只把刷卡硬件当收费工具,而不需要对这些账单折腾到服务器上时.
- 微信支付开发教程JAVA编[006]-刷卡支付
- java开发微信支付(刷卡支付)
- 微信支付开发(7) 刷卡支付
- 微信支付-刷卡支付
- 微信支付开发教程JAVA编[001]-引言
- 微信支付开发教程JAVA编[002]-配置
- 微信支付开发教程JAVA编[005]-签名算法
- 微信开发之刷卡支付
- 微信支付开发教程JAVA编[007]-扫码支付
- 4.微信支付之刷卡支付
- 微信支付开发教程JAVA编[003]-json和xml的解析
- 微信支付开发教程JAVA编[004]-使用HttpClient详解
- 微信支付开发教程JAVA编[008]-wxsdk4java:微信公众号和微信支付开发的所有API功能点的封装及调用实例
- 微信刷卡支付开发-公众号支付开发-视频教程8
- 刷卡功能拯救不了微信支付
- .Net C# 微信刷卡支付接口
- 微信公众号之刷卡支付
- 微信支付开发教程
- 真厉害!树莓派销量破1250万仅次于Windows、Mac
- map
- vagrant 基本命令、标准配置文件,支持nfs
- 静态块(变量)和非静态块(变量)
- tomcat服务器-重新部署后报错org.xml.sax.SAXParseException
- 微信支付开发教程JAVA编[006]-刷卡支付
- (Swift 实现)排序 —— 归并排序
- 程序员能找到高薪工作么 有哪些优势?
- 安卓动画插值器 Interpolator
- 对象属性和数组元素的初始默认值
- 守得住孤独,把得住清欢
- ARM64 ret_fast_syscall
- jQuery Validate 触发机制
- C语言之指针函数