首先添加工具包,名字为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