前言 很多APP都需要支付功能,国内一般就是支付宝和微信了。目前这2种接入方式对于APP端来说都已经比较方便了,因为大部分的安全校验之类的逻辑都在服务端。 APP端总结起来就是三步走: 接入支付的库 接受服务端的订单信息,发起调用支付宝和微信 接收支付宝和微信的回调 支付宝接入 首先是接入支付宝的aar文件 比较坑的是支付宝还需要下载aar文件导入,而不是gradle里面一行依赖就能搞定的。 我们需要去官网下载最新的DEMO和SDK,官网地址在这里 然后把下载下来的aar包,放到项目目录下面的 libs 目录下,通过下面的gradle依赖进来 // 支付宝 SDK AAR 在Android应用开发中,接入支付宝和微信支付是常见的需求,特别是在国内这两个支付平台占据了主导地位。本文将详细介绍如何在Android应用中实现这两种支付方式的接入。 让我们来看支付宝支付的接入步骤: 1. **接入支付库**:与微信支付不同,支付宝需要开发者手动下载aar文件,而非直接在Gradle中添加依赖。你需要从支付宝官方SDK网站获取最新版的DEMO和SDK,将aar包放入项目的libs目录下,并在Gradle文件中进行配置引用。 ```groovy // 支付宝 SDK AAR 包所需的配置 compile(name: 'alipaySdk-15.6.0-20190226104104-noUtdid', ext: 'aar') ``` 2. **发起支付**:使用服务端生成的订单信息调用支付宝SDK发起支付。你需要通过网络请求创建订单,服务端返回包含订单ID和签名等安全信息的订单详情。然后在Android应用中,使用`PayTask`类的`payV2`方法发起支付。这个过程通常在子线程中执行,以避免阻塞主线程。 ```java final Runnable payRunnable = new Runnable() { @Override public void run() { PayTask alipay = new PayTask(PayDemoActivity.this); Map<String, String> result = alipay.payV2(orderInfo, true); Log.i("msp", result.toString()); Message msg = new Message(); msg.what = SDK_PAY_FLAG; msg.obj = result; mHandler.sendMessage(msg); } }; Thread payThread = new Thread(payRunnable); payThread.start(); ``` 3. **处理回调**:支付宝的支付结果会通过Handler的`handleMessage`方法返回,必须在这个方法中处理回调信息。请注意,支付成功与否的最终判断应由你的服务端完成,因为客户端的回调可能不可靠。 ```java private Handler mHandler = new Handler() { public void handleMessage(Message msg) { switch (msg.what) { case SDK_PAY_FLAG: // 这里接收支付宝的回调信息 // 注意:支付结果一定要调用自己的服务端来确定 break; default: break; } } }; ``` 接下来,我们讨论微信支付的接入: 1. **接入微信SDK**:微信支付的接入相对简单,只需在Gradle文件中添加一行依赖,同时注意这里的SDK包含了支付、社交登录等功能。 ```groovy // 微信支付SDK compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+' ``` 2. **发起支付**:同样,你需要从服务端获取订单信息,然后创建并初始化`PayReq`对象,设置相关参数,如`appId`、`partnerId`、`prepayId`等。调用`api.sendReq(req)`发起支付请求。 ```java IWXAPI api = WXAPIFactory.createWXAPI(mContext, APPID); JSONObject json = new JSONObject(content); PayReq req = new PayReq(); req.appId = json.getString("appid"); req.partnerId = json.getString("partnerid"); req.prepayId = json.getString("prepayid"); req.nonceStr = json.getString("noncestr"); req.timeStamp = json.getString("timestamp"); api.sendReq(req); ``` 3. **处理回调**:微信支付的回调会通过`onResp`方法返回,你需要在此方法中处理支付结果。 微信支付的一个特点是,如果用户未安装微信,会自动跳转到H5页面完成支付。因此,在实际应用中,你需要处理这种情况,确保支付流程的顺畅。 总结,Android接入支付宝和微信支付主要包括以下步骤:下载和配置支付库、调用服务端接口获取订单信息、发起支付请求以及处理支付回调。虽然两者在具体实现上有所不同,但核心流程都是与服务端交互,确保支付的安全性。在实际开发中,应关注官方文档的更新,以便及时解决可能出现的新问题。
- 粉丝: 2
- 资源: 956
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助