微信支付其实并没有那么难
流程:
1. 向后台发送数据,传递金额,userId等参数,后台做统一下单处理
2. 获取到返回的参数: 调用微信支付
JSONObject jsonMsg=jsonObject.getJSONObject("data");
PayReq req = new PayReq();
req.appId = Constants.APP_ID;
req.partnerId = jsonMsg.getString("mch_id");
req.prepayId = jsonMsg.getString("prepay_id");
req.nonceStr = jsonMsg.getString("nonce_str"); //随机字符串
req.timeStamp = jsonMsg.getString("timestamp");
req.packageValue = "Sign=WXPay";
req.sign = jsonMsg.getString("sign");
Toast.makeText(PayActivity.this, "正常调起支付", Toast.LENGTH_SHORT).show();
// 在支付之前,如果应用没有注册到微信,应该先调用IWXMsg.registerApp将应用注册到微信
api.sendReq(req);
PayReq req = new PayReq();
req.appId = Constants.APP_ID;
req.partnerId = jsonMsg.getString("mch_id");
req.prepayId = jsonMsg.getString("prepay_id");
req.nonceStr = jsonMsg.getString("nonce_str"); //随机字符串
req.timeStamp = jsonMsg.getString("timestamp");
req.packageValue = "Sign=WXPay";
req.sign = jsonMsg.getString("sign");
Toast.makeText(PayActivity.this, "正常调起支付", Toast.LENGTH_SHORT).show();
// 在支付之前,如果应用没有注册到微信,应该先调用IWXMsg.registerApp将应用注册到微信
api.sendReq(req);
3. 处理微信支付的回调就是在刚刚创建的WXEntryActivity中处理。需要实现IWXAPIEventHandler接口,这个接口会要求你实现onResp方法,我们就在这个方法中处理回调。
@Override
public void onResp(BaseResp resp) {
Log.d(TAG, "onPayFinish, errCode = " + resp.errCode);
if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(R.string.app_tip);
builder.setMessage(getString(R.string.pay_result_callback_msg, String.valueOf(resp.errCode)));
builder.show();
}
}
public void onResp(BaseResp resp) {
Log.d(TAG, "onPayFinish, errCode = " + resp.errCode);
if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(R.string.app_tip);
builder.setMessage(getString(R.string.pay_result_callback_msg, String.valueOf(resp.errCode)));
builder.show();
}
}
最有可能可能出现问题的地方就是签名啦,有的时候我们在微信开放平台写入的是正式版的签名。程序写完了,感觉没问题了,开始运行,发现调不起来支付, 因为直接运行APP 默认用的是debug模式,签名不一致呀,所以不行。可以先去打一个正式版的包,装在手机上,在运行就OK了。
我的sign签名是在后台做的,直接返回给我,方便了很多,如果是在前台做,需要进行MD5加密,网络上有很多的例子,就不再叙述了。微信官方也推荐签名在后台做,前端对于数据的处理计算工作越少越好啦。
没接入之前听说微信支付的坑很多,自然而然也会感觉好难得样子,在网上也看了好多资料,后台接口写完了,正式开始撸代码,好在没有遇到什么坑,嘿嘿!
参考的微信支付相关文章:
微信支付其实并没有那么难
流程:
1. 向后台发送数据,传递金额,userId等参数,后台做统一下单处理
2. 获取到返回的参数: 调用微信支付
JSONObject jsonMsg=jsonObject.getJSONObject("data");
PayReq req = new PayReq();
req.appId = Constants.APP_ID;
req.partnerId = jsonMsg.getString("mch_id");
req.prepayId = jsonMsg.getString("prepay_id");
req.nonceStr = jsonMsg.getString("nonce_str"); //随机字符串
req.timeStamp = jsonMsg.getString("timestamp");
req.packageValue = "Sign=WXPay";
req.sign = jsonMsg.getString("sign");
Toast.makeText(PayActivity.this, "正常调起支付", Toast.LENGTH_SHORT).show();
// 在支付之前,如果应用没有注册到微信,应该先调用IWXMsg.registerApp将应用注册到微信
api.sendReq(req);
PayReq req = new PayReq();
req.appId = Constants.APP_ID;
req.partnerId = jsonMsg.getString("mch_id");
req.prepayId = jsonMsg.getString("prepay_id");
req.nonceStr = jsonMsg.getString("nonce_str"); //随机字符串
req.timeStamp = jsonMsg.getString("timestamp");
req.packageValue = "Sign=WXPay";
req.sign = jsonMsg.getString("sign");
Toast.makeText(PayActivity.this, "正常调起支付", Toast.LENGTH_SHORT).show();
// 在支付之前,如果应用没有注册到微信,应该先调用IWXMsg.registerApp将应用注册到微信
api.sendReq(req);
3. 处理微信支付的回调就是在刚刚创建的WXEntryActivity中处理。需要实现IWXAPIEventHandler接口,这个接口会要求你实现onResp方法,我们就在这个方法中处理回调。
@Override
public void onResp(BaseResp resp) {
Log.d(TAG, "onPayFinish, errCode = " + resp.errCode);
if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(R.string.app_tip);
builder.setMessage(getString(R.string.pay_result_callback_msg, String.valueOf(resp.errCode)));
builder.show();
}
}
public void onResp(BaseResp resp) {
Log.d(TAG, "onPayFinish, errCode = " + resp.errCode);
if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(R.string.app_tip);
builder.setMessage(getString(R.string.pay_result_callback_msg, String.valueOf(resp.errCode)));
builder.show();
}
}
最有可能可能出现问题的地方就是签名啦,有的时候我们在微信开放平台写入的是正式版的签名。程序写完了,感觉没问题了,开始运行,发现调不起来支付, 因为直接运行APP 默认用的是debug模式,签名不一致呀,所以不行。可以先去打一个正式版的包,装在手机上,在运行就OK了。
我的sign签名是在后台做的,直接返回给我,方便了很多,如果是在前台做,需要进行MD5加密,网络上有很多的例子,就不再叙述了。微信官方也推荐签名在后台做,前端对于数据的处理计算工作越少越好啦。
没接入之前听说微信支付的坑很多,自然而然也会感觉好难得样子,在网上也看了好多资料,后台接口写完了,正式开始撸代码,好在没有遇到什么坑,嘿嘿!
参考的微信支付相关文章: