android 集成微信支付

本文详细介绍如何集成微信支付功能,包括导入SDK、配置支付参数、处理支付回调等关键步骤,并提供了常见问题解决方案。

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

1,导入jar包,从微信官方网站上下载jar包,并导入到工程中
2,在开发者账户中添加应用,并开通支付功能,填入包名和签名,获取APPID
3,调起支付:
IWXAPI api = WXAPIFactory.createWXAPI(context, "appid");//注册sdk
       PayReq req = new PayReq();
//请求参数
       req.appId="appid";
       req.prepayId=wxpb.getResultMap().getSignParams().getPrepayid();
       req.partnerId=wxpb.getResultMap().getSignParams().getPartnerid();
       req.nonceStr=wxpb.getResultMap().getSignParams().getNoncestr();
       req.timeStamp=wxpb.getResultMap().getSignParams().getTimestamp();
       req.packageValue="Sign=WXPay";
       req.sign=wxpb.getResultMap().getSign();
//发起请求,调起支付
api.sendReq(req)

4,结果回调,注意包名和类名,包名。。。wxapi.WXPayEntryActivity
package com.shilian.collector.wxapi;

import android.content.Intent;
import android.os.Bundle;

import com.shilian.collector.R;
import com.shilian.collector.base.BaseActivity;
import com.shilian.collector.base.MyApplication;
import com.shilian.collector.personal.HaveOrderActivity;
import com.tencent.mm.opensdk.constants.ConstantsAPI;
import com.tencent.mm.opensdk.modelbase.BaseReq;
import com.tencent.mm.opensdk.modelbase.BaseResp;
import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;

/**
 * 微信支付的回调activity
 * */
public class WXPayEntryActivity extends BaseActivity implements IWXAPIEventHandler {

    private IWXAPI api;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_wxpay_entry);
        api= WXAPIFactory.createWXAPI(this,"wx2794b53f5c8aa6b7");
        api.handleIntent(getIntent(), this);
    }

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

    @Override
    public void onReq(BaseReq baseReq) {

    }
//支付结果回调
    @Override
    public void onResp(BaseResp baseResp) {
        if (baseResp.getType()== ConstantsAPI.COMMAND_PAY_BY_WX){
            switch (baseResp.errCode){
                case 0:
                    toast("支付成功");
                    //支付成功处理
                    finish();
                    break;
                case -1:
                    toast("支付失败code:-1");
                    finish();
                    break;
                case -2:
                    toast("支付取消code:-2");
                    finish();
                    break;
            }
        }
    }
}

5,mainfest文件中注册activity,并添加属性
<activity android:name="com.shilian.collector.wxapi.WXPayEntryActivity"
            android:exported="true"
            android:launchMode="singleTop"/>

6,混淆规则
-keep class com.tencent.** { *;}

7,出现问题
掉不起支付,sendReq方法返回false,参数数错误,同一订单不同价格会导致prepayId为空,sendReq返回true,回调结果返回-1,一般为appid或对应的包名和签名有问题,或签名sign出错,或是其他参数给错,或者微信缓存错误,清除微信数据后重试。
不执行回调,包名或类名出错,注册时的属性不对。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值