日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Java后臺實現微信支付和微信退款

瀏覽:248日期:2022-05-30 16:37:23

微信支付流程

都是我自己工作中開發的,親測可用,不喜勿噴。

controller中我是這么寫的,你們需要根據自己的業務需求改動。ResponseBean是我自己封裝的,你們可以改成你們想要的形式。

/** * 微信統一下單接口 * @return */ @RequestMapping(value = '/doUnifiedOrder', method = RequestMethod.POST) public ResponseBean doUnifiedOrder(@RequestBody Map<String,Object> req) { Map resultMap=new HashMap(); String openid = (String) req.get('openId'); WXPay wxpay =null; try { //初始化證書 myConfig.initCert(); wxpay= new WXPay(myConfig); } catch (Exception e) { e.printStackTrace(); } //生成的隨機字符串 String nonce_str = WXPayUtil.generateNonceStr(); //獲取客戶端的ip地址 //獲取本機的ip地址 InetAddress addr = null; try { addr = InetAddress.getLocalHost(); } catch (UnknownHostException e) { e.printStackTrace(); } //支付金額,需要轉成字符串類型,否則后面的簽名會失敗 String payOutMoney = WxMoney.changeY2F(String.valueOf(req.get('money'))); String tradeName = (String) req.get('tradeName'); if(tradeName!=null&&tradeName.length()>0){ }else{ tradeName = '課程支付'; } String body = tradeName; //商戶訂單號 String out_trade_no= WXPayUtil.generateNonceStr(); //統一下單接口參數 HashMap<String, String> data = new HashMap<String, String>(); data.put('appid', 你的appid); data.put('mch_id', 商戶id); data.put('nonce_str', nonce_str); data.put('body', 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, String> rMap = wxpay.unifiedOrder(data); String return_code = (String) rMap.get('return_code'); String result_code = (String) 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()); resultMap.put('paySign', sign); resultMap.put('out_trade_no',out_trade_no); ResponseBean responseBean = new ResponseBean(HttpStatus.OK.value(),'微信支付',resultMap); return responseBean; }else{ResponseBean responseBean = new ResponseBean(HttpStatus.OK.value(),'微信支付失敗','微信支付失敗');return responseBean; } } catch (Exception e) { ResponseBean responseBean = new ResponseBean(HttpStatus.OK.value(),'微信支付失敗','微信支付失敗'); e.printStackTrace(); return responseBean; } }

微信退款代碼(需要傳退款的訂單id)

public ResponseBean refund(Map<String, Object> req) { Map resultMap=new HashMap(); String buyId = (String) req.get('buyId'); WXPay wxpay =null; try { myConfig.initCert();//初始化證書 wxpay= new WXPay(myConfig); } catch (Exception e) { e.printStackTrace(); } //生成的隨機字符串 String nonce_str = WXPayUtil.generateNonceStr(); //獲取客戶端的ip地址 //獲取本機的ip地址 InetAddress addr = null; try { addr = InetAddress.getLocalHost(); } catch (UnknownHostException e) { e.printStackTrace(); } //支付金額,需要轉成字符串類型,否則后面的簽名會失敗// int total_fee= (int) req.get('money'); String payOutMoney = WxMoney.changeY2F(String.valueOf(req.get('money')));// String body = (String) req.get('z'); //商戶訂單號 String out_trade_no= WXPayUtil.generateNonceStr(); //統一下單接口參數 HashMap<String, String> data = new HashMap<String, String>(); try { data.put('appid', myConfig.getAppID()); data.put('mch_id', myConfig.getMchID()); data.put('nonce_str', nonce_str); data.put('sign_type', 'MD5'); data.put('out_trade_no',buyId);//微信訂單號 data.put('out_refund_no', out_trade_no);//商戶退款單號 data.put('total_fee',payOutMoney);//支付金額,微信支付提交的金額是不能帶小數點的,且是以分為單位,這邊需要轉成字符串類型,否則后面的簽名會失敗 data.put('refund_fee',payOutMoney);//退款總金額,訂單總金額,單位為分,只能為整數 //MD5運算生成簽名,這里是第一次簽名,用于調用統一下單接口 String sign = WXPayUtil.generateSignature(data, myConfig.getKey()); data.put('sign', sign); Map<String, String> rMap = wxpay.refund(data); String return_code = (String) rMap.get('return_code'); String result_code = (String) rMap.get('result_code'); Long timeStamp = System.currentTimeMillis() / 1000; if ('SUCCESS'.equals(return_code) && return_code.equals(result_code)) {ResponseBean responseBean = new ResponseBean(HttpStatus.OK.value(),'微信退款成功',rMap);return responseBean; }else{ResponseBean responseBean = new ResponseBean(HttpStatus.OK.value(),'微信退款失敗','微信支付失敗');return responseBean; } } catch (Exception e) { ResponseBean responseBean = new ResponseBean(HttpStatus.OK.value(),'微信退款失敗','微信支付失敗'); e.printStackTrace(); return responseBean; } }

需要用到的工具類

Java后臺實現微信支付和微信退款

然后在MyConfig中配置一下你們的小程序參數就行了,如果需要添加退款功能必須配置商戶證書(對應在你項目中的位置)。不需要的話就把initCert方法去掉。

public class MyConfig extends WXPayConfig { @Value('${res.imgPath}') public String imgPath; private byte[] certData; @Override public String getAppID() { return '你的小程序id'; } @Override public String getMchID() { return '商戶id'; } @Override public String getKey() { return '商戶秘鑰'; } @Override public InputStream getCertStream() { ByteArrayInputStream certBis = new ByteArrayInputStream(this.certData); return certBis; } @Override public int getHttpConnectTimeoutMs() { return 8000; } @Override public int getHttpReadTimeoutMs() { return 10000; } @Override IWXPayDomain getWXPayDomain() { return new IWXPayDomain() { @Override public void report(String domain, long elapsedTimeMillis, Exception ex) { } @Override public DomainInfo getDomain(WXPayConfig config) {return new DomainInfo('api.mch.weixin.qq.com', false); } }; } @Override public void initCert() throws Exception { String certPath = this.imgPath+'/upload/cert/'+'apiclient_cert.p12';//從微信商戶平臺下載的安全證書存放的目錄 System.out.println(certPath); File file = new File(certPath); InputStream certStream = new FileInputStream(file); this.certData = new byte[(int) file.length()]; certStream.read(this.certData); certStream.close(); }}

到此這篇關于Java后臺實現微信支付和微信退款的文章就介紹到這了,更多相關Java 微信支付和微信退款內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: 微信
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
卡一卡二国产精品| 亚洲精品激情| 欧美黑人做爰爽爽爽| 国产日韩三级| 午夜天堂精品久久久久| 国产亚洲久久| 国产一区丝袜| 激情五月综合| 日本综合精品一区| 麻豆91精品91久久久的内涵| 国产成人在线中文字幕| 久久久精品五月天| 另类国产ts人妖高潮视频| 日本久久二区| 日韩电影免费网站| 蜜桃一区二区三区在线观看| 久久精品凹凸全集| 国产在线观看www| 国产精品色网| 四虎精品一区二区免费| 麻豆视频一区| 欧美日韩国产一区二区三区不卡| 视频在线观看国产精品| 日本a级不卡| 中文字幕成在线观看| 激情久久久久久久| 91亚洲精品在看在线观看高清| 欧美国产另类| 亚洲欧洲一区二区天堂久久| 欧美日韩一区自拍| 91精品国产调教在线观看| 亚洲一区二区三区久久久| 国产精品白丝av嫩草影院| 亚洲高清二区| 蜜桃视频一区二区三区在线观看| 国产精品观看| 午夜精品免费| 国产一区一一区高清不卡| 亚洲一区二区动漫| 精品国产欧美日韩| 亚洲五月综合| 97精品国产| 日本麻豆一区二区三区视频| 亚洲性色av| 国产精品一线| 丝袜诱惑制服诱惑色一区在线观看| 欧美精品1区| 在线视频亚洲欧美中文| 久久精品免费一区二区三区| 日本色综合中文字幕| 亚洲h色精品| 国产一区二区三区网| 丝袜a∨在线一区二区三区不卡 | 中文另类视频| 欧美一区自拍| 亚洲欧洲一区二区天堂久久| 久久免费影院| 日韩和欧美一区二区| 亚洲成a人片| 国产精品18| 亚洲精品观看| 欧美一区二区三区高清视频| 免费一区二区三区在线视频| 亚洲大全视频| 国产精品蜜芽在线观看| 91麻豆精品| 免费在线观看视频一区| 91精品蜜臀一区二区三区在线| 97久久亚洲| 免费欧美日韩| 欧美日中文字幕| 国产aⅴ精品一区二区四区| 91久久精品无嫩草影院| 免播放器亚洲一区| 99久久久久国产精品| 精品久久99| 久久a爱视频| 欧美日韩一区二区高清| 自拍日韩欧美| 9国产精品视频| 亚洲女同一区| 五月精品视频| 亚洲韩日在线| 日韩啪啪电影网| 中文一区一区三区高中清不卡免费| 国产精久久久| 久久99精品久久久野外观看| 国产欧美日韩亚洲一区二区三区| 婷婷综合电影| 日韩精品久久理论片| 日韩精品免费视频一区二区三区| 久久最新视频| 亚洲精品自拍| 亚洲人成亚洲精品| 影音先锋国产精品| 久久久人人人| 九九精品调教| 亚洲韩日在线| 亚洲少妇在线| 久久国产精品久久w女人spa| 久久亚洲风情| 蜜臀国产一区二区三区在线播放| 亚洲综合五月| 日韩高清欧美激情| 国产精品一区二区中文字幕| 国产另类在线| 精品国产一区二区三区性色av| 精品国产一区二区三区2021| 国产日韩欧美一区二区三区 | 你懂的国产精品| 久久不见久久见免费视频7| 国产成人精品亚洲线观看| 国产伊人久久| 女人av一区| 日本亚洲视频在线| 97久久精品| 精品高清久久| 秋霞国产精品| 免费在线看一区| 久久狠狠久久| 国产成人1区| 亚洲欧洲另类| 国产欧美综合一区二区三区| 精品福利久久久| 精品在线91| 日韩一区二区三区在线看| 日本视频一区二区| 最近高清中文在线字幕在线观看1| 久久九九精品| 亚洲我射av| 久久av影视| 999国产精品视频| 一本综合精品| 国产伦久视频在线观看| 视频一区二区中文字幕| 欧美aaaaaa午夜精品| 亚洲va中文在线播放免费| 久久最新视频| 国产一区二区三区久久| 亚洲天堂成人| 日本91福利区| 亚洲福利久久| 欧美国产三级| 欧美日韩国产在线一区| 国产精品天堂蜜av在线播放| 欧美精选视频一区二区| 亚洲资源网站| 欧美日韩免费观看视频| 日本不卡视频在线观看| 91精品xxx在线观看| 日本欧美韩国一区三区| 群体交乱之放荡娇妻一区二区| 亚洲精品看片| 一区二区三区视频免费观看| 国产精品久久久免费| 99视频精品免费观看| 风间由美中文字幕在线看视频国产欧美| 欧美日一区二区| 精品久久久久中文字幕小说| 在线精品亚洲| 成人福利av| 欧美日韩亚洲一区三区| 欧美日韩精品免费观看视频完整| 久久精品国产久精国产爱| 亚洲人成毛片在线播放女女| 久久亚洲专区| 成人在线观看免费视频| 日韩福利在线观看| 亚洲欧美日韩国产综合精品二区| 福利一区和二区| 青青草国产成人99久久| 久久国产高清| 亚洲二区在线| 日韩欧美二区| 欧美国产先锋| 日韩一区二区三区精品视频第3页 日韩一区二区三区免费视频 | bbw在线视频| 国产精品分类| 日本免费一区二区视频| 丝瓜av网站精品一区二区| 久久精品国产www456c0m| 国产va免费精品观看精品视频| 日韩高清在线不卡| 蜜臀久久99精品久久久画质超高清| 激情欧美国产欧美| 国内精品美女在线观看| 国产精品2区| 欧美日韩1区| 一区二区电影| 首页欧美精品中文字幕| 国产字幕视频一区二区| 欧美国产偷国产精品三区| 国产精品自拍区| 久久精品97| 国产日韩视频在线| 久久不卡日韩美女| 精品亚洲a∨| 成人午夜毛片| 国产白浆在线免费观看| 伊人久久在线|