使用java如何实现一个微信H5支付功能

  介绍

这篇文章将为大家详细讲解有关使用java如何实现一个微信H5支付功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

前面做了应用微信支付的回调处理,现在需要做微信公众号的支付,花了一天多时间,终于折腾出来了!鉴于坑爹的微信官方没有提供java版的演示,所以全靠自己按照同样坑爹的文档敲敲敲,所以记录下来,以供自己及后来人参考,不足之处,还请指正。

首先,我们贴出调用支付接口的H5页面,当然,在这个页面之前,还需要做很多其他的操作,我们一步一步的来。

坑爹的官方文档给了两个不同的支付接口,在微信公众平台开发中文档的“微信JS-SDK说明文档”中,给出的支付方式是下面被屏蔽的那一部分,而在商户平台的“H5调起支付API”中,又给了一份不同的接口,即下面未屏蔽正常使用的接口。关于坑爹的微信提供了两个不同的支付接口,网上搜索结果也是众说纷纷,所以,只有自己试了。当然,为了简单,我直接试了下面这一种,然后奇迹般的成功了。

& lt; % @页面语言=癹ava"contentType=皌ext/html;charset=UTF-8"   pageEncoding=癠TF-8" %比;   & lt; !DOCTYPE html>   & lt; html>   & lt; head>   & lt;元http-equiv=癈ontent-Type"内容=皌ext/html;charset=UTF-8"比;   & lt; title>微信网页支付& lt;/title>   & lt; !- & lt;脚本类型=拔谋?javascript"脚本https://www.yisu.com/zixun/src=" http://res.wx.qq.com/open/js/jweixin-1.0.0.js "> - ->    - ->   <脚本type=" text/javascript”>/* wx.config ({   调试:真的,//开启调试模式,调用的所有api的返回值会在客户端提醒出来,若要查看传入的参数,可以在pc端打开,参数信息会通过日志打出,仅在pc端时才会打印。   appId: appId,//必填,公众号的唯一标识   时间戳:时间戳,//必填,生成签名的时间戳   nonceStr: nonceStr,//必填,生成签名的随机串   签名:“,//必填,签的名,见附录1   jsApiList (chooseWXPay)://必填,需要使用的JS接口列表,所有JS接口列表见附录2   });*///配置信息验证后会执行现成的方法,所有接口调用都必须在配置接口获得结果之后,配置是一个客户端的异步操作//所以如果需要在页面加载时就调用相关接口,则须把相关接口放在准备函数中调用来确保正确执行//wx.ready(函数(){//参数是后台传过来的,签名加密,随机数,时间戳等全部后台处理好   var appId=" $ {appId}”;   var timeStamp=" ${时间戳}”;   var nonceStr=" $ {nonceStr}”;   var prepay_id=" $ {prepay_id}”;//之前参数名叫包,对应的api接口,因为包是关键字,被坑了一次   var=" $ {paySign} "迹象;//支付接口   函数>如果(payway.equals (“1“)) {   System.out.println(“- - - - - - - - - - -支付宝支付- - - - - - - - - - - -产生绯闻;);   request.setAttribute (“WIDout_trade_no" WIDout_trade_no);//订单号   request.setAttribute (“WIDsubject" WIDsubject);//订单名称   request.setAttribute (“WIDtotal_fee" WIDtotal_fee);//付款金额   request.setAttribute (“WIDshow_url" WIDshow_url);//商品链接   request.setAttribute (“WIDbody",““);//商品描述,可空   返回“alipayapi";   }else if (payway.equals (“2“)) {   System.out.println(“- - - - - - - - - - -微信支付- - - - - - - - - - - -产生绯闻;);//1,通过网页授权接口,获取到的openid   字符串openid=request.getSession () .getAttribute (“openid") +““;//处理价格单位为:分(请自行处理)   WIDtotal_fee=?”;   字符串preid=getPrepayid (WIDout_trade_no WIDtotal_fee, openid);//获取预支付标示   System.out.println(“预支付标示:- - - - - - - - - - - - - - - - -“+ preid);//APPID   字符串appId=Common.appid;   request.setAttribute (“appId" appId);//时间戳   时间戳字符串=(System.currentTimeMillis ()/1000) +““;   request.setAttribute (“timeStamp"、时间戳);//随机字符串   字符串nonceStr=Common.randString (16) .toString ();   request.setAttribute (“nonceStr" nonceStr);//预支付标识   request.setAttribute (“prepay_id"“prepay_id=? preid);//加密方式   request.setAttribute (“signType",“MD5");//组装地图用于生成的迹象   String> Map<字符串;地图=new HashMap<字符串,String> ();   map.put (“appId" appId);   map.put (“timeStamp"、时间戳);   map.put (“nonceStr" nonceStr);   map.put (“package"“prepay_id=? preid);   map.put (“signType",“MD5");      request.setAttribute (“paySign"常见。号(地图,Common.MchSecret));//签名   返回“weixinpay";   其他}{   返回“error";   }      

使用java如何实现一个微信H5支付功能