Android微信刷卡支付开发
微信开发不容易,在于各个环节的理解和疏通。
支付类型分为几种,每种的业务也不相同,所以就困扰了很多人,我也抱怨过资料的混乱,没办法慢慢梳理。
摸索过后才知道我需要的是刷卡支付业务。公司的Android终端集成扫描功能,不需要调用微信的扫描。
1、什么是刷卡支付
刷卡支付场景就像超市收银台扫你微信上的二维码,收银台主动发起扫码请求,
扫码完成后扣取你的费用。
流程如下图
2、需要做什么准备
1:企业公众平台注册,获取AppID和Key
AppID路径:公众账号->开发->基本配置->开发者ID(AppID)
Key路径:公众账号->开发->基本配置->开发者密码(AppSecret)
2:商户账号注册,获取Mch_ID和证书
Mch_ID路径:商户平台->账号中心->账户设置->商家信息->微信支付商户号
证书路径:商户平台->账号中心->账户设置->API安全->下载证书
3:从github下载JAVA SDK,截止2018-01-29用的是v0.0.4版本,和微信官网的资源v0.0.3不同。
版本不同之处,v0.0.4用的是java.net.HttpURLConnection,v0.0.3使用的是apache接口。
apache版本多,兼容性不好,所以不用apache,化繁为简。
3、开发
本质是Http协议。推荐使用Android Studio开发工具,SDK上的例子使用的是Android Sutdio,可以避免很多麻烦
1:添加依赖库,com.github.wxpay:WXPay-SDK-Java:0.0.4
dependencies {compile 'com.github.wxpay:WXPay-SDK-Java:0.0.4'}allprojects {repositories {jcenter()maven { url 'https://jitpack.io' }}}
2:申请支付接口,需要实现一个接口。这个接口用于填充AppId,MchID,Key和证书。
WXConfig config = new WXConfig();
mPay = new WXPay(config);
WXConfig实现
具体信息还请诸君自己填写,下面我用的是假的。
public class WXConfig implements WXPayConfig{private byte[] certData;public WXConfig() throws Exception {String certPath = "/sdcard/cert/apiclient_cert.p12";File file = new File(certPath);InputStream certStream = new FileInputStream(file);this.certData = new byte[(int) file.length()];certStream.read(this.certData);certStream.close();}public String getAppID() {return "wx12333ed86ce5d123";}public String getMchID() {return "1301235123";}public String getKey() {return "beijing12312345devmpinctrl12345";}public InputStream getCertStream() {ByteArrayInputStream certBis = new ByteArrayInputStream(this.certData);return certBis;}public int getHttpConnectTimeoutMs() {return 8000;}public int getHttpReadTimeoutMs() {return 10000;}
}
3 :支付
参照微信API提交刷卡支付,几个关键字是必填的。授权码指的是扫描设备扫描到用户的QR码。
费用是按分计算。
API链接:https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_10&index=1
microPay要记得超时时间的设置,过短会抛出异常:java.net.SocketTimeoutException
Map<String, String> data = new HashMap<String, String>();System.out.println("pay bill ....................................");data = new HashMap<String, String>();data.put("body", "zpd_test");data.put("out_trade_no", trade_no);data.put("auth_code", auth_code);data.put("total_fee", "1");data.put("spbill_create_ip", "123.12.12.123");Map<String, String> resp = mPay.microPay(data, 3000, 3000);
4:解析返回字段
还是参考API,前5次扫描是免密,用户不需要输入密码。返回SUCC状态。
超过5次后,需要用户输入密码,此时范围USERPAYING的错误状态,要做下一步查询
API链接:https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_2
5:查询
参考查询API,查看支付状态,订单号是必填的关键字。trade_state为SUCCSS为支付成功,
其余的参考API上说明。
API链接:https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_2
Map<String, String> data = new HashMap<String, String>();data.put("out_trade_no", trade_no);Map<String, String> resp = mPay.orderQuery(data,1000, 1000);String s =getResult(resp);
测试截图:左边扫描终端 ,右边用户
Android微信刷卡支付开发相关推荐
- php微信刷卡支付开发,【微信支付】刷卡支付开发者文档
1.签名算法 签名生成的通用步骤如下: 第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=valu ...
- 在sdk中添加源文件_实用干货 | 一步一步教你在SpringBoot中集成微信刷卡支付
一:准备工作 使用微信支付需要先开通服务号,然后还要开通微信支付,最后还要配置一些开发参数,过程比较多. 申请服务号(企业) 开通微信支付 开发配置 具体准备工作请参考Spring Boot入门教程( ...
- 微信免密支付php代码实现,微信刷卡支付接入模式及免密流程
根据商户具体的情况,刷卡支付接入模式可分为:商户后台接入和门店接入: 根据用户是否需要输入支付密码可分为:免密模式和验密模式. 1.接入模式-商户后台接入 该模式适合具备统一后台系统的商户.门店收银台 ...
- java微信刷卡支付demo_微信刷卡支付例子
[实例简介] java微信支付样例~ 刷卡支付源码~自测可以使用,有需要的可以下来使用 [实例截图] [核心代码] wx-pay └── ScanPay └── ScanPay ├── WebCont ...
- 微信支付开发(7) 刷卡支付
关键字:微信支付 微信支付v3 刷卡支付 统一支付 prepay_id 作者:方倍工作室 本文介绍微信支付下的刷卡支付的开发过程.微信刷卡支付是指用户打开微信钱包的刷卡的界面,商户扫码后提交完成支付 ...
- 微信公众号之刷卡支付
此篇文章具体来聊聊微信刷卡支付 刷卡支付-官方文档 场景介绍 步骤1:用户选择刷卡支付付款并打开微信,进入"我"->"钱包"->"刷卡&q ...
- Spring Boot入门教程(四十):微信支付集成-刷卡支付
分享一个朋友的人工智能教程.比较通俗易懂,风趣幽默,感兴趣的朋友可以去看看. 一:准备工作 使用微信支付需要先开通服务号,然后还要开通微信支付,最后还要配置一些开发参数,过程比较多. 申请服务号(企业 ...
- 微信支付python版2.0_刷卡支付-翟东平-专题视频课程
微信支付python版2.0_刷卡支付-244人已学习 课程介绍 微信支付系列课程将讲解"刷卡支付"."扫码支付"."公众号支付&qu ...
- 微信支付java版v2.0_刷卡支付-翟东平-专题视频课程
微信支付java版v2.0_刷卡支付-1814人已学习 课程介绍 微信支付系列课程将讲解"刷卡支付"."扫码支付"."公众号支付&qu ...
最新文章
- linux编译安装jpeg,Linux下JPEG库安装脚本(转)
- 微信支付服务器demo,集成微信支付(附带demo)
- 今年芯片行业最大收购案:亚德诺209亿美元收购美信,对抗行业老大德州仪器...
- 希捷撤离 硬盘的那些风花雪月记忆
- bat启动脚本 springboot_奇葩需求:springboot项目注册为windows系统服务并设置开机自启...
- 二叉树——美国血统(洛谷 P1827)
- opencv2.4.9中HoughlinesP源码中的疑问解析!
- 定义斜体文本的html标签,HTML 文本格式化
- 小瓜牛漫谈 — 获取资源文件
- codevs——1436 孪生素数 2
- 商场客流量统计摄像头设备
- QCustomPlot之光标划过曲线显示点的坐标
- SiliconLab zigbee host移植到IPQ 807X平台
- 电脑版美食大战老鼠放置html,美食大战老鼠电脑版
- intellij IDEA 中,.properties文件unicode转中文
- 中文语音评测之thchs30+gop_speechocean762实现
- (ECCV-2018)用于视频识别的多光纤网络
- NetSuite 负库存控制
- GO使用go get -u “包“: fatal: unable to access ‘https://github.com/..‘: Failed to connect to报错
- 绿标2.0达标秘笈之隐私安全问题破解