前期准备:
1)注册微信开放平台账号
2)认证开发者资质
3)创建APP并提交审核
1)2)3)三个流程约7个工作日;
4)提交资料申请微信支付
5)启动设计和开发
4)5)约3~7个工作日;
6)开户成功,登录商户平台进行验证
7)在线签署协议
8)成功接入微信支付
客户端实现:
准备:
1)微信支付的APPID
2)添加微信支付的jar包或依赖
3)一个Activity类 >>> WXPayEntryActivity.java
第1步:
导入微信支付SDK:
compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
第2步:
在对应的目录下创建一个“wxapi目录”,在wxapi目录下创建一个WXPayEntryActivity类继承Activity并实现IWXAPIEventHandler ;
具体代码如下,仅供参考:
public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler {
private static final String TAG = "WXPayEntryActivity";
private IWXAPI mWXApi;
private static PayReq req = new PayReq();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//订单参数数据
String goodsOrder = null;
//商品类型
String buyType = null;
//接收数据
Bundle bundle = this.getIntent().getExtras();
//接收phoneNumber值
String buyType1 = bundle.getString("goods", "");
String buyType2 = bundle.getString("magazine", "");
if (!"".equals(buyType1)) {
buyType = buyType1;
} else if (!"".equals(buyType2)) {
buyType = buyType2;
}
Gson gson = new Gson();
if (GoodSType.GOOD_TYPE1.equals(buyType)) {//购买1
goodsOrder = AccessSPFile.getGoodsOrderSP(this);
//订单信息
Log.d("BOM-眼镜", goodsOrder.toString());
GoodsOrderBean goodsOrderBean = gson.fromJson(goodsOrder, GoodsOrderBean.class);
//判断是否安装微信
if (goodsOrderBean.getResult() != null) {
boolean wxAppInstalledAndSupported = isWXAppInstalledAndSupported(goodsOrderBean.getResult().getAppid());
if (wxAppInstalledAndSupported) {
req = buyGlass(goodsOrderBean);
} else {
Toast.makeText(this, "请安装微信", Toast.LENGTH_SHORT).show();
finish();
}
}
} else if (GoodSType.GOOD_TYPE2.equals(buyType)) {//购买2
goodsOrder = AccessSPFile.getMagazineOrderSP(this);
//订单信息
Log.d("BOM-炸弹", goodsOrder.toString());
MagazineBuyBean goodsOrderBean = gson.fromJson(goodsOrder, MagazineBuyBean.class);
//判断是否安装微信
if (goodsOrderBean.getResult() != null) {
boolean wxAppInstalledAndSupported = isWXAppInstalledAndSupported(goodsOrderBean.getResult().getAppid());
if (wxAppInstalledAndSupported) {
req = buyMagazine(goodsOrderBean);
} else {
Toast.makeText(this, "请安装微信", Toast.LENGTH_SHORT).show();
finish();
}
}
}
if (req != null) {
if (mWXApi != null) {
mWXApi.sendReq(req);
}
}
if (mWXApi != null) {
mWXApi.handleIntent(getIntent(), this);
}
}
private PayReq buyMagazine(MagazineBuyBean goodsOrderBean) {
PayReq req = new PayReq();
String packageX = goodsOrderBean.getResult().getPackageX();
String appid1 = goodsOrderBean.getResult().getAppid();
String noncestr = goodsOrderBean.getResult().getNoncestr();
String partnerid = goodsOrderBean.getResult().getPartnerid();
String prepayid = goodsOrderBean.getResult().getPrepayid();
String sign = goodsOrderBean.getResult().getSign();
String timestamp = goodsOrderBean.getResult().getTimestamp();
//向微信终端注册应用的APPID
String appid = goodsOrderBean.getResult().getAppid();
mWXApi = WXAPIFactory.createWXAPI(this, appid);
mWXApi.registerApp(appid);
//生成支付参数
req.appId = goodsOrderBean.getResult().getAppid();
req.partnerId = goodsOrderBean.getResult().getPartnerid();
req.prepayId = goodsOrderBean.getResult().getPrepayid();
req.packageValue = goodsOrderBean.getResult().getPackageX();
req.nonceStr = goodsOrderBean.getResult().getNoncestr();
req.timeStamp = goodsOrderBean.getResult().getTimestamp();
req.sign = goodsOrderBean.getResult().getSign();
return req;
}
private PayReq buyGlass(GoodsOrderBean goodsOrderBean) {
PayReq req = new PayReq();
String packageX = goodsOrderBean.getResult().getPackageX();
String appid1 = goodsOrderBean.getResult().getAppid();
String noncestr = goodsOrderBean.getResult().getNoncestr();
String partnerid = goodsOrderBean.getResult().getPartnerid();
String prepayid = goodsOrderBean.getResult().getPrepayid();
String sign = goodsOrderBean.getResult().getSign();
String timestamp = goodsOrderBean.getResult().getTimestamp();
//向微信终端注册应用的APPID
String appid = goodsOrderBean.getResult().getAppid();
mWXApi = WXAPIFactory.createWXAPI(this, appid);
mWXApi.registerApp(appid);
//生成支付参数
req.appId = goodsOrderBean.getResult().getAppid();
req.partnerId = goodsOrderBean.getResult().getPartnerid();
req.prepayId = goodsOrderBean.getResult().getPrepayid();
req.packageValue = goodsOrderBean.getResult().getPackageX();
req.nonceStr = goodsOrderBean.getResult().getNoncestr();
req.timeStamp = goodsOrderBean.getResult().getTimestamp();
req.sign = goodsOrderBean.getResult().getSign();
return req;
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
mWXApi.handleIntent(intent, this);
}
@Override
public void onReq(BaseReq baseReq) {
}
/*
第三方应用发送到微信的请求
处理后的响应结果
会回调该方法
@param 0:成功
@param -1:支付失败
@param -2:取消
*/
@Override
public void onResp(BaseResp baseResp) {
if (baseResp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
if (baseResp.errCode == 0) {
//支付成功
Toast.makeText(this, "支付成功", Toast.LENGTH_SHORT).show();
finsh();
} else if (baseResp.errCode == -2) {
Toast.makeText(this, "支付取消", Toast.LENGTH_SHORT).show();
finish();
} else {
Toast.makeText(this, "支付失败", Toast.LENGTH_SHORT).show();
finish();
}
} else {
finish();
}
}
//判断是否安装微信
private boolean isWXAppInstalledAndSupported(String appid) {
IWXAPI msgApi = WXAPIFactory.createWXAPI(WXPayEntryActivity.this, null);
if (appid != null) {
msgApi.registerApp(appid);
}
boolean sIsWXAppInstalledAndSupported = msgApi.isWXAppInstalled()
&& msgApi.isWXAppSupportAPI();
return sIsWXAppInstalledAndSupported;
}
}