Android接入微信登陆

首先添加工具包,名字为libammsdk.jar(微信有相应的包下载
然后在src.main.java.com.****新建一个wxapi的包并存放这两个activity(名字不能更改)

WXEntryActivity(登陆)

public class WXEntryActivity extends Activity implements IWXAPIEventHandler {
    private IWXAPI wxAPI;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        wxAPI = WXAPIFactory.createWXAPI(this, ApiConstant.WECHATE_APP_ID, true);
        wxAPI.registerApp(ApiConstant.WECHATE_APP_ID);
        wxAPI.handleIntent(getIntent(), this);
    }


    @Override
    public void onReq(BaseReq baseReq) {

    }

    @Override
    public void onResp(BaseResp baseResp) {
        if (baseResp.getType() == ConstantsAPI.COMMAND_SENDAUTH) {
            SendAuth.Resp r = (SendAuth.Resp) baseResp;
            if (baseResp.errCode == BaseResp.ErrCode.ERR_OK) {
                Log.e("TAG_WECHAT_CODE", r.code);
                //登陆成功的结果,可以跳转到某个页面
                finish();
            } else if (baseResp.errCode == BaseResp.ErrCode.ERR_AUTH_DENIED) {
                String result = "用户取消微信授权登录";
                Log.e("ERROR", result);
                finish();
            } else if (baseResp.errCode == BaseResp.ErrCode.ERR_USER_CANCEL) {
                String result = "用户拒绝微信授权登录";
                Log.e("ERROR", result);
                finish();
            } else {
                String result = "微信授权登录失败";
                Log.e("ERROR", result);
                finish();
            }
        } else if (baseResp.getType() == ConstantsAPI.COMMAND_SENDMESSAGE_TO_WX) {
            if (baseResp.errCode == BaseResp.ErrCode.ERR_OK) {

            } else if (baseResp.errCode == BaseResp.ErrCode.ERR_USER_CANCEL) {

            } else {
            }
        }
    }
}

WXPayEntryActivity(支付)


public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler {
    private IWXAPI wxAPI;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        wxAPI = WXAPIFactory.createWXAPI(this, ApiConstant.WECHATE_APP_ID);
        wxAPI.handleIntent(getIntent(), this);

    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        wxAPI.handleIntent(getIntent(), this);
    }

    @Override
    public void onReq(BaseReq baseReq) {

    }

    @Override
    public void onResp(BaseResp baseResp) {
        Log.e("WXPayEntryActivity", "code=" + baseResp.errCode);
        if (baseResp.errCode == 0) {
            //支付成功
        } else if (baseResp.errCode == BaseResp.ErrCode.ERR_USER_CANCEL) {
            //取消支付
            Log.e("WXPayEntryActivity", "取消支付");
        } else {
            //支付失败
             Log.e("WXPayEntryActivity", "支付失败");
        }
        finish();
    }
}

在Manifest.xml中添加

  <activity
            android:name=".wxapi.WXEntryActivity"
            android:exported="true"
            android:label="@string/app_name"
            android:launchMode="singleTask"
            android:taskAffinity="com.***.*****"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />
        <activity
            android:name=".wxapi.WXPayEntryActivity"
            android:exported="true"
            android:label="@string/app_name"
            android:launchMode="singleTask"
            android:taskAffinity="com.***.*****"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />

然后在你需要登陆的页面里添加

private IWXAPI iwxapi = null;
@Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        iwxapi = WXAPIFactory.createWXAPI(context, 微信返回的id, true);
        // 将应用的appId注册到微信
        iwxapi.registerApp(微信返回的id);
        //动态监听微信启动广播进行注册到微信
        context.registerReceiver(new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                // 将该app注册到微信
                iwxapi.registerApp(微信返回的id);
            }
        }, new IntentFilter(ConstantsAPI.ACTION_REFRESH_WXAPP));
    }
     public void loginWeChat() {
        SendAuth.Req req = new SendAuth.Req();
        req.scope = "snsapi_userinfo";
        req.state = "wechat_sdk_demo_test";
        iwxapi.sendReq(req);
    }

然后直接调用loginWeChat()就可以了,返回的数据在WXEntryActivity中,找一下就能看到

微信支付这一块可以下载官方demo进行查看
https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=11_1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值