android 微信支付成功后是如何跳转到WXPayEntryActivity的

做过微信支付的都知道,集成微信支付时必须在我们的包名下创建wxapi文件夹里面有一个WXPayEntryActivity。

为什么要这样做呢?支付成功后再微信中“返回商家”又是如何跳转到WXPayEntryActivity呢?

我们的程序启动了微信,微信把结果又返回给了我们的app,这就用到了进程间通信。

进程间通信(IPC)这个大家应该不陌生,大体分为六种:

Bundle/Intent传递数据,文件共享,Messenger,AIDL,ContentProvider,Socket。

很明显微信这里用的是第一种Bundle/Intent方式。

通过如下代码可以启动对应的activity,并通过bundle传递数据。

val intent= Intent()
//packageName是你的包名
intent.setClassName("packageName","packageName.wxapi.WXPayEntryActivity")
startActivity(intent)

但在微信中是无法直接通过显示意图去启动别的应用的activity的。所以需要把我们的activity exported出来。

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

这样就可以了。

这里就很容易理解为什么非要在包名下创建wxapi文件夹,里面还要放一个WXPayEntryActivity。

因为不这么做微信找不到完成后要跳转的activity。在我们启动微信的时候把包名传过去了,然后根据包名+wxapi. WXPayEntryActivity。就可以了。

启动WXPayEntryActivity后通过

api = WXAPIFactory.createWXAPI(this, Constants.APP_ID);
api.handleIntent(getIntent(), this);

把数据解析出来,在activity实现的接口的方法中就拿到了结果。

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值