微信的支付流程

xiaoxiao2021-02-28  95

暂时写那么多:之后再补充,谢谢 用户(发起支付的手段)(把商品的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);// 支付结果码 //与我们的服务器做验证的消息 } }
转载请注明原文地址: https://www.6miu.com/read-36524.html

最新回复(0)