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

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

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

接收回调首先要写一个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.     }  
posted @ 2018-05-02 08:45  你要  阅读(675)  评论(0编辑  收藏  举报