微信的支付流程
程序员文章站
2022-07-13 16:52:51
...
暂时写那么多:之后再补充,谢谢
用户(发起支付的手段)(把商品的id发送过去)——商户服务器根据App的请求——生成对应的订单信息——请求微信的服务器——返回预订单信息——商户服务器
——生成订单信息——APP(用户看到订单信息)——确认付款——转到微信API
接入过程分为
1.libs包的导入:libammsdk.jar
初始化微信的支付组件:
api = WXAPIFactory.createWXAPI(this,App.weichat_id);//实例化IWXAPI,还有一个参数是是否检查签名
api.registerApp(App.weichat_id);//将应用注册到微信
与我方服务器请求生成订单
public void pay(int produceId){
String url = "http://wxpay.weixin.qq.com/pub_v2/app/app_pay.php?plat=android";//我们服务器的网址
Toast.makeText(mainActivity, "获取订单中...", Toast.LENGTH_SHORT).show();
String itemInfo = "{item:'"+ produceId+"'}"; //"{item:'001'}"
HttpRequest httpRequest = new HttpRequest(url,itemInfo);//得到服务器的回调
httpRequest.requestHttp(new HttpListener()
{
@Override
public void onResult(String result)
{
super.onResult(result);
handleResult(result);
}
});
}
public void handleResult(String result)
{
try
{
if (result != null)
{
JSONObject json = new JSONObject(result);
if(null != json && !json.has("retcode"))
{
PayReq req = new PayReq();
//req.appId = "wxf8b4f85f3a794e77"; // 测试用appId
req.appId = json.getString("appid");
req.partnerId = json.getString("partnerid");// 微信支付分配的商户号
req.prepayId = json.getString("prepayid");// 预支付订单号,app服务器调用“统一下单”接口获取
req.nonceStr = json.getString("noncestr");
req.timeStamp = json.getString("timestamp");
req.packageValue = json.getString("package");
req.sign = json.getString("sign");
req.extData = "app data"; // optional
Toast.makeText(mainActivity, "正常调起支付", Toast.LENGTH_SHORT).show();
// 在支付之前,如果应用没有注册到微信,应该先调用IWXMsg.registerApp将应用注册到微信
api.sendReq(req);
}
else
{
Log.d("PAY_GET", "返回错误"+json.getString("retmsg"));
Toast.makeText(mainActivity, "返回错误"+json.getString("retmsg"), Toast.LENGTH_SHORT).show();
}
}
else
{
Log.d("PAY_GET", "服务器请求错误");
Toast.makeText(mainActivity, "服务器请求错误", Toast.LENGTH_SHORT).show();
}
}
catch(Exception e)
{
Log.e("PAY_GET", "异常:"+e.getMessage());
Toast.makeText(mainActivity, "异常:"+e.getMessage(), Toast.LENGTH_SHORT).show();
}
}
之后如果订单信息一致,微信SDK就会在客户端弹出支付订单的信息,
当用户确认支付或者取消支付或者发生网络连接错误的时候
就会在
com.xxxx.xxx.wxapi(就是你主项目所在的目录新建一个xwapi的目录)
里有个WXPayEntryActivity
/**
* 得到支付结果回调
*/
//0 支付成功 -1发生错误 -2用户取消
@Override
public void onResp(BaseResp resp) {
Log.d(TAG, "onPayFinish, errCode = " + resp.errCode);// 支付结果码
//与我们的服务器做验证的消息
}
}
上一篇: uniapp的微信支付
下一篇: php的微信支付