关于微信的准备工作:
1. 首先你需要打一个正式包, 然后再手机上安装;
2. 下载微信工具- GenSignature 去获取MD5签名 微信开放平台后台需要
3. 等待微信支付申请下来
开始接入微信支付:
1. 按照官方文档 接入微信支付需要的lib,配置文件等
2. 开始代码
2.1 创建一个WxPAy.class 的类
private IWXAPI mApi;
private String mAppId = "appId";//申请微信 提供
/**
* 将app注册到微信
*/
public void registToWechat() {
mApi = WXAPIFactory.createWXAPI(this.mContext, mAppId, false);//暂未发现true和false的区别
mApi.registerApp(mAppId);
}
/**
* 检查是否安装微信
*/
public void checkWXAppSupport() {
boolean isPaySupported = mApi.getWXAppSupportAPI() >= Build.PAY_SUPPORTED_SDK_INT;
if (!mApi.isWXAppInstalled()) {
Toast.makeText(mContext, "未安装微信", Toast.LENGTH_SHORT).show();
return;
}
if (!isPaySupported) {
Toast.makeText(mContext, "微信版本不支持支付功能,请升级微信到最新版本", Toast.LENGTH_SHORT).show();
return;
}
}
/**
* 调起微信支付 (所需要的参数可以全部从后台获取)
*/
public void reallPay(String appId, String partnerId, String prepayId, String packageValue, String nonceStr,String timeStamp, String sign) {
PayReq request = new PayReq();
request.appId = appId;
request.partnerId = partnerId;
request.prepayId = prepayId;
request.packageValue = packageValue;
request.nonceStr = nonceStr;
request.timeStamp = timeStamp;
request.sign = sign;
mApi.sendReq(request);
}
2.2 创建 WXPayEntryActivity 继承Activity
private IWXAPI api;
private String appId = "appId";
在OnCreate方法中写入:
api = WXAPIFactory.createWXAPI(this, appId);
api.registerApp(appId);
@Override
public void onResp(BaseResp resp) {
Log.d(TAG, "onPayFinish, errCode = " + resp.errCode);
String result = "";
if (String.valueOf(resp.errCode).equals("0")) {
result = "支付成功";
} else if (String.valueOf(resp.errCode).equals("-1")) {
result = "支付失败";
} else if (String.valueOf(resp.errCode).equals("-2")) {
result = "支付取消";
}
WXPayEntryActivity.this.finish();//关闭此Activity
}
至此,微信支付算是完成了,但是相信好多同学会遇到这样或者那样的问题:
1. 出现错误,一般是微信后台没有配置好,一定要仔仔细细的去检查(md5的签名,大小写是否正确)!!!
2. 确认提供的appid 和 secret 是否正确
3. 检查你的包名是否一致: 你的包名.wxapi 清单配置文件: 你的包名.wxapi.WXPayEntryActivity
4. 微信支付是需要正式包的(这是微信最坑爹的地方,没有之一)