Android集成微信支付

本文详细指导如何在Android应用中集成微信支付,包括注册微信开放平台、添加依赖、配置权限、创建WXPayEntryActivity并实现支付回调。通过实例代码演示了调起支付、处理支付结果的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.首先注册微信开放平台,应用签名的获取前面博客有提到(测试时一定要注意你在开放平台上填的应用签名是测试的还是正式的)
2.在build.gradle添加依赖

implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'

3.添加必要权限

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

4.在wxapi包下添加WXPayEntryActivity
在清单文件声明该实现类:

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

在这里插入图片描述

public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler {

    private IWXAPI mApi;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mApi = WXAPIFactory.createWXAPI(this, "你的appid");
        mApi.handleIntent(getIntent(), this);
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        setIntent(intent);
        mApi.handleIntent(intent, this);
    }

    @Override
    public void onReq(BaseReq pBaseReq) {}

    //处理结果回调
    @Override
    public void onResp(BaseResp pBaseResp) {
    	PayResp resp = (PayResp) pBaseResp;
        String payType = resp.extData;
        if(pBaseResp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX){
            if(pBaseResp.errCode == 0){
            		//支付成功的逻辑
            		if(payType.equals("ServiceType")){
                    Intent intent = new Intent(this, ResearchOrderActivity.class);
                    startActivity(intent);
                }else if(payType.equals("OrderType")){
                    Intent intent = new Intent(this, OrderActivity.class);
                    startActivity(intent);
                }
            	Toast.makeText(this, "支付成功", Toast.LENGTH_SHORT).show();
            }else if(pBaseResp.errCode==-1){
            		//支付失败的逻辑
                   Toast.makeText(this, "支付失败", Toast.LENGTH_SHORT).show();
            }else{
            		//取消支付的逻辑
                   Toast.makeText(this, "取消支付", Toast.LENGTH_SHORT).show();
            }
            finish();
        }
    }
}

5.调起微信支付代码:从后台获取参数后进行微信支付唤起操作。(微信开放平台:开放平台地址
点击支付按钮时调支付接口,当接口成功时进行以下操作:

if (bean.getCode() == 200) {
            String appId = bean.getData().getPayParameter().getAppId();
            String partnerId = bean.getData().getPayParameter().getPartnerId();
            String prepayId = bean.getData().getPayParameter().getPrepayId();
            String nonceStr = bean.getData().getPayParameter().getNonceStr();
            String timeStamp = bean.getData().getPayParameter().getTimeStamp();
            String sign = bean.getData().getPayParameter().getSign();
            PayReq req = new PayReq();//PayReq就是订单信息对象
            IWXAPI wxapi = WXAPIFactory.createWXAPI(ContractContentActivity.this, null);
            //给req对象赋值
            req.appId = appId;//APPID
            req.partnerId = partnerId;//    商户号
            req.prepayId = prepayId;//  预付款ID
            req.nonceStr = nonceStr;//随机数
            req.timeStamp = timeStamp;//时间戳
            req.packageValue = "Sign=WXPay";//固定值Sign=WXPay
            req.sign = sign;//签名
            req.extData = "app data";  //区分支付结果
            wxapi.sendReq(req);//将订单信息对象发送给微信服务器,即发送支付请求
            finish();
        }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值