Android 微信App支付实现流程

1. 简介

微信App支付是一种基于微信支付的移动支付方式,通过在Android应用中集成微信SDK,实现用户在应用内使用微信进行支付。本文将介绍如何实现Android微信App支付的步骤以及每一步需要做的事情和代码示例。

2. 实现流程

步骤 描述
1 集成微信SDK
2 发起支付请求
3 处理支付回调
4 验证支付结果

3. 详细步骤

3.1 集成微信SDK

首先,你需要在你的Android项目中集成微信SDK。可以通过在项目的 build.gradle 文件中添加以下依赖来引入微信SDK:

implementation 'com.tencent.mm.opensdk:wechat-sdk-android:5.4.0'

3.2 发起支付请求

在用户点击支付按钮时,你需要构建一个支付请求对象,并调用微信SDK提供的方法发起支付请求。

// 引用形式的描述信息:创建支付请求对象
PayReq req = new PayReq();
req.appId = "你的微信AppID";
req.partnerId = "商户号";
req.prepayId = "预支付交易会话ID";
req.packageValue = "扩展字段,一般填写Sign=WXPay";
req.nonceStr = "随机字符串";
req.timeStamp = "时间戳";
req.sign = "签名";

// 发起支付请求
IWXAPI api = WXAPIFactory.createWXAPI(context, null);
api.registerApp("你的微信AppID");
api.sendReq(req);

其中,各参数的意义如下:

  • appId:你的微信AppID
  • partnerId:商户号,可在微信商户平台查看
  • prepayId:预支付交易会话ID,需通过统一下单接口获取
  • packageValue:扩展字段,一般填写"Sign=WXPay"
  • nonceStr:随机字符串,建议使用随机数生成
  • timeStamp:时间戳,建议使用当前时间戳
  • sign:签名,需通过统一下单接口返回的数据计算得出

3.3 处理支付回调

当用户支付完成后,微信App会回调你的应用,你需要在你的Android项目中的 AndroidManifest.xml 文件中注册一个Activity,用来接收支付结果回调。

<activity
    android:name=".WXPayEntryActivity"
    android:exported="true"
    android:launchMode="singleTop">
    <intent-filter>
        <action android:name="com.tencent.mm.plugin.openapi.Intent.ACTION_WX_PAY_CALLBACK"/>
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>

WXPayEntryActivity 中,你需要重写 onNewIntent 方法来处理支付结果回调。

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    setIntent(intent);
    handlePayResult(intent);
}

private void handlePayResult(Intent intent) {
    // 获取支付结果
    int errCode = intent.getIntExtra("_wxapi_payresp_errcode", -1);
    if (errCode == BaseResp.ErrCode.ERR_OK) {
        // 支付成功
        // TODO: 处理支付成功逻辑
    } else {
        // 支付失败
        // TODO: 处理支付失败逻辑
    }
}

3.4 验证支付结果

为了确保支付结果的安全性,你需要在服务器端验证支付结果。你可以通过向微信支付服务器发送查询订单接口的请求来验证支付结果的真实性。

// 引用形式的描述信息:发送查询订单接口请求
String url = "
String data = "商户订单号等相关信息";
String result = sendRequest(url, data);

// 解析查询结果
// TODO: 解析查询结果并处理

以上代码中,sendRequest 方法用于发送请求并获取查询结果。具体的实现方法可以使用HttpURLConnection或者OkHttp等网络请求库进行实现。

4. 总结

通过以上步骤,你已经学会了如何实现Android微信App支付。在实际开发中,你需要替