java对接银联商务公众号+服务窗支付(3)
生活随笔
收集整理的這篇文章主要介紹了
java对接银联商务公众号+服务窗支付(3)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
java實現銀聯商務公眾號+服務窗對接----訂單退款
本文對接銀聯商務公眾號+服務窗支付,實現支付下單、訂單查詢、訂單退款、退款查詢和訂單關閉幾個功能,使用到銀聯商務的公眾+服務窗支付接口規范,請自行百度下載。
在上兩篇支付下單和下單查詢中,已經實現公眾號下單支付和下單查詢功能的實現和接口的封裝,本篇將介紹退款接口的對接實現,并將我使用到的銀聯商務的請求接口和響應接口進行封裝,使用測試網頁輸出測試信息。
一、接口及代碼實現
1.訂單退款接口
1.1接口規范
接口規范請查看下載的銀聯商務公眾號+服務窗接口規范退款接口接口部分,這里不做展示。
1.2 代碼實現
1.2.1 UnifieRefundController代碼
1.2.2 refundserviceimpl代碼
本部分代碼為銀聯商務公眾號退款接口服務實現類。
public Map<String, Object> Refund(Map<String, Object> map) throws UnsupportedEncodingException {// TODO Auto-generated method stublogger.info("------------------refund--------------------------");Map<String, Object> reqmap = new HashMap<String, Object>(); //請求mapMap<String, Object> resp = new HashMap<String, Object>(); //響應respreqmap.put("mid", map.get("mid").toString()); //商戶號,前端傳入reqmap.put("tid", map.get("tid").toString()); //終端號reqmap.put("instMid",map.get("instMid").toString()); //業務類型reqmap.put("msgSrc", map.get("msgSrc").toString()); //消息來源reqmap.put("msgId", "UnionPay_F003"); reqmap.put("msgType", "refund"); //消息類型//報文請求時間String aligetTime = PayUtil.aligetTime();logger.info("請求時間aligetTime = " + aligetTime);reqmap.put("requestTimestamp", aligetTime); reqmap.put("merOrderId", map.get("merOrderId").toString()); //原商戶交易訂單號,前端傳入reqmap.put("refundAmount", map.get("refundAmount").toString()); //退款金額,前端傳入//下單時未上送分賬標識,上傳分賬標識,需進一步討論退款金額reqmap.put("refundDesc", "訂單退款"); //退款說明//生成退款訂單號String refundorderid = GGitUtil.createOrderID();StringBuffer buff = new StringBuffer(); buff.append(this.msgSrcId); //來源編號3194buff.append(refundorderid);reqmap.put("refundOrderId", buff.toString());//生成待簽名字符串并進行MD5加密String builderSignStr = "";try {builderSignStr = PayUtil.builderSignStr(reqmap,UnionPayConstants.MD5KEY);//signString = PayUtil.generateSignature(reqmap, UnionPayConstants.MD5KEY);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}reqmap.put("sign", builderSignStr);logger.info("reqmap= " + reqmap);String jsonstring = GGitUtil.MapToJson2(reqmap); //請求map轉成json stringlogger.info("發送refund post請求消息:" + jsonstring);//接收銀聯商務返回退款mapresp = unionpayrequest.dopost(UnionPayConstants.queryURL, jsonstring);return resp;}1.3測試結果
本文對所寫接口寫了測試網頁進行測試,如圖所示。封裝的銀聯商務響應接口中,返回商戶退款訂單號,第三方退款訂單號,消息類型、退款狀態等,其中退款狀態status為TRADE_SUCCESS,表示退款操作成功,此時查看微信支付記錄中,可以看到退款到賬信息。
總結
以上是生活随笔為你收集整理的java对接银联商务公众号+服务窗支付(3)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数学建模——光盘的数据容量
- 下一篇: LabVIEW利用闭回路控制开发自动化麻