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

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

摸索过后才知道我需要的是刷卡支付业务。公司的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. linux编译安装jpeg,Linux下JPEG库安装脚本(转)
  2. 微信支付服务器demo,集成微信支付(附带demo)
  3. 今年芯片行业最大收购案:亚德诺209亿美元收购美信,对抗行业老大德州仪器...
  4. 希捷撤离 硬盘的那些风花雪月记忆
  5. bat启动脚本 springboot_奇葩需求:springboot项目注册为windows系统服务并设置开机自启...
  6. 二叉树——美国血统(洛谷 P1827)
  7. opencv2.4.9中HoughlinesP源码中的疑问解析!
  8. 定义斜体文本的html标签,HTML 文本格式化
  9. 小瓜牛漫谈 — 获取资源文件
  10. codevs——1436 孪生素数 2
  11. 商场客流量统计摄像头设备
  12. QCustomPlot之光标划过曲线显示点的坐标
  13. SiliconLab zigbee host移植到IPQ 807X平台
  14. 电脑版美食大战老鼠放置html,美食大战老鼠电脑版
  15. intellij IDEA 中,.properties文件unicode转中文
  16. 中文语音评测之thchs30+gop_speechocean762实现
  17. (ECCV-2018)用于视频识别的多光纤网络
  18. NetSuite 负库存控制
  19. GO使用go get -u “包“: fatal: unable to access ‘https://github.com/..‘: Failed to connect to报错
  20. 绿标2.0达标秘笈之隐私安全问题破解

热门文章

  1. 【Uni-App】用 uView 组件库中的u-picker 实现地区的 省-市-区 三级联动确认回显
  2. 激光雷达远距离灰尘扬尘烟雾粉尘检测
  3. android小程序日历,微信小程序:日历功能实现
  4. java集成ios内购\与ios退款通知处理
  5. PC端和手机端入口一致,跳转不同格式页面的解决方案
  6. usb hub 要驱动 linux,Linux下的USB HUB驱动
  7. Could not transfer artifact问题如何解决
  8. Echarts折线图虚线实线合并
  9. Redis6新特性之ACL安全策略(用户权限管理)
  10. CSS学习笔记5CSS的三大特性与盒子模型