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 ...
最新文章
- java makefile jar包_java makefile学习实践(编译的javac命令写在makefile中,运行命令java写在shell脚本中)...
- html接收model数据,QAbstractTableModel数据返回要显示的html代码
- 怎么使用 Caffe 进行 LetNet-5 的训练和预测
- Python(21)_input用户交互
- 关于.NET微服务最热门的问题解答
- 一文读懂云原生一体化数仓
- java calendar_Java Calendar getLeastMaximum()方法与示例
- 随想录(常用的音视频、图像库)
- CodeUI Test:UIMap录制文件分析一
- php网站模板包括增删改查,PHP实现简单的增删改查
- 蓝桥杯-----历届试题 小数第n位
- 接口(Api)版本号命名规则
- 网易有道笔试题(2014届,2013.10北邮站)
- MVCC和InnoDB行锁
- 【彻底解决】Flash经常崩溃的问题
- 无线路由器打印机服务器设置,newifi新路由打印机服务器设置全教程
- android集成语音功能
- ECC-Elliptic Curves Cryptography,椭圆曲线密码编码学
- JGit操作之2.0版
- 产品设计三大文档PRD,BRD,MRD
热门文章
- 深入理解操作系统(16)第六章:存储器层次结构(2)高速缓存存储器+对程序性能的影响(包括:L1/L2高速缓存历史/缓存写:直写和写回/暂无L4级缓存/缓存命中率/存储器山/高速缓存友好的代码/)
- 选品堪称“变态”,却得到5万小B支持,它如何做成了社交电商新
- 计算机组成原理课程设计:基于FPGA的Verilog模型机设计。
- 下列均是未来计算机的发展趋势,下列 ( ) 均是未来计算机的发展趋势。
- linux 交换机硬件监控,zabbix5.0监控华为交换机,添加自定义监控项
- 水果识别数据集(日常常见33种水果)
- excel填充空格技巧
- 四大运营商合并成为两大运营商的可能性非常大,其中两家已在推进
- 计算机的基本组成部分
- 前端面试题——VUE