特殊格式的 汇潮支付接口对接
生活随笔
收集整理的這篇文章主要介紹了
特殊格式的 汇潮支付接口对接
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
? ? 在公司業(yè)務(wù)中,對接匯潮支付,--------該需求是調(diào)用匯潮的支付接口,他們作為中臺(tái),由他們調(diào)用支付寶接口
? ? 在異步回調(diào)的時(shí)候,遇到了“參數(shù)通過?post?方式提交,?Content-Type:?application/x-www-form-urlencoded?”,回調(diào)參數(shù)接收不到,無法轉(zhuǎn)化,的問題。
? ? ? 解決思路如下,以往都是用json的方式,所以在controller里面寫了@RequestBody,實(shí)際是,直接用一個(gè)對象接收,不用寫@RequestBody,然后下面在serviceImpl里面,代碼轉(zhuǎn)換。
? ? ? ?貼出代碼
/** * 支付方式異步通知接口 * @param getHcPayRequest 異步通知獲得json字符串 * @return 異步通知結(jié)果 success/fail */ /*匯潮支付--支付方式異步通知接口*/ public String notifyInfos(HcPayRequest getHcPayRequest) {logger.info("匯潮異步回調(diào)參數(shù)" + JSON.toJSONString(getHcPayRequest)); ParserConfig.getGlobalInstance().setAutoTypeSupport(true);//針對fastjson解析 mq里面的redis獲取值的解析,不然會(huì)出錯(cuò) String merchantOutOrderNo =getHcPayRequest.getMerchantOutOrderNo();;//商戶訂單號(hào) String merid = getHcPayRequest.getMerid();//商戶號(hào) String msg =getHcPayRequest.getMsg();//訂單的詳細(xì)信息 msg->pay Money String res = null; try {res = URLDecoder.decode(msg,"UTF-8"); } catch (UnsupportedEncodingException e) {logger.error("匯潮異步回調(diào)參數(shù)解碼失敗-" + JSON.toJSONString(msg)); e.printStackTrace(); }JSONObject jsonObject = JSON.parseObject(res); System.out.println(getHcPayRequest.toString()); String orderNo =getHcPayRequest.getOrderNo();//平臺(tái)訂單號(hào) String orderMoney = (String)jsonObject.get( "payMoney" );// 支付金額 /** * 通知參數(shù)樣例: * 在匯潮的接口文檔里面有這個(gè) * merchantOutOrderNo=2017091316410597&merid= * yft2017082500005&msg={"payMoney":"1.00"}&noncestr=adfasdfqwer&orderNo=20170913164 * 1128501&payResult=1&sign= 078c2637c96d714880fdb3364d440b51 */ String trasactionId = orderNo;//平臺(tái)訂單編號(hào) 比如支付寶平臺(tái) try {if (redisTemplate.hasKey(Constants.HC_PREFIX + trasactionId)) { //放進(jìn)Redis logger.info("hcpay有重復(fù)通知" + trasactionId); return "success"; } else {redisTemplate.opsForValue().set(Constants.HC_PREFIX + trasactionId, "1", 2880, TimeUnit.MINUTES); }} catch (Exception e) {e.printStackTrace(); logger.error("hcpay寫redis出錯(cuò)" + e.getMessage()); }HcPayRequest hcPayRequestnew = new HcPayRequest(); hcPayRequestnew.setMerchantOutOrderNo(merchantOutOrderNo); hcPayRequestnew.setOrderNo(orderNo); hcPayRequestnew.setAmount(orderMoney); EvaFeeInfo evaFeeInfoNew =(EvaFeeInfo)redisTemplate.opsForValue().get(Constants.HC_PREFIX +Constants.PAY_PG+ merchantOutOrderNo); if(evaFeeInfoNew!=null){logger.info("hc匯潮支付redis獲取的param" + JSON.toJSONString(evaFeeInfoNew)); if (Constants.PAY_PG.equals(evaFeeInfoNew.getFlag())) {//評估費(fèi) EvaFeeInfo evaFeeInfo = new EvaFeeInfo(); evaFeeInfo.setEvaAmount(evaFeeInfoNew.getEvaAmount());// evaFeeInfo.setUserId(evaFeeInfoNew.getUserId());// evaFeeInfo.setMobile(evaFeeInfoNew.getMobile());// evaFeeInfo.setCouponId(evaFeeInfoNew.getCouponId());// evaFeeInfo.setRepayNo(orderNo); evaFeeInfo.setTradeNo(evaFeeInfoNew.getTradeNo());//商家唯一標(biāo)示 訂單號(hào) evaFeeInfo.setCurrentCash(evaFeeInfoNew.getCurrentCash());// evaFeeInfo.setIsUseCash(evaFeeInfoNew.getIsUseCash());// hcPayRequestnew.setFlag(Constants.PAY_PG); try {logger.info("評估費(fèi)發(fā)送rabbitmq"); rabbitmqProducerProxy.convertAndSend("evaFee.ibank", evaFeeInfo); } catch (Exception e) {e.printStackTrace(); }}}RecFeeInfo recFeeInfoNew =(RecFeeInfo)redisTemplate.opsForValue().get(Constants.HC_PREFIX +Constants.PAY_TJ+merchantOutOrderNo); if(recFeeInfoNew!=null){logger.info("hc匯潮支付redis獲取的param" + JSON.toJSONString(recFeeInfoNew)); if (Constants.PAY_TJ.equals(recFeeInfoNew.getFlag())) {//推薦費(fèi) RecFeeInfo recFeeInfo = new RecFeeInfo(); recFeeInfo.setRecAmount(recFeeInfoNew.getRecAmount());// recFeeInfo.setUserId(recFeeInfoNew.getUserId());// recFeeInfo.setMobile(recFeeInfoNew.getMobile());// recFeeInfo.setBorrowPeriods(recFeeInfoNew.getBorrowPeriods());//借款周期// recFeeInfo.setLoanAmount(recFeeInfoNew.getLoanAmount());// // recFeeInfo.setType(hcPayRequest.getType());-------------------------------------------- recFeeInfo.setRepayNo(orderNo);// recFeeInfo.setTradeNo(recFeeInfoNew.getTradeNo());//商家唯一標(biāo)示 訂單號(hào) recFeeInfo.setCouponId(recFeeInfoNew.getCouponId());// recFeeInfo.setAppCodeList(recFeeInfoNew.getAppCodeList());// recFeeInfo.setCurrentCash(recFeeInfoNew.getCurrentCash());// recFeeInfo.setIsUseCash(recFeeInfoNew.getIsUseCash());// hcPayRequestnew.setFlag(Constants.PAY_TJ); try {logger.info("推薦費(fèi)發(fā)送rabbitmq order"); rabbitmqProducerProxy.convertAndSend("recFee.ibank", recFeeInfo); //去掉 發(fā)給 user的推薦費(fèi) // logger.info("推薦費(fèi)發(fā)送rabbitmq user"); // rabbitmqProducerProxy.convertAndSend("recUser.ibank", recFeeInfo); } catch (Exception e) {e.printStackTrace(); }}}RechargeFeeInfo rechargeFeeInfoNew =(RechargeFeeInfo)redisTemplate.opsForValue().get(Constants.HC_PREFIX + Constants.PAY_XJ +merchantOutOrderNo); if(rechargeFeeInfoNew!=null){if(Constants.PAY_XJ.equals(rechargeFeeInfoNew.getFlag())){//充值現(xiàn)金券 RechargeFeeInfo rechargeFeeInfo = new RechargeFeeInfo(); rechargeFeeInfo.setAccountNumber(rechargeFeeInfoNew.getAccountNumber());//手機(jī)號(hào)// rechargeFeeInfo.setAmount(rechargeFeeInfoNew.getAmount());// rechargeFeeInfo.setCashId(rechargeFeeInfoNew.getCashId());// rechargeFeeInfo.setOperStatus(1);// /**充值是否成功 0:失敗 1:成功*/ rechargeFeeInfo.setRechargeFlowNo(orderNo); rechargeFeeInfo.setTradeNo(rechargeFeeInfoNew.getTradeNo());//商家唯一標(biāo)示 訂單號(hào) rechargeFeeInfo.setStatusMsg("1");//匯潮支付 1 為成功(目前只有成功才通知) hcPayRequestnew.setFlag(Constants.PAY_XJ); try {logger.info("hc匯潮支付充值現(xiàn)金券發(fā)送rabbitmq order"); rabbitmqProducerProxy.convertAndSend("rechargeFee.ibank", rechargeFeeInfo); } catch (Exception e) {e.printStackTrace(); logger.error("hc匯潮支付現(xiàn)金券充值 異常", e); }}}payLogService.saveHcPay(hcPayRequestnew,Constants.REPAY_STATUS_ZERO ); logger.info("匯潮支付支付成功" + orderNo); return "success"; } /** * 支付方式異步通知接口 * @param getHcPayRequest 異步通知獲得json字符串 * @return 異步通知結(jié)果 success/fail */ /*匯潮支付--支付方式異步通知接口*/ @RequestMapping(value = "/notifyInfos",method = RequestMethod.POST) public String notifyInfos( HcPayRequest getHcPayRequest){String toSuccessOrFail = hcPayService.notifyInfos(getHcPayRequest); return toSuccessOrFail; }總結(jié)
以上是生活随笔為你收集整理的特殊格式的 汇潮支付接口对接的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jar包冲突常用的解决方法
- 下一篇: HandlerInterceptor拦截