IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java SpringBoot POST请求三方接口 Star.hou -> 正文阅读

[Java知识库]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;
    }

}

在这里插入图片描述

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-06 10:55:43  更:2022-05-06 10:55:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:16:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码