我们做项目中避免不了和微信打交道,其中最常用的也就是授权登录与分享和支付了。
本篇文章记录这三个功能同时使用的时候,回调怎么来区分。因为每个功能都有自己的回调状态。前期集成与发送,资料很多了就不在这里记录了。
接收回调首先要写一个WXEntryActivity,实现IWXAPIEventHandler接口。
activity的oncreate方法中实例化IWAPI对象:
- private IWXAPI api;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- api = WXAPIFactory.createWXAPI(this, AppContant.APP_ID);
- api.handleIntent(getIntent(), this);
- }
- @Override
- protected void onNewIntent(Intent intent) {
- super.onNewIntent(intent);
- setIntent(intent);
- api.handleIntent(intent, this);
- }
然后就是实现接口中的onResp方法中来接收回调的消息。
下面看下代码:
- @Override
- public void onResp(BaseResp resp) {
- if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
- // 支付
- int errCode = resp.errCode;
- if (errCode == -1) {
- Toast.makeText(getApplicationContext(), resp.errStr, Toast.LENGTH_SHORT).show();
- finish();
- // EventBus.getDefault().post("wx1");
- } else if (errCode == 0) {
- // EventBus.getDefault().post("wx0");
- Toast.makeText(getApplicationContext(), "支付完成", Toast.LENGTH_SHORT).show();
- this.finish();
- } else {
- Toast.makeText(getApplicationContext(), "支付失败", Toast.LENGTH_SHORT).show();
- finish();
- }
- }else if (resp.getType()==ConstantsAPI.COMMAND_SENDMESSAGE_TO_WX){
- // 分享
- int result = 0;
- switch (resp.errCode) {
- case BaseResp.ErrCode.ERR_OK:
- result = 分享成功;
- break;
- case BaseResp.ErrCode.ERR_USER_CANCEL:
- result = 取消分享;
- break;
- case BaseResp.ErrCode.ERR_SENT_FAILED:
- result = 分享失败;
- break;
- default:
- result = 未知原因;
- break;
- }
- Toast.makeText(getApplicationContext(), getString(result), Toast.LENGTH_SHORT).show();
- finish();
- }else if(resp.getType()==ConstantsAPI.COMMAND_SENDAUTH){
- // 登录
- int result = 0;
- switch (resp.errCode) {
- case BaseResp.ErrCode.ERR_OK:
- // 授权成功
- result = R.string.wechat_login_success;
- // 发送事件通知登陆界面
- EventBus.getDefault().post(resp);
- break;
- case BaseResp.ErrCode.ERR_USER_CANCEL:
- // 授权取消
- result = 取消授权;
- break;
- case BaseResp.ErrCode.ERR_AUTH_DENIED:
- // 授权被拒绝
- result = 授权被拒绝;
- break;
- default:
- // 未知错误
- result = 未知原因;
- break;
- }
- Toast.makeText(getApplicationContext(), getString(result), Toast.LENGTH_SHORT).show();
- finish();
- }
- }