美文网首页
微信支付h5

微信支付h5

作者: wang先生1 | 来源:发表于2018-06-29 16:41 被阅读0次

1:引导用户点击点击下一步,然后向后台发送请求

    1.1:先贴出业务层的代码。

            基本上逻辑都是在后台处理

            //调用统一下单接口

 //1:构建请求参数,参数详情看微信支付文档https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_1

            Map param =new HashMap<>();

            param.put("appid",wxAppid);

           param.put("mch_id",mchid);

             param.put("nonce_str",WXPayUtil.generateNonceStr());

           param.put("body","充值");

             param.put("out_trade_no", “订单号”);

param.put("total_fee",“金额”);

param.put("spbill_create_ip",IpUtil.getIpAddr(request));

param.put("notify_url","填回调地址");

param.put("trade_type","MWEB");

param.put("scene_info","");

try {

//将map转换成xml

        String xml = WXPayUtil.generateSignedXml(param,apikey);

//发送请求调用统一下单接口

        HttpClient client =new HttpClient("https://api.mch.weixin.qq.com/pay/unifiedorder");

client.setXmlParam(xml);

client.setHttps(true);

client.post();

//返回结果

        String xmlResult  = client.getContent();

//将xml字符串转换成map集合

        Map result = WXPayUtil.xmlToMap(xmlResult);

Map map =new HashMap<>();

if (!result.get("return_msg").equals("OK")) {

map.put("file","系统错误");

return map;

}

if(memberPaymentMapper.insertSelective(memberPayment) ==0)

{

throw new RuntimeException("插入充值记录失败");

}

String url="支付成功需要返回的页面";

String url_encode = java.net.URLEncoder.encode(url,"utf-8");

//这里是调用成功之后,会给你返回一个url,直接到前端跳转就可以了,就可以唤起微信了。

map.put("mweb_url", result.get("mweb_url")+"&redirect_url="+url_encode);

return map;

}catch (Exception e) {

e.printStackTrace();

return new HashMap<>();

}

}

//回调地址通知

@RequestMapping("/callback")

@ResponseBody

public String callBack(HttpServletRequest request){

String inputLine;

String notityXml ="";

try {

while ((inputLine = request.getReader().readLine()) !=null) {

notityXml += inputLine;

logger.info(notityXml);

}

request.getReader().close();

}catch (Exception e) {

}

Map notifyMap;

PaymentConfig config;

try {

config =new PaymentConfig();

WXPay wxpay =new WXPay(config);

notifyMap = WXPayUtil.xmlToMap(notityXml);

//支付成功告诉微信

 if (wxpay.isPayResultNotifySignatureValid(notifyMap)  {

return "";//这里主要是告诉微信支付成功了,让微信闭嘴,不然会一直给你后台发送消息。

}

else {

// 签名错误,如果数据里没有sign字段,也认为是签名错误

        }

}catch (Exception e) {

e.printStackTrace();

}

return "";

}

相关文章

  • 微信支付

    微信支付包括微信H5支付和微信公众号支付 微信H5支付 官方api:https://pay.weixin.qq.c...

  • iOS WKWebView H5微信支付跳转

    iOS WKWebView H5微信支付跳转 需求:iOS客户端实现嵌入H5进行微信支付跳转到微信客户端,支付完成...

  • vue实现webapp支付

    最近在使用vue写webapp,app中要求可以实现线上支付,研究了微信H5支付与支付宝H5支付。其中微信H5支付...

  • 使用UIWebView中遇到的问题

    1、webView中使用H5微信支付 在webView中使用H5微信支付跳转到微信收银台页面时,点击取消或者支付完...

  • Android端 支付宝&微信H5支付调用

    一、支付宝H5支付调用 支付宝H5支付官方开发文档 代码示例: 二、微信H5支付调用 微信H5支付官方开发文档 代...

  • h5仿微信、支付宝支付键盘

    h5仿微信、支付宝键盘|仿微信支付数字键盘|仿支付宝输入法键盘 h5仿微信支付键盘实例 头部引入 HTML片段 效...

  • 微信支付

    H5支付 微信 h5 支付,后端向微信请求支付参数的时候会要求填写一个 return_url 参数,用于 支付成功...

  • 微信H5支付(JSAPI支付)---前端篇

    微信H5支付(JSAPI支付)---前端篇 在开发微信h5支付查了资料说是有两种唤起微信支付的方法:一种是利用内置...

  • 微信支付

    说明:最近公司要求做微信支付,而且还是从h5 界面 调取微信支付,支付成功之后结果返回h5 的需求,(使用WebV...

  • android微信H5支付

    微信除了微信sdk支付还有的就是h5支付,h5支付可以让你再非微信浏览器上进行支付的动作.支付的前提我就不详细的说...

网友评论

      本文标题:微信支付h5

      本文链接:https://www.haomeiwen.com/subject/sjvayftx.html