1.添加微信支付的jar包,然后在AndroidManifest.xml文件下添加如下:
2.在你的项目包下新建包名wxapi
,再在包下新建类WXPayEntryActivity
实现IWXAPIEventHandler
接口。代码如下:
public class WXPayEntryActivity extends AppCompatActivity implements IWXAPIEventHandler{
private static final String TAG = "MicroMsg.SDKSample.WXPayEntryActivity";
IWXAPI wxapi;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// TextView tv = new TextView(this);
// tv.setText("支付结果");
// setContentView(tv);
wxapi= WXAPIFactory.createWXAPI(this, ApplictionLayer.APP_ID);
wxapi.handleIntent(getIntent(), this);
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
wxapi.handleIntent(intent, this);
}
@Override
public void onReq(BaseReq req) {
}
@Override
public void onResp(BaseResp resp) {
LogUtil.d(TAG, "Luke = " + resp.toString());
if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
int code = resp.errCode;
switch (code) {
case 0:
Toast.makeText(WXPayEntryActivity.this, "支付成功!", Toast.LENGTH_LONG).show();
break;
case -1:
Toast.makeText(WXPayEntryActivity.this, "支付失败", Toast.LENGTH_LONG).show();
finish();
break;
case -2:
Toast.makeText(WXPayEntryActivity.this, "支付取消", Toast.LENGTH_LONG).show();
finish();
break;
default:
Toast.makeText(WXPayEntryActivity.this, "支付失败", Toast.LENGTH_LONG).show();
setResult(RESULT_OK);
finish();
break;
}
}
}
}
PayReq req = new PayReq();
req.appId= data.getAppid();
req.partnerId =data.getPartnerid();
req.prepayId =data.getPrepayid();
req.packageValue = data.getPackageX();
req.nonceStr = data.getNoncestr();
req.timeStamp =data.getTimestamp();
req.sign = data.getSign();
wxapi.sendReq(req);
final String data = bean.getData();
Runnable payRunnable = new Runnable() {
@Override
public void run() {
PayTask alipay = new PayTask(PayActivity.this);
//data为服务器返回的支付信息
Map result = alipay.payV2(data, true);
Message msg = new Message();
msg.what = SDK_PAY_FLAG;
msg.obj = result;
mHandler.sendMessage(msg);
}
};
// 必须异步调用
Thread payThread = new Thread(payRunnable);
payThread.start();
private Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case SDK_PAY_FLAG: {
PayResult payResult = new PayResult((Map) msg.obj);
/**
对于支付结果,请商户依赖服务端的异步通知结果。同步通知结果,仅作为支付结束的通知。
*/
String resultInfo = payResult.getResult();// 同步返回需要验证的信息
String resultStatus = payResult.getResultStatus();
// 判断resultStatus 为9000则代表支付成功
if (TextUtils.equals(resultStatus, "9000")) {
// 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
//和服务器进行判断,是否支付成功
} else {
// 该笔订单真实的支付结果,需要依赖服务端的异步通知。
Toast.makeText(PayActivity.this, "支付失败", Toast.LENGTH_SHORT).show();
}
break;
}
}
}
};