Android调用微信登陆、分享、支付

2019-12-10 19:36:20于海丽

微信支付 请求跟返回值的接收   微信支付也是发送广播,如果你们还有需求判断支付成功或者失败,可以在广播的intent中进行传参

/** 
 * 微信支付回调Activity 
 * @author ansen 
 * @create time 2015-08-29 
 */ 
public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler{ 
  private IWXAPI wxAPI; 
   
  @Override 
  protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    wxAPI = WXAPIFactory.createWXAPI(this, WeiXinPresenter.APP_ID); 
    wxAPI.handleIntent(getIntent(), this); 
  } 
   
  @Override 
  protected void onNewIntent(Intent intent){ 
    super.onNewIntent(intent); 
    setIntent(intent); 
    wxAPI.handleIntent(intent, this); 
  } 
   
  @Override 
  public void onReq(BaseReq arg0) { 
  } 
 
  @Override 
  public void onResp(BaseResp resp) { 
    MLog.i("微信支付回调..", "ansen onResp"); 
    if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX){//微信支付回调 
      if(resp.errCode==BaseResp.ErrCode.ERR_OK){//微信支付成功 
        Intent intent = new Intent(); 
        intent.setAction(APIDefineConst.BROADCAST_ACTION_WEIXIN_PAY); 
          LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(this); 
          lbm.sendBroadcast(intent); 
        //成功 
//       Toast.makeText(this,R.string.wxpay_success, 0).show(); 
      }else{ 
//       Toast.makeText(this,R.string.wxpay_success, 0).show(); 
      } 
    } 
    finish(); 
  } 
   
} 

强调一点,一定要注意 接收微信的请求及返回值 的包名跟类名,包名是应用程序的包名+".wxapi"  类名必须是微信指定的类名   并且这两个Activity一定要在AndroidManifest.xml中注册,上传一张是我做的app中包名跟类名的截图

 Android调用微信登陆、分享、支付

如何在activity中调用微信登陆

1).登陆广播监听内部类  如果接收到了广播就去获取微信token

private class WXEntryReceiver extends BroadcastReceiver { 
  @Override 
  public void onReceive(Context context, Intent intent){ 
    MLog.i("WXEntryReceiver", "接收微信登陆广播"); 
    if(MLog.debug) 
      showToast("接收微信登陆广播"); 
    if(intent.getAction().equals(APIDefineConst.BROADCAST_ACTION_WEIXIN_TOKEN)){ 
      int errCode = intent.getExtras().getInt("errCode"); 
      if(MLog.debug) 
        System.out.println("获取错误码:"+errCode); 
      if(errCode==BaseResp.ErrCode.ERR_USER_CANCEL||errCode==BaseResp.ErrCode.ERR_AUTH_DENIED){ 
        requestDataFinish(); 
      }else{ 
        String code = intent.getExtras().getString("code"); 
        xinTestPresenter.getAccessToken(code); 
      } 
    } 
  } 
}