Android 微信支付是一种在移动端实现的支付方式,对移动端应用开发来说,对接微信支付模块是必不可少的拓展,可以帮助开发者方便快捷的完成商业化应用的开发,降低支付系统的开发难度。下面就来介绍一下 Android 微信支付接口的开发原理和详细步骤。
一、微信支付开发前准备
1. 在微信开放平台注册并开通账户,在开发者中心创建应用并获取到应用的 AppID;
2. 申请开通微信支付功能,获取到商户号和支付密钥;
3. 在开发者中心下载微信支付 SDK 并导入到 Android 项目中。
二、集成微信支付
1. 引入微信支付 SDK
在项目的 gradle 文件中添加依赖:
```
compile 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:5.2.7'
```
这是最新版本的微信支付 SDK,可以在微信开发者平台上查看最新版本。
2. 在主 Activity 中初始化微信支付 SDK
在 onCreate() 方法中初始化微信支付 SDK,需要传入应用的 AppID 和注册到开发者中心的服务接口密钥:
```
IWXAPI api = WXAPIFactory.createWXAPI(this, APP_ID);
api.registerApp(APP_ID); // 将应用的 AppID 注册到微信支付 SDK
```
3. 发起微信支付
在发起支付前,需要构造一个待支付的订单信息,包括商品信息、订单编号、订单金额和回调地址等信息。
下面是一个构造微信支付订单信息的示例代码:
```
PayReq req = new PayReq();
req.appId = APP_ID; // 应用 ID
req.partnerId = partnerId; // 商户号
req.prepayId = prepayId; // 预支付交易会话 ID
req.nonceStr = nonceStr; // 随机字符串
req.timeStamp = String.valueOf(System.currentTimeMillis() / 1000); // 时间戳
req.packageValue = "Sign=WXPay"; // 固定值
req.sign = sign; // 签名
```
在构造好订单信息后,调用微信支付 SDK 提供的 pay() 方法发起微信支付:
```
api.sendReq(req); // 调用微信支付
```
三、接收支付结果
在发起支付后,微信支付会异步给我们返回一个支付结果,需要在我们的应用中接收并处理该结果。
在主 Activity 中重写 onNewIntent() 方法,处理支付结果:
```
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
handlePaymentResult(intent);
}
private void handlePaymentResult(Intent intent) {
// 解析支付结果
PayResp payResp = new PayResp();
payResp.fromBundle(intent.getExtras());
if (payResp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
if (payResp.errCode == 0) { // 支付成功
// 处理支付成功后的操作
} else { // 支付失败
// 处理支付失败后的操作
}
}
}
```
在 handlePaymentResult() 方法中解析支付结果,根据 errCode 的值来区分支付成功和支付失败的情况,并做出相应的处理。
综上所述,Android 微信支付接口的开发包括四个步骤:准备工作、引入微信支付 SDK、发起微信支付和接收支付结果。掌握这些步骤可以帮助开发者快速接入微信支付模块,完成商业化应用的开发。