成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

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

瀏覽:206日期: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 微信支付和微信退款內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: 微信
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
在线日韩欧美| 一区二区三区在线不卡| 亚洲青青青在线视频| 91蜜桃在线免费视频| 欧美刺激脚交jootjob| 国产又粗又猛又爽又黄91精品| 在线观看不卡一区| 蜜桃久久久久久| 在线视频一区二区三区| 日韩成人一区二区三区在线观看| 美日韩精品视频| 日韩成人精品视频| 精品视频在线免费| 国产一区激情在线| 日韩亚洲欧美一区| 国产成人综合亚洲网站| 日韩一区二区在线观看视频| 风间由美一区二区三区在线观看| 日韩女优电影在线观看| av电影天堂一区二区在线观看| 精品少妇一区二区三区在线播放 | 国产清纯在线一区二区www| 99久久综合99久久综合网站| 久久色.com| 国产在线一区二区三区四区| 亚洲视频狠狠干| 国产精品有限公司| 日本欧美久久久久免费播放网| 在线免费观看不卡av| 国产一区二区福利| 久久免费国产精品| 国产一区二区三区无遮挡 | 亚洲国产视频一区二区| 久久精品主播| 国内精品久久久久影院一蜜桃| 91精品国产乱| 91免费国产在线观看| 中文字幕日韩欧美一区二区三区| 亚洲精品乱码| 性做久久久久久久久| 在线精品亚洲一区二区不卡| 国产一区二区福利| 国产日韩欧美综合一区| 亚洲日本成人| 日本怡春院一区二区| 欧美一区三区二区| 欧美日韩亚洲一区二区三区四区| 伊人色综合久久天天人手人婷| 狼狼综合久久久久综合网| 经典一区二区三区| 久久嫩草精品久久久精品一| 亚洲美女色禁图| 免费在线一区观看| 精品国产一区二区三区忘忧草| 国产精品99一区二区| 性久久久久久久| 4438x成人网最大色成网站| 91丨九色丨蝌蚪丨老版| 亚洲综合网站在线观看| 欧美狂野另类xxxxoooo| 欧美日韩国产精品一卡| 亚洲成人www| 日韩欧美成人激情| 在线视频精品| 国产成人在线影院| 综合在线观看色| 欧美色电影在线| 欧美一区综合| 三级在线观看一区二区| 精品福利av导航| 中文国产一区| 国产乱子伦视频一区二区三区| 欧美国产成人精品| 久久精品欧美| 91亚洲精品乱码久久久久久蜜桃| 亚洲午夜在线电影| 精品理论电影在线观看| 日韩午夜黄色| 国产91丝袜在线播放九色| 一区二区三区蜜桃| 日韩精品中午字幕| 亚洲免费影视| caoporm超碰国产精品| 亚洲成人av一区二区三区| 日韩精品中午字幕| 久久久一本精品99久久精品66| 成人网页在线观看| 亚洲18女电影在线观看| 久久人人爽爽爽人久久久| 久久精品二区三区| 91免费看视频| 久久99精品国产麻豆不卡| 国产精品久99| 日韩一区二区三区电影在线观看 | 麻豆成人免费电影| 国产欧美日本一区视频| 色乱码一区二区三区88| 欧美精品自拍| 国产在线精品不卡| 一区二区理论电影在线观看| 欧美电影免费观看高清完整版| 免播放器亚洲| 欧美日韩p片| 国产精品亚洲视频| 亚洲五月六月丁香激情| 久久综合网色—综合色88| 久久亚洲国产精品日日av夜夜| 欧美天堂亚洲电影院在线观看| 国产一区二区三区在线观看免费| 亚洲美女屁股眼交3| 精品国产精品网麻豆系列| 在线看不卡av| 夜夜嗨av一区二区三区网站四季av| 国产成人免费网站| 爽好久久久欧美精品| 国产精品美女视频| 日韩欧美中文字幕公布| 久久久久久久波多野高潮日日| 国产精品v欧美精品v日韩精品| 国产99精品国产| 男人操女人的视频在线观看欧美| 亚洲精品成人精品456| 日本一区二区三区在线观看| 91精品国产免费| 欧美在线视频日韩| 国产美女在线精品免费观看| 欧美日韩国产欧| 成人va在线观看| 精品在线你懂的| 天堂在线亚洲视频| 一区二区在线看| 亚洲欧洲国产日韩| 国产三级精品视频| 欧美tk—视频vk| 欧美一区日本一区韩国一区| 欧美性猛片xxxx免费看久爱| 美女黄网久久| 国产亚洲亚洲| 亚洲成人中文| 国产一区观看| 97精品久久久午夜一区二区三区| 国产99久久久国产精品潘金网站| 久久精品噜噜噜成人88aⅴ| 亚洲午夜在线观看视频在线| 亚洲少妇最新在线视频| 欧美国产视频在线| 国产亚洲欧洲一区高清在线观看| 欧美大尺度电影在线| 欧美一区二区成人| 555夜色666亚洲国产免| 欧美日韩精品免费| 欧美日韩中文国产| 欧美日韩免费电影| 欧美三级日本三级少妇99| 欧美在线观看视频一区二区三区| 久久精品中文字幕一区二区三区| 亚洲欧美日本日韩| 香蕉精品999视频一区二区| 99成人精品| 亚洲久色影视| 国产欧美韩日| 亚洲一区二区精品在线| 国产精品免费在线| 免费一区视频| 亚洲欧美卡通另类91av| 先锋影音国产精品| 一本大道综合伊人精品热热| 色悠久久久久综合欧美99| 色综合久久九月婷婷色综合| 久久一综合视频| 欧美性感一类影片在线播放| 欧美亚洲日本国产| 欧美日韩色综合| 欧美精三区欧美精三区| 欧美一区二区黄色| 精品88久久久久88久久久| 久久九九全国免费| 国产精品免费av| 亚洲精品欧美综合四区| 亚洲妇熟xx妇色黄| 免费人成黄页网站在线一区二区| 美美哒免费高清在线观看视频一区二区| 免费av网站大全久久| 国产一区 二区| 波多野结衣精品在线| 欧美日本一区二区视频在线观看| 精品999成人| 国产伦精品一区二区三区视频黑人 | 国产ts人妖一区二区| 东方欧美亚洲色图在线| 99久久99久久精品国产片果冻| 午夜国产精品视频免费体验区| 在线成人黄色| 国产欧美日韩综合精品二区| 久久婷婷亚洲| 欧美日韩二区三区| 欧美精品一区二区久久久| 国产日产欧产精品推荐色| 亚洲欧美偷拍另类a∨色屁股| 亚洲午夜一二三区视频|