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出来。

这样就可以了。

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

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

启动WXPayEntryActivity后通过

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

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

 

你可能感兴趣的:(android)