前言

这里开篇讲解一系列的Android相关的移动支付。移动支付也称为手机支付,用户使用移动的设备,完成对所购买商品或者服务的支付功能。包括远程支付(网上支付、短信支付),近场支付(刷卡、滴卡、pos机)。

国内的移动支付方式:

支付宝,微信,银联,百度钱包,QQ钱包,财付通,京东支付

易宝支付,快钱支付,还有一些第三方的支付什么连连支付之类的

境外的移动支付方式(这里直说一个) :paypal

流程

我们这里主要是来学习一下支付宝,微信支付,银联支付和paypal支付

现实生活中的支付就是:去商店浏览商品->把商品加入购物车->把购物车中的商品拿到收银台付款

上面的支付流程细化下来就是:

1.浏览商品

2.把要买的商品加入购物车

3.把商品拿到收银台,收银人员处理商品信息

4.告诉收银员支付方式

5.选择支付方式进行支付

6.处理支付结果(成功、失败、取消)

程序中的支付流程中:

1.浏览商品

2.把要买的商品加入购物车

3.把购物车中的商品信息和用户信息和支付方式等信息发送到自己服务器,服务器处理商品信息生成订单,并返回”支付串”给客户端

4.客户端拿着“支付串”,调用第三方服务(支付宝、微信、银联、paypal等)完成支付

5.处理支付结果(成功、失败、取消)

l  同步返回:支付后通知我们的客户端

l  异步通知:支付后通知我们的服务端

以上就是一般的移动支付的基本流程了,下面看这几个支付平台的详细介绍

android移动支付——支付宝支付

android移动支付——微信支付

android移动支付——银联支付

android移动支付——PayPal支付

场景介绍:

适用于商户在移动端APP中集成微信支付功能。

商户APP调用微信提供的SDK调用微信支付模块,商户APP会跳转到微信中完成支付,支付完后跳回到商户APP内,最后展示支付结果。

详细:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_1

业务流程

https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_3

微信多种支付模式:

https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=2_1

商户账号获取方式:

http://kf.qq.com/faq/140225MveaUz140926ni2ERR.html

结算规则、费率、周期:

http://kf.qq.com/faq/140225MveaUz1504092YFjeM.html

微信开发工具包和范例代码demo:

https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319167&token=&lang=zh_CN

开发步骤

1.       App微信商户申请(申请步骤)

重点是:申请审核服务费300/次才可以使用微信支付功能,获得AppID

另外微信支付有两个平台分别是开发者平台和商户平台

开发者平台:主要是针对开发者,比如:创建应用,获取appid

商户平台:主要是商户上面的一些管理,比如:可以查看流水,订单呀

2.       创建应用:

需要的平台,以及平台的信息,填入包名,签名,最后提交审核,等待审核完后,大概就可以看到这样的基本信息界面

个人账号创建的应用审核通过后只有分享功能,如果还需要支付功能,可以点击申请,然后认证账号并上传一些资料,等待审核成功

3.       上面有列出微信的一些工具等东西,下载好demo,导入demo并且运行:

Demo可以完全支付了说明现在的Demo就已经完全配置好了微信的开发环境了,我们只需要参照这个Demo去配置我们自己的项目即可。

注:测试的Demo只支持调起一次微信支付,如需第二次可在系统设置中清除微信缓存数据即可

4.       后台设置

商户在微信开放平台申请开发应用后,微信开放平台会生成APP的唯一标识APPID。由于需要保证支付安全,需要在开放平台绑定商户应用包名和应用签名,设置好后才能正常发起支付。设置界面在【开放平台】中的栏目【管理中心 / 修改应用 / 修改开发信息】里面

应用包名:是在APP项目配置文件AndroidManifest.xml中声明的package值,例如DEMO中的package="net.sourceforge.simcpux"。

应用签名:根据项目的应用包名和编译使用的keystore,可由签名工具生成一个32位的md5串,在调试的手机上安装签名工具后,运行可生成应用签名串,如图8.9所示,绿色串即应用签名。签名工具下载地址https://open.weixin.qq.com/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android.apk

5. 配置微信开发环境:

a)把微信Demo中的“libammsdk.jar”复制到我们的项目libs文件夹中

b)把微信Demo中的清单文件AndroidManifest中的权限复制到我们的项目中

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

c)把微信Demo中的清单文件AndroidManifest中声明的支付相关的Activity声明复制到我们的项目中。注意,微信支付需要的Activity比较特殊,只需要一个(WXPayEntryActivity),这个Activity用于接收微信支付结果,这个Activity不是在jar包中的,是在Demo源码中的,我们需要把Demo中的这个Activity复制到我们的项目中,而且包名要保持不变,直接打开WXPayEntryActivity.java文件,Ctrl + A复制所有源码,然后在我们的项目src下直接粘贴,这样会自动创建和原来一样的包名。

在这个类中需要注意的地方有两个:

(1)、这个类中的布局是可以自定义的,如果你不需要展示什么布局,而是要跳转页面,把这段代码删除即可

(2)、回调结果的处理,下面是官方的处理方式,直接给了一个dialog,很多人会摸不着头脑,如果你不需要这个dialog,直接删除就好了

这里可以直接toast一下,如果你需要支付成功后跳转,那么直接在这里startActivity即可,别忘记最后要将这个页面finish()

6. 注册APPID

商户APP工程中引入微信JAR包,调用API前,需要先向微信注册您的APPID,代码如下:

final IWXAPImsgApi = WXAPIFactory.createWXAPI(context, null);

// 将该app注册到微信

msgApi.registerApp("wxd930ea5d5a258f4f");

7. 调起支付

商户服务器生成支付订单,先调用统一下单API生成预付单,获取到prepay_id后将参数再次签名传输给APP发起支付。以下是调起微信支付的关键代码

注意:该sign生成字段名列表见调起支付API

8.支付结果回调,接收微信的请求及返回值

参照微信SDK Sample,在net.sourceforge.simcpux.wxapi包路径中实现WXPayEntryActivity类(包名或类名不一致会造成无法回调),在WXPayEntryActivity类中实现onResp函数,支付完成后,微信APP会返回到商户APP并回调onResp函数,开发者需要在该函数中接收通知,判断返回错误码,如果支付成功则去后台查询支付结果再展示用户实际支付结果。注意一定不能以客户端返回作为用户支付的结果,应以服务器端的接收的支付通知或查询API返回的结果为准,详情请看5.--->c) ---> (2)

(1)还要在manifest文件里面加上exported属性,设置为true,例如:

<activityandroid:name=".wxapi.WXPayEntryActivity"android:exported="true"android:launchMode="singleTop"/>

(2)实现IWXAPIEventHandler接口,微信发送的请求将回调到onReq方法,发送到微信请求的响应结果将回调到onResp方法

(3)在WXEntryActivity中将接收到的intent及实现了IWXAPIEventHandler接口的对象传递给IWXAPI接口的handleIntent方法,示例如下图:

当微信发送请求到你的应用,将通过IWXAPIEventHandler接口的onReq方法进行回调,类似的,应用请求微信的响应结果将通过onResp回调。

回调中errCode值列表:

9.里面还有很多api可以调用,详情看开发者文档

10.微信支付接入不成功常见的问题

http://wxpay.wxutil.com/qa/index.php?qa=app_pay

11. 如果需要混淆代码,为了保证sdk的正常使用,需要在proguard.cfg加上下面两行配置:

-keepclass com.tencent.mm.sdk.** {*;
}

android移动支付——微信支付相关推荐

  1. php支付密码控件,Android高仿微信支付密码输入控件实例代码

    这篇文章主要为大家详细介绍了Android高仿微信支付密码输入控件的具体实现代码,供大家参考,具体内容如下 像微信支付密码控件,在app中是一个多么司空见惯的功能.最近,项目需要这个功能,于是乎就实现 ...

  2. Android 快速实现微信支付(真的!很快!)

    Android 快速实现微信支付(真的!很快!) 阅读 6502收藏 5022016-4-21 原文链接:http://www.jianshu.com/p/c97639279d2e 如果你已经成功集成 ...

  3. android支付宝支付微信支付封装,如何在Android App中集成支付宝和微信支付功能

    前言 本文主要介绍如何在 Android App 里集成支付宝和微信支付的功能,文中将实现的步骤一步步介绍的非常详细,对同样遇到这个问题的朋友相信会是一个很好的参考,下面话不多说了,来一起看看详细的介 ...

  4. android仿微信充值布局,Android 高仿微信支付数字键盘功能

    现在很多app的支付.输入密码功能,都已经开始使用自定义数字键盘,不仅更加方便.其效果着实精致. 下面带着大家学习下,如何高仿微信的数字键盘,可以拿来直接用在自身的项目中. 先看下效果图: 1. 自定 ...

  5. android移动支付——微信支付,flutter瀑布流内存

    我们这里主要是来学习一下支付宝,微信支付,银联支付和paypal支付 现实生活中的支付就是:去商店浏览商品->把商品加入购物车->把购物车中的商品拿到收银台付款 上面的支付流程细化下来就是 ...

  6. Android app集成微信支付

    Android app集成微信支付 鉴于微信支付的文档入口不太容易找到.以及文档中有些逻辑不通或者容易产生歧义或者缺失一些信息的情况,记录下此次接入的流程和需要关注的一些点. 使用的是app支付-&g ...

  7. android移动支付——微信支付,360°深入了解Flutter

    国内的移动支付方式: 支付宝,微信,银联,百度钱包,QQ钱包,财付通,京东支付 易宝支付,快钱支付,还有一些第三方的支付什么连连支付之类的 境外的移动支付方式(这里直说一个) :paypal 流程 我 ...

  8. android支付宝支付微信支付封装,Android仿支付宝微信支付密码界面弹窗封装dialog...

    一,功能效果 二,实现过程 1,先写xml文件:dialog_keyboard.xml 注意事项 (1),密码部分用的是一个线性布局中6个TextView,并设置android:inputType=& ...

  9. Android如何调用支付宝支付 微信支付

    1.支付宝支付-------------------------- 1,到支付宝官网,下载支付宝集成开发包,看懂里面的关键代码 由于android设备一般用的都是无线支付,所有我们申请的就是支付宝无线 ...

最新文章

  1. tools。php,phpTools/tools.php at master · superve/phpTools · GitHub
  2. 文本框字符串长度实时统计jQuery插件,兼容IE6+
  3. 视音频编解码学习工程:JPEG分析器
  4. Pycharm上Django的使用 Day8
  5. apicloud,aliyunlive,测试成功
  6. python中的装饰器和抽象类
  7. 云原生大数据架构中实时计算维表和结果表的选型实践
  8. CentOS7 源码编译安装Redis shell脚本
  9. 优酷视频如何意见反馈?优酷视频怎么意见反馈
  10. java和Mysql数据一致性_java web开发中数据一致性的问题
  11. mysql jdbc linux,linux mysql jdbc 权限问题_MySQL
  12. java 自定义异常实例分析_Java自定义异常类的实例详解
  13. asp.net core 读取json文件
  14. 数字孪生|数字孪生装备-概念与内涵
  15. 五年之后的前端会是什么样?
  16. 2D 到 3D 的跨越,探索最佳 AR 交互设计之道
  17. MATLAB函数判断绝对素数,自定义函数,找出 以内所有素数(质数)并计算它们的和,matlab...
  18. N-苯基马来酰亚胺的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  19. 使用 Live Transcribe 进行实时连续转录
  20. 苹果8参数配置_苹果12与苹果12Pro相比较有哪些区别?哪个更值得购买?

热门文章

  1. 图像配准融合(一)——基于互信息的图像配准方法(c++)
  2. 恢复foxmail中丢失的地址簿
  3. @Validated和@Valid使用
  4. Java水费代收_基于jsp的水费管理-JavaEE实现水费管理 - java项目源码
  5. AKAZE/KAZE局部特征
  6. 服务器搭建hue_Hue安装配置实践
  7. 关于wangEditor 5的使用以及使用的一些错误
  8. 小雉配置--支持向上向下兼容的 配置文件 兼容性 设计
  9. Linux学习:Linux启动管理器GRUB2
  10. 标准的视觉ECC200二维码解析(值得一看哦,比很多二维码解析都要强力的:-})