1.在build.gradle文件中加入如下依赖
//微信支付
implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:5.4.3'
2.在当前包名下新建一个wxapi的包,新建一个 WXPayEntryActivity
public class WXPayEntryActivity extends AppCompatActivity implements IWXAPIEventHandler {
private IWXAPI api;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
api = WXAPIFactory.createWXAPI(this, "输入你的AppID");
api.handleIntent(getIntent(), this);
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
api.handleIntent(intent, this);
}
@Override
public void onReq(BaseReq req) {
}
@Override
public void onResp(BaseResp resp) {
if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
switch (resp.errCode) {
case 0://成功
Toast.makeText(this, getString(R.string.pay_success), Toast.LENGTH_SHORT).show();
EventBus.getDefault().post(Constants.WECHAT_PAY_SUCCESS);
break;
case -1://错误
Toast.makeText(this, getString(R.string.pay_failed), Toast.LENGTH_SHORT).show();
EventBus.getDefault().post(Constants.WECHAT_PAY_FAILED);
break;
case -2://用户取消
Toast.makeText(this, getString(R.string.pay_cancel), Toast.LENGTH_SHORT).show();
EventBus.getDefault().post(Constants.WECHAT_PAY_CANCEL);
break;
default:
break;
}
finish();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
api.detach();
}
}
3.清单文件配置activity
<activity android:name="你的包名.wxapi.WXPayEntryActivity"
android:exported="true"
android:launchMode="singleTop"
android:screenOrientation="portrait"/>
4.在当前包名下新建一个wxpay的包,新建一个WXPay的类
/**
* 调起微信支付
*
* @author Administrator
*/
public class WXPay {
private static IWXAPI msgApi;
private static void registerApp(Context context, String appid) {
msgApi = WXAPIFactory.createWXAPI(context, appid);
msgApi.registerApp(appid);
}
/**
* 自定义方法开始传入参数调起微信
* @param context context
* @param appid 你的AppID
* @param prepay 通过服务端返回的数据解析的WXPayInfo类
*/
public static void pay(Context context, String appid, WXPayInfo prepay) {
if (msgApi == null) {
registerApp(context, appid);
}
if (!msgApi.isWXAppInstalled()) {
Toast.makeText(context, R.string.uninstall_wechat, Toast.LENGTH_LONG).show();
return;
}
PayReq request = new PayReq();
if (prepay != null) {
request.appId = appid;
request.partnerId = prepay.getPartnerid();
request.prepayId = prepay.getPrepayid();
request.packageValue = Constants.WEIXIN_PACKAGE_VALUE;
request.nonceStr = prepay.getNoncestr();
request.timeStamp = "" + prepay.getTimestamp();
request.sign = prepay.getSign();
msgApi.sendReq(request);
} else {
Toast.makeText(context, R.string.params_null, Toast.LENGTH_LONG).show();
}
}
}
5.最后开始调用
WXPay.pay(this, "你的AppID", "服务端返回的json解析以后的bean");