SpringBoot-RestTemplate传参请求第三方接口时,参数传不过去,因为我用了 Map<String, String> data = new HashMap<String, String>();这样是不行的,必须使用MultiValueMap<String, String> params= new LinkedMultiValueMap<>();传参。 package com.cn.wtsd.service; import com.alibaba.fastjson.JSONObject; import com.cn.wtsd.config.WanTongConfig; import com.cn.wtsd.constant.CodeConstant; import com.cn.wtsd.entity.ResultModel; import com.cn.wtsd.util.DESUtils; import com.cn.wtsd.util.SignUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpEntity; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestTemplate; import java.util.HashMap; import java.util.Map; /** * @program: Transaction * @description: 支付接口 * @author: hantao * @create: 2018-12-28 18:06 */ @Service public class PayService { @Autowired private RestTemplate restTemplate; public ResultModel pay(){ Map<String, String> map = new HashMap<String, String>(); map.put("OUTTRADENO", System.currentTimeMillis() + ""); map.put("PAYAMOUNT", "100"); map.put("PAYTYPE", "01"); map.put("CHANNEL", "01"); map.put("SOURCE", "02"); // map.put("OPENID", "02"); map.put("ORDERTITLE", "顾客付款"); map.put("ID", "100013100101"); map.put("TERMINALID", "YY100013100101"); String body=""; try { //参数加密 String encodeByCBC = DESUtils.encodeByCBC(WanTongConfig.ENCRVPTION_KEY, map); System.out.println("encodeByCBC:"+encodeByCBC); // SIGN加密 Map<String, String> requestMap = new HashMap<String, String>(); requestMap.put("PARTNERID", "100013"); requestMap.put("ENCRYPTEDDATA", encodeByCBC); String presign = SignUtil.creatSignContent(requestMap, "UTF-8", false); presign = presign + "&key="+WanTongConfig.SINGN_KEY; System.out.println("待签名的字符串:"+presign); String sign = SignUtil.md5(presign, "UTF-8"); System.out.println("sign:"+sign); // Map<String, String> data = new HashMap<String, String>(); // data.put("PARTNERID","100013"); // data.put("ENCRYPTEDDATA",encodeByCBC); // data.put("SIGN",sign); MultiValueMap<String, String> params= new LinkedMultiValueMap<>(); //添加请求的参数 params.add("PARTNERID", "100013"); //必传 params.add("ENCRYPTEDDATA", encodeByCBC); params.add("SIGN", sign); // HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(params); ResponseEntity<String> responseEntity=restTemplate.postForEntity(WanTongConfig.REQUEST_PAY_URL,params,String.class); body=responseEntity.getBody(); } catch (Exception e) { // e.printStackTrace(); return new ResultModel(CodeConstant.FAIL,"签名或参数加密失败"); } return new ResultModel(CodeConstant.SUCCESS,CodeConstant.SUCCESS_MSG,body); } }
SpringBoot-RestTemplate实现调用第三方API传参问题
最新推荐文章于 2024-08-10 11:21:24 发布