安卓微信支付回调出现白页面

安卓项目中用到微信支付,发现回调时无论成功或失败都会出现白页面,而且吐司也没弹出来,百思不得其解。

这是回调的代码:



    @Override
    public void onResp(BaseResp resp) {

        if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
            
            if(resp.errCode==0){
                //支付成功

                //发送eventbuscode,如果发货页面收到,会执行自动销毁。
                EventBus.getDefault().post(new EventCenter(EventCode.FAHUO_PAY_SUCCESS));
                
                CommonUtils.showToast(context, "支付成功");
            }
            
            if(resp.errCode==-1){
                //支付失败

                CommonUtils.showToast(context, "支付失败");
            }
            
            if(resp.errCode==-2){
                //取消支付

                CommonUtils.showToast(context, "取消支付");
            }
            
            finish();
        }
    }


网上有解释说是WXPayEntryActivity这个类的包名有误,检查发现确实是按照文档上说的放在了 "包名.wxapi" 下。

后来发现原来是context的原因,虽然在onCreate方法中做了初始化:context = this,但是没起作用。


回调修改成这样:



    @Override
    public void onResp(BaseResp resp) {

        if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
            
            if(resp.errCode == 0){
                //支付成功

                //发送eventbuscode,如果发货页面收到,会执行自动销毁。
                EventBus.getDefault().post(new EventCenter(EventCode.FAHUO_PAY_SUCCESS));
                
                CommonUtils.showToast(WXPayEntryActivity.this, "支付成功");
            
            }else if(resp.errCode == -1){
                //支付失败

                CommonUtils.showToast(WXPayEntryActivity.this, "支付失败");
            
            }else if(resp.errCode == -2){
                //取消支付

                CommonUtils.showToast(WXPayEntryActivity.this, "取消支付");
            }
            
            finish();
        }
    }


OK,回调成功!

记录一下,以免再犯同样的错误。


您好!要在安卓应用中接入微信支付,您可以按照以下步骤进行操作: 1. 在微信开放平台上注册并创建一个应用,获取到对应的AppID和AppSecret。 2. 在安卓应用的项目中,添加微信支付的SDK文件,可以通过在项目的build.gradle文件中添加相应的依赖来引入。 3. 在安卓应用的manifest文件中,添加以下权限和activity声明: ```xml <uses-permission android:name="android.permission.INTERNET" /> <activity android:name="com.tencent.mm.opensdk.openapi.WXPayEntryActivity" android:exported="true" android:launchMode="singleTop" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> ``` 4. 在安卓应用的代码中,使用微信支付SDK提供的API进行支付操作。具体步骤如下: - 在您的支付页面或订单确认页面,用户点击支付按钮后,调用以下代码创建一个支付请求: ```java 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, req.appId); api.registerApp(req.appId); api.sendReq(req); ``` - 在安卓应用的代码中,实现一个WXPayEntryActivity来接收支付结果的回调。在该Activity的`onCreate`方法中,调用以下代码处理支付结果: ```java @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_wxpay_entry); // 处理支付结果 handlePayResult(getIntent()); } private void handlePayResult(Intent intent) { // 获取支付结果信息 PayResp resp = new PayResp(); resp.fromIntent(intent); // 根据支付结果进行相应处理 if (resp.errCode == BaseResp.ErrCode.ERR_OK) { // 支付成功 // TODO: 进行支付成功后的逻辑处理 } else { // 支付失败 // TODO: 进行支付失败后的逻辑处理 } finish(); } ``` 以上是接入微信支付的基本步骤,您需要根据具体的业务需求和微信支付提供的文档进行相应的配置和开发。希望对您有所帮助!如果还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值