Android 微信支付,授权,分享回调区分记录

摘要:
我们无法避免在项目中与微信打交道。最常用的是授权登录、共享和支付。本文记录了当同时使用这三个函数时如何区分回调。在集成和传输的早期阶段,许多数据将不会在此记录。要接收回调,首先编写WXEntryActivity并实现IWXAPIEventHandler接口。

我们做项目中避免不了和微信打交道,其中最常用的也就是授权登录与分享和支付了。

本篇文章记录这三个功能同时使用的时候,回调怎么来区分。因为每个功能都有自己的回调状态。前期集成与发送,资料很多了就不在这里记录了。

接收回调首先要写一个WXEntryActivity,实现IWXAPIEventHandler接口。

activity的oncreate方法中实例化IWAPI对象:

[java] view plain copy
 
  1. private IWXAPI api;  
[java] view plain copy
 
  1. @Override  
  2.     protected void onCreate(Bundle savedInstanceState) {  
  3.         super.onCreate(savedInstanceState);  
  4.         api = WXAPIFactory.createWXAPI(this, AppContant.APP_ID);  
  5.         api.handleIntent(getIntent(), this);  
  6.     }  
  7.   
  8.     @Override  
  9.     protected void onNewIntent(Intent intent) {  
  10.         super.onNewIntent(intent);  
  11.         setIntent(intent);  
  12.         api.handleIntent(intent, this);  
  13.     }  

然后就是实现接口中的onResp方法中来接收回调的消息。

下面看下代码:

[java] view plain copy
 
  1. @Override  
  2.     public void onResp(BaseResp resp) {  
  3.         if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {  
  4.             // 支付  
  5.   
  6.             int errCode = resp.errCode;  
  7.             if (errCode == -1) {  
  8.                 Toast.makeText(getApplicationContext(), resp.errStr, Toast.LENGTH_SHORT).show();  
  9.                 finish();  
  10. //                EventBus.getDefault().post("wx1");  
  11.             } else if (errCode == 0) {  
  12. //                EventBus.getDefault().post("wx0");  
  13.                 Toast.makeText(getApplicationContext(), "支付完成", Toast.LENGTH_SHORT).show();  
  14.                 this.finish();  
  15.             } else {  
  16.                 Toast.makeText(getApplicationContext(), "支付失败", Toast.LENGTH_SHORT).show();  
  17.                 finish();  
  18.             }  
  19.         }else if (resp.getType()==ConstantsAPI.COMMAND_SENDMESSAGE_TO_WX){  
  20.             // 分享  
  21.   
  22.             int result = 0;  
  23.             switch (resp.errCode) {  
  24.                 case BaseResp.ErrCode.ERR_OK:  
  25.                     result = 分享成功;  
  26.                     break;  
  27.                 case BaseResp.ErrCode.ERR_USER_CANCEL:  
  28.                     result = 取消分享;  
  29.                     break;  
  30.                 case BaseResp.ErrCode.ERR_SENT_FAILED:  
  31.                     result = 分享失败;  
  32.                     break;  
  33.                 default:  
  34.                     result = 未知原因;  
  35.                     break;  
  36.             }  
  37.             Toast.makeText(getApplicationContext(), getString(result), Toast.LENGTH_SHORT).show();  
  38.             finish();  
  39.   
  40.         }else if(resp.getType()==ConstantsAPI.COMMAND_SENDAUTH){  
  41.             // 登录  
  42.   
  43.             int result = 0;  
  44.             switch (resp.errCode) {  
  45.                 case BaseResp.ErrCode.ERR_OK:  
  46.                     // 授权成功  
  47.   
  48.                     result = R.string.wechat_login_success;  
  49.   
  50.                     // 发送事件通知登陆界面  
  51.                     EventBus.getDefault().post(resp);  
  52.                     break;  
  53.                 case BaseResp.ErrCode.ERR_USER_CANCEL:  
  54.                     // 授权取消  
  55.                     result = 取消授权;  
  56.                     break;  
  57.                 case BaseResp.ErrCode.ERR_AUTH_DENIED:  
  58.                     // 授权被拒绝  
  59.                     result = 授权被拒绝;  
  60.                     break;  
  61.                 default:  
  62.                     // 未知错误  
  63.                     result = 未知原因;  
  64.                     break;  
  65.             }  
  66.             Toast.makeText(getApplicationContext(), getString(result), Toast.LENGTH_SHORT).show();  
  67.             finish();  
  68.         }  
  69.     }  

免责声明:文章转载自《Android 微信支付,授权,分享回调区分记录》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇word2012写论文之参考文献和图片C++ fscanf 读取一整行下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Android02——Activity

Activity 目录 Activity 创建空白activity和layout 创建活动 设置布局 在活动中加载布局 AndroidManfiest文件中注册 在活动中使用toast Menu 销毁一个活动 Intent 显式intent 隐式intent 其他intent用法 向下一个活动传递数据 返回数据给上一个活动[没懂] ac...

unity探索者之微信分享所有流程,非第三方插件

版权声明:本文为原创文章,转载请声明http://www.cnblogs.com/unityExplorer/p/7560575.html  很久没有写新博客了,前段时间有些忙,这几天趟了几个微信分享的坑,写下来和大家分享下 接过微信分享的人,不论是直接接的微信自己的sdk还是使用了第三方插件,比如友盟、Mob之类的,估计都被微信官方恶心过。因为微信官方的...

如何在不接入微信API的情况下自定义分享内容(图片、链接、标题)

方法如下: 1.设置分享title:动态改变document.title值即可: document.title = 'test'    2.设置分享图片:在页面隐藏一张尺寸大于290*290的图(图片需要容器包裹,设置容器css属性display:none即可): <div style="display:none"><img sr...

android中实现自定义广播

自定义广播分两个步骤:1、发送广播 2、接收广播 一、先看如何接收广播: 我使用的是Android Studio,File->New->Other->Broadcast Receiver,先创建一个广播类,这个创建的类会自动帮我们继承BroadcastReceiver类,接收广播,需要继承这个类 MyReceiver.java packa...

jweixin-1.1.0.js微信接口“分享给朋友”文字和图片配置

在npm官网找到了:微信官方 js-sdk CommonJS 版https://www.npmjs.com/package/weixin-js-sdk 步骤一:引入JS文件在需要调用JS接口的页面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.0.0.js备注:支持使用 AMD/CMD 标...

计划助手V1.0-微信小程序(QQ小程序)-源代码分享

疫情期间在家感觉好无聊啊,于是利用空闲时间做了一个用来记录和管理小目标时间的小程序,命名为《小沙漏》。 QQ版本小程序同步上线,QQ小程序叫《时间小沙漏》,欢迎大家前来体验,后期也会添加其他的新功能哦~ 【区别】:微信小程序的代码与QQ小程序的源码是不一样的。 微信小程序的源码基于微信小程序云开发,需要在有网络的情况下使用,具有同步功能,所有记录在删除小...