Android 跳转到小程序支付,再返回app的各种问题

Android 跳转到小程序支付,再返回app的各种问题

开发该功能的时候来到微信开发平台官网,代码短短几行,想起来对接起来应该很简单,然而写完后出现好几个问题,比如 1,白屏,2,如何拿到微信小程序之后返回的数据。再去看看微信开放平台的的常见问题,依然一无所获。就开起来填坑之路:

1:AndroidManifest.xml的配置

在AndroidManifest.xml的WXEntryActivity中加入如下属性:(这里如果不加的话,小程序无法跳转回APP)

android:taskAffinity="your packagename"

android:launchMode="singleTask"

2:WXEntryActivity实现IWXAPIEventHandler接口,且实现onResp方法(小程序支付后返回的数据就在该方法中)

public class WXEntryActivity extends Activity implements IWXAPIEventHandler 

 @Override
    public void onResp(BaseResp baseReq) {

        int type = baseReq.getType();
        if(type == ConstantsAPI.COMMAND_LAUNCH_WX_MINIPROGRAM){
            if(baseReq != null && baseReq instanceof WXLaunchMiniProgram.Resp){
                WXLaunchMiniProgram.Resp launchMiniProResp = (WXLaunchMiniProgram.Resp) baseReq;
                String extraData =launchMiniProResp.extMsg;
                EventBus.getDefault().post(extraData);
                LogUtil.i("=====收到小程序返回的数据="+extraData);
            }
            finish();
            overridePendingTransition(0,0);
        }

注意:在onResp方法中得到的任何数据后,需要执行finish()

           因为从小程序调回app其实是跳转到了页面WXEntryActivity,需要执行finish之后才会跳转到之前跳转小程序的页面(这也就是解决小程序跳转回app白屏问题)

3:在onCreate处理返回值(处理调用异常返回情况)

// IWXAPI 是第三方app和微信通信的openapi接口
    private IWXAPI api;

    @Override
    protected void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        // 通过WXAPIFactory工厂,获取IWXAPI的实例
        api = WXAPIFactory.createWXAPI(this, Constants.APP_ID, false);
        //注意:
        //第三方开发者如果使用透明界面来实现WXEntryActivity,需要判断handleIntent的返回值,如果返回值为false,则说明入参不合法未被SDK处理,应finish当前透明界面,避免外部通过传递非法参数的Intent导致停留在透明界面,引起用户的疑惑
        try {
            if (!api.handleIntent(getIntent(), this)) {
                finish();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

至此app调用小程序支付完成

后续线下反馈,出现小程序多次调起,支付导致订单状态异常问题

问题:app在执行小程序调起的方法后,可能会间隔1秒左右弹出微信小程序页面,这间隔1秒(大致)如果用户多次点击就会出现小程序支付页面多次调起问题

解决方案:因为目前没发现小程序正常调起的回调方法,所以可以加个1秒延迟,既触发调起微信小程序代码,handler写个1秒延迟即可,但是还是没有最终解决问题。

                   所以还是得后台处理,只要支付成功一次,既成功,状态改变,这个问题也就解决了

原文出处 https://blog.csdn.net/gemgaozhen/article/details/104800353

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值