Java SpringBoot POST请求三方接口 Star.hou

package com.example.test.www.demo.controller;

import com.example.test.www.demo.comm.ErrorCodeEnum;
import com.example.test.www.demo.comm.MD5;
import com.example.test.www.demo.comm.Result;
import com.example.test.www.demo.model.PayermaxModel;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.*;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;

import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;

@Slf4j
@RestController
public class Payermax {
//    秘钥
    private String key = "aaaaa";
    private String pay_url_dev = "https://pay-gate-uat.payermax.com/aggregate-pay-gate/api/gateway";
//  String pay_url_prod = "https://pay-gate.payermax.com/aggregate-pay-gate/api/gateway";
    RestTemplate restTemplate;

    @ResponseBody
    @RequestMapping(value = "/pay/payermax", method = RequestMethod.POST)
    public Result<Object> toPay(@RequestBody PayermaxModel payer) throws Exception {
//        构造签名
        TreeMap<String, String> tree = new TreeMap<>();
        tree.put("bizType", payer.getBizType());
        tree.put("merchantId", payer.getMerchantId());
        tree.put("version", payer.getVersion());
        tree.put("orderId", payer.getOrderId());
        String _sign = PayermaxModel.setMD5Sign(tree);
        log.info("MD5加密后的字符串为:" + _sign);
        payer.setSign(_sign);

//        国家对应支付方式参数S
        String co = payer.getCountryCode();
        Map<String, String> _pay_detail = new HashMap<>();
        switch (co){
            case "IN":
                _pay_detail.put("paymentType", "000");
            case "PH":
                _pay_detail.put("paymentType", "EWALLET");
        }
        _pay_detail.put("email", payer.getPaymentDetail().get("email"));
        log.info(String.valueOf(_pay_detail));
        payer.setPaymentDetail(_pay_detail);
//        国家对应支付方式参数E

//        payer.setPaymentDetail();
        log.info(String.valueOf(payer));
//        构造支付请求
        try {
            HashMap r = sendPostRequest(this.pay_url_dev, payer);
            return Result.successResult(r);
        } catch (Exception e)
        {
            log.error(e.toString());
            return Result.failResult(ErrorCodeEnum.BAD_REQUEST, e.toString());
        }

    }
//    查询交易结果
//        {
//        "bizType": "payTransQuery",
//        "merchantId": "SP12345678",
//        "orderId": "154391186666",
//        "version": "2.5",
//        "sign": "6501C667567BE1E42950BDDF25987j7"
//    }
//    public Result searchOrderInfo()
//    {
//
//    }
//    public static Result sendPostRequest(String url, MultiValueMap<String, String> params){
    public static HashMap sendPostRequest(String url, PayermaxModel params)
    {
        RestTemplate client = new RestTemplate();
        HttpHeaders headers = new HttpHeaders();
        HttpMethod method = HttpMethod.POST;
        // 以表单的方式提交
//        headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
        headers.setContentType(MediaType.APPLICATION_JSON);
//        headers.add("Accept", MediaType.APPLICATION_JSON.toString());
        //将请求头部和参数合成一个请求
        HttpEntity<PayermaxModel> requestEntity = new HttpEntity<>(params, headers);
        //执行HTTP请求,将返回的结构使用ResultVO类格式化
        ResponseEntity<HashMap> response = client.exchange(url, method, requestEntity, HashMap.class);
        log.info("响应:" + String.valueOf(response));
        return response.getBody();
    }

    private String setSign(TreeMap<String, String> tree) throws Exception {
        String A = "bizType=" + tree.get("bizType")
                + "&merchantId=" + tree.get("merchantId")
                + "&orderId=" + tree.get("orderId") + "&version=2.1";
        String signTemp  = A + "&key=" + this.key;
        String _md5 = MD5.md5(signTemp,"").toUpperCase();
        return _md5;
    }

}

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值