微信开发不容易,在于各个环节的理解和疏通。

支付类型分为几种,每种的业务也不相同,所以就困扰了很多人,我也抱怨过资料的混乱,没办法慢慢梳理。

摸索过后才知道我需要的是刷卡支付业务。公司的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微信刷卡支付开发相关推荐

  1. php微信刷卡支付开发,【微信支付】刷卡支付开发者文档

    1.签名算法 签名生成的通用步骤如下: 第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=valu ...

  2. 在sdk中添加源文件_实用干货 | 一步一步教你在SpringBoot中集成微信刷卡支付

    一:准备工作 使用微信支付需要先开通服务号,然后还要开通微信支付,最后还要配置一些开发参数,过程比较多. 申请服务号(企业) 开通微信支付 开发配置 具体准备工作请参考Spring Boot入门教程( ...

  3. 微信免密支付php代码实现,微信刷卡支付接入模式及免密流程

    根据商户具体的情况,刷卡支付接入模式可分为:商户后台接入和门店接入: 根据用户是否需要输入支付密码可分为:免密模式和验密模式. 1.接入模式-商户后台接入 该模式适合具备统一后台系统的商户.门店收银台 ...

  4. java微信刷卡支付demo_微信刷卡支付例子

    [实例简介] java微信支付样例~ 刷卡支付源码~自测可以使用,有需要的可以下来使用 [实例截图] [核心代码] wx-pay └── ScanPay └── ScanPay ├── WebCont ...

  5. 微信支付开发(7) 刷卡支付

    关键字:微信支付 微信支付v3 刷卡支付 统一支付 prepay_id  作者:方倍工作室 本文介绍微信支付下的刷卡支付的开发过程.微信刷卡支付是指用户打开微信钱包的刷卡的界面,商户扫码后提交完成支付 ...

  6. 微信公众号之刷卡支付

    此篇文章具体来聊聊微信刷卡支付 刷卡支付-官方文档 场景介绍 步骤1:用户选择刷卡支付付款并打开微信,进入"我"->"钱包"->"刷卡&q ...

  7. Spring Boot入门教程(四十):微信支付集成-刷卡支付

    分享一个朋友的人工智能教程.比较通俗易懂,风趣幽默,感兴趣的朋友可以去看看. 一:准备工作 使用微信支付需要先开通服务号,然后还要开通微信支付,最后还要配置一些开发参数,过程比较多. 申请服务号(企业 ...

  8. 微信支付python版2.0_刷卡支付-翟东平-专题视频课程

    微信支付python版2.0_刷卡支付-244人已学习 课程介绍         微信支付系列课程将讲解"刷卡支付"."扫码支付"."公众号支付&qu ...

  9. 微信支付java版v2.0_刷卡支付-翟东平-专题视频课程

    微信支付java版v2.0_刷卡支付-1814人已学习 课程介绍         微信支付系列课程将讲解"刷卡支付"."扫码支付"."公众号支付&qu ...

最新文章

  1. java makefile jar包_java makefile学习实践(编译的javac命令写在makefile中,运行命令java写在shell脚本中)...
  2. html接收model数据,QAbstractTableModel数据返回要显示的html代码
  3. 怎么使用 Caffe 进行 LetNet-5 的训练和预测
  4. Python(21)_input用户交互
  5. 关于.NET微服务最热门的问题解答
  6. 一文读懂云原生一体化数仓
  7. java calendar_Java Calendar getLeastMaximum()方法与示例
  8. 随想录(常用的音视频、图像库)
  9. CodeUI Test:UIMap录制文件分析一
  10. php网站模板包括增删改查,PHP实现简单的增删改查
  11. 蓝桥杯-----历届试题 小数第n位
  12. 接口(Api)版本号命名规则
  13. 网易有道笔试题(2014届,2013.10北邮站)
  14. MVCC和InnoDB行锁
  15. 【彻底解决】Flash经常崩溃的问题
  16. 无线路由器打印机服务器设置,newifi新路由打印机服务器设置全教程
  17. android集成语音功能
  18. ECC-Elliptic Curves Cryptography,椭圆曲线密码编码学
  19. JGit操作之2.0版
  20. 产品设计三大文档PRD,BRD,MRD

热门文章

  1. 深入理解操作系统(16)第六章:存储器层次结构(2)高速缓存存储器+对程序性能的影响(包括:L1/L2高速缓存历史/缓存写:直写和写回/暂无L4级缓存/缓存命中率/存储器山/高速缓存友好的代码/)
  2. 选品堪称“变态”,却得到5万小B支持,它如何做成了社交电商新
  3. 计算机组成原理课程设计:基于FPGA的Verilog模型机设计。
  4. 下列均是未来计算机的发展趋势,下列 ( ) 均是未来计算机的发展趋势。
  5. linux 交换机硬件监控,zabbix5.0监控华为交换机,添加自定义监控项
  6. 水果识别数据集(日常常见33种水果)
  7. excel填充空格技巧
  8. 四大运营商合并成为两大运营商的可能性非常大,其中两家已在推进
  9. 计算机的基本组成部分
  10. 前端面试题——VUE