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

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

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

瀏覽:253日期: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久久,三上悠亚国产精品一区二区三区
精品成人免费一区二区在线播放| 国产精品多人| 97精品视频在线看| 国产精品久av福利在线观看| 国产精品主播| 欧美精品福利| 亚洲影院天堂中文av色| 久久成人一区| 亚洲毛片在线| 蜜桃视频在线观看一区二区| 中文字幕亚洲精品乱码| 亚洲精品美女| 日韩高清电影一区| 久久精品av麻豆的观看方式| 欧美xxxx性| 国产欧美日韩在线一区二区| 国产精品男女| 精品精品99| 久久精品影视| 99pao成人国产永久免费视频| 制服诱惑一区二区| 欧美日韩国产免费观看视频| 不卡在线一区| 国产亚洲高清视频| 蜜桃久久久久久久| 7777精品| 福利一区在线| 中日韩男男gay无套| 综合欧美精品| 久久不见久久见免费视频7| 国产精品伦理久久久久久| 国产白浆在线免费观看| 日本激情一区| 久久一级电影| 亚洲欧美网站在线观看| 老司机精品视频网| 日产精品一区二区| 久久蜜桃精品| 久久亚洲一区| 国产精品大片免费观看| 成人在线免费观看91| 日韩不卡在线| 蜜桃免费网站一区二区三区| 国产乱人伦丫前精品视频 | 亚洲激情社区| 精品少妇一区| 久久在线免费| 亚洲少妇诱惑| 日韩黄色av| 97在线精品| 图片区亚洲欧美小说区| 亚洲精一区二区三区| 亚洲日本免费电影| 国产精久久久| 香蕉久久精品| 欧美亚洲综合视频| 综合国产视频| 国产手机视频一区二区 | 黄色aa久久| 欧美亚洲免费| 日本亚洲不卡| 免费人成在线不卡| 日本视频中文字幕一区二区三区| 国产福利一区二区三区在线播放| 欧美综合精品| 国产精品国码视频| 九九99久久精品在免费线bt| 丰满少妇一区| 日韩在线短视频| 日韩国产高清在线| 国产一区二区三区日韩精品 | 日韩一区三区| 亚洲在线国产日韩欧美| 精品精品99| 亚洲香蕉久久| 三上悠亚国产精品一区二区三区| 亚洲色图综合| 免费在线亚洲欧美| 石原莉奈一区二区三区在线观看| 免费在线欧美黄色| 亚洲激情欧美| 亚洲精品福利电影| 国产亚洲一区二区三区不卡| 欧美亚洲激情| 欧美a级一区二区| 亚州av一区| 午夜国产精品视频| 国产精品福利在线观看播放| 91精品国产经典在线观看| 亚洲少妇诱惑| 99热精品久久| 色狠狠一区二区三区| 欧美日韩国产高清| 日韩不卡在线| 91精品国产经典在线观看| 久久国产日本精品| 婷婷精品在线| 日韩欧美一区二区三区在线观看 | 日韩大片在线观看| 亚洲在线国产日韩欧美| sm捆绑调教国产免费网站在线观看 | 欧美亚洲网站| 日韩一区二区免费看| 亚洲欧美日韩国产一区二区| 国产精品xxx在线观看| 日韩专区在线视频| 午夜在线一区| 婷婷成人综合| 日韩av一级| 国产中文在线播放| 精品高清久久| 国产精品久久777777毛茸茸| 亚洲另类av| 爽好多水快深点欧美视频| 国产一区亚洲| 久久九九99| 亚洲天堂一区二区| 免费在线小视频| 日本精品黄色| 久久九九精品| 日本不卡高清视频| 久久午夜影视| 亚洲毛片在线免费| 欧美91精品| 国产精品一站二站| 日本不卡视频在线观看| 99热免费精品| 日韩一区二区三区免费播放| 日本精品黄色| 日韩电影在线视频| 亚洲黄色中文字幕| 青青青免费在线视频| 岛国av在线播放| 综合亚洲视频| 四季av一区二区凹凸精品| 亚洲综合国产| a国产在线视频| 少妇高潮一区二区三区99| 91视频久久| 亚洲少妇诱惑| 97精品国产| 国产亚洲欧美日韩在线观看一区二区 | 综合国产精品| 蜜臀va亚洲va欧美va天堂 | 国产精品综合| 国产精品v一区二区三区| 鲁大师精品99久久久| 国产精品久久久免费| 日韩一区二区三区免费| 午夜宅男久久久| 国产精品亚洲人成在99www| 欧美三级精品| 久久国产精品久久w女人spa| 日韩亚洲在线| 国产美女撒尿一区二区| 成人在线网站| 久久国产免费看| 久久亚洲成人| 国产精品多人| 蜜桃伊人久久| 精品国产a一区二区三区v免费| 999国产精品| 91成人在线| 欧美精品激情| 精品久久久久中文字幕小说| 久久精品99国产精品日本| 日韩中文字幕1| 亚洲一卡久久| 国产毛片久久| 伊人www22综合色| 日韩福利视频一区| 国产精品久久观看| 久久精品国产亚洲夜色av网站| 1000部精品久久久久久久久| 狠狠久久伊人| 99视频精品免费观看| 欧美久久亚洲| 99久久精品网站| 蜜芽一区二区三区| 日本强好片久久久久久aaa| 国产一区丝袜| 亚洲一区区二区| 麻豆极品一区二区三区| 久久影视一区| 国产九九精品| 欧美 日韩 国产一区二区在线视频| 综合激情网...| 不卡一二三区| 99综合视频| 福利一区在线| 色88888久久久久久影院| 四虎在线精品| 亚洲永久字幕| 国产日韩一区二区三区在线| 欧美性感美女一区二区 | 国产美女久久| 日韩二区三区四区| 丝袜美腿一区二区三区| 黄色亚洲在线| 欧美日韩视频|