介绍
今天就跟大家聊聊有关使用Java怎么实现一个微信支付和微信退款功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
,/* * ,,*,微信统一下单接口 ,,* @return ,,*/@RequestMapping才能(value =,“/doUnifiedOrder",, method =, RequestMethod.POST) public 才能;ResponseBean  doUnifiedOrder (@RequestBody Map<字符串,Object>,点播),{ ,,,Map resultMap=new HashMap (); ,,,String openid =,(字符串),req.get (“openId"); ,,,WXPay WXPay =零; ,,,try { ,,,,,//初始化证书 ,,,,,myConfig.initCert (); ,,,,,wxpay=, new wxpay (myConfig); ,,,},catch (Exception e), { ,,,,,e.printStackTrace (); ,,,} ,,,//生成的随机字符串 ,,,String nonce_str =, WXPayUtil.generateNonceStr (); ,,,//获取客户端的ip地址 ,,,//获取本机的ip地址 ,,,InetAddress addr =,空; ,,,try { ,,,,,addr =, InetAddress.getLocalHost (); ,,,},catch (UnknownHostException e), { ,,,,,e.printStackTrace (); ,,,} ,,,//支付金额,需要转成字符串类型,否则后面的签名会失败 ,,,String payOutMoney =, WxMoney.changeY2F (String.valueOf (req.get (“money"))); ,,,String tradeName =,(字符串),req.get (“tradeName"); ,,,如果(商品名称!=null&, tradeName.length()在0){ 还有,,,}{ ,,,,,tradeName =,“课程支付“; ,,,} ,,,String body =,商品名称; ,,,//商户订单号 ,,,String out_trade_no=, WXPayUtil.generateNonceStr (); ,,,//统一下单接口参数 ,,,HashMap<字符串,String>, data =, new HashMap<字符串,String> (); ,,,data.put (“appid",,你的appid); ,,,data.put (“mch_id",,商户id); ,,,data.put (“nonce_str",, nonce_str); ,,,data.put (“body",,身体); ,,,data.put (“out_trade_no" out_trade_no); ,,,data.put (“total_fee",, payOutMoney); ,,,data.put (“spbill_create_ip",,“127.0.0.1"); ,,,data.put (“notify_url",,回调地址); ,,,data.put (“trade_type",“JSAPI"); ,,,data.put (“openid",, openid); ,,,try { ,,,,,Map<字符串,String>, rMap =, wxpay.unifiedOrder(数据); ,,,,,String return_code =,(字符串),rMap.get (“return_code"); ,,,,,String result_code =,(字符串),rMap.get (“result_code"); ,,,,,String nonceStr =, WXPayUtil.generateNonceStr (); ,,,,,resultMap.put (“nonceStr",, nonceStr); ,,,,,Long timeStamp =, System.currentTimeMillis (),/, 1000; ,,,,,if (“SUCCESS" .equals (return_code),,,, return_code.equals (result_code)), { ,,,,,,,,,String prepayid =, rMap.get (“prepay_id"); ,,,,,,,,,resultMap.put (“package",,“prepay_id=? prepayid); ,,,,,,,,,resultMap.put (“signType",,“MD5"); ,,,,,,,,,//这边要将返回的时间戳转化成字符串,不然小程序端调用wx.requestPayment方法会报签名错误 ,,,,,,,,,resultMap.put (“timeStamp",, timeStamp +,““); ,,,,,,,,,//再次签的名,这个签名用于小程序端调用wx.requesetPayment方法 ,,,,,,,,,resultMap.put (“appId", myConfig.getAppID ()); ,,,,,,,,,String sign =, WXPayUtil.generateSignature (resultMap, myConfig.getKey ()); null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null使用Java怎么实现一个微信支付和微信退款功能