From bfa0b11dfbfe5b71e11f4544e688e4d9f325d1b5 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期一, 09 六月 2025 10:26:51 +0800 Subject: [PATCH] 修改bug和管理后台报表 --- UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/Tingg/TinggPayUtil.java | 137 ++++++++++++++++++++++++++++----------------- 1 files changed, 85 insertions(+), 52 deletions(-) diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/Tingg/TinggPayUtil.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/Tingg/TinggPayUtil.java index 99fb98b..49f4762 100644 --- a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/Tingg/TinggPayUtil.java +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/Tingg/TinggPayUtil.java @@ -1,78 +1,111 @@ package com.stylefeng.guns.modular.system.util.Tingg; import com.alibaba.fastjson.JSON; -import com.stylefeng.guns.core.util.ToolUtil; -import com.stylefeng.guns.modular.system.util.HttpClientUtil; import com.stylefeng.guns.modular.system.util.ResultUtil; -import com.stylefeng.guns.modular.system.util.Tingg.model.TokenResponse; -import org.apache.http.protocol.HTTP; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; +import com.stylefeng.guns.modular.system.util.Tingg.model.CallbackRequest; +import com.stylefeng.guns.modular.system.util.Tingg.model.CheckoutRequest; +import io.cellulant.model.Payload; +import io.cellulant.service.CheckoutEncryption; +import lombok.extern.slf4j.Slf4j; -import java.net.HttpURLConnection; -import java.util.Calendar; -import java.util.HashMap; -import java.util.Map; -import java.util.TimeZone; +import javax.servlet.http.HttpServletRequest; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.text.SimpleDateFormat; +import java.util.*; /** * Tingg支付工具类 */ -@Component +@Slf4j public class TinggPayUtil { - @Autowired - private HttpClientUtil httpClientUtil; + private static String accessKey = "8rc1gTV9n91Tc1Sy9oVWry99fgrgrVV8concf9onWooWSg9TVW8nSgo98g88"; + + private static String ivKey = "ABp0pqpHMteEJM2N"; + + private static String secretKey = "rf8Vo1n9yTSW98cg"; + /** - * 获取token + * 获取支付数据 + * @param checkoutRequest * @return */ - public TokenResponse getToken(){ - Map<String, Object> params = new HashMap<>(); - params.put("grant_type", "client_credentials"); - params.put("client_id", TinggConfigEnum.CLIENT_ID.getValue()); - params.put("client_secret", TinggConfigEnum.CLIENT_SECRET.getValue()); - - String s = httpClientUtil.pushHttpRequset("POST", TinggConfigEnum.TOKEN_URL.getValue(), params, null, "json"); - if(ToolUtil.isNotEmpty(s)){ - TokenResponse tokenResponse = JSON.parseObject(s, TokenResponse.class); - return tokenResponse; + public static ResultUtil checkoutRequest(CheckoutRequest checkoutRequest){ + try { + CheckoutEncryption checkoutEncrption = new CheckoutEncryption(ivKey, secretKey); + Payload payload = getPayload(checkoutRequest); + log.info("支付请求参数:{}", JSON.toJSONString(payload)); + String param = checkoutEncrption.encrypt(payload); + String url = "https://checkout.tingg.africa/express/checkout?encrypted_payload=" + param + "&access_key=" + accessKey; + log.info("支付链接:{}", url); + return ResultUtil.success(url); + }catch (Exception e){ + e.printStackTrace(); + return ResultUtil.runErr(); } - return null; } - public ResultUtil checkoutRequest(String phone, String email, Double amount){ - Map<String, Object> params = new HashMap<>(); - params.put("merchantTransactionID", "");//商家的唯一交易标识符 - params.put("currencyCode", "");//通过的金额所使用的货币 - params.put("requestAmount", amount);//客户将要支付的总金额 - params.put("countryCode", "");//商家的默认国家代码 - params.put("accountNumber", "");//交易的帐号/参考编号 - params.put("serviceCode", "");//商户的服务代码 - Calendar.getInstance(TimeZone.getTimeZone("UTC")); - params.put("dueDate", "");//事务到期日期的格式为YYYY-MM-DD HH:mm:ss。这应该是UTC时间 - params.put("requestDescription", "");//事务的叙述 - params.put("customerFirstName", "");//顾客名称 - params.put("customerLastName", "");//客户的姓氏 - params.put("MSISDN", phone);//客户的手机号码 - params.put("customerEmail", email);//客户的邮件 - params.put("paymentWebhookUrl", "");//这是结帐将使用的URL,用相关的支付细节调用商家,以便商家确认支付 - Map<String, String> header = new HashMap<>(); - TokenResponse token = getToken(); - if(null == token || ToolUtil.isNotEmpty(token.getError())){ - System.err.println("调用支付异常,获取token凭证失败!【" + token.getError() + "-----" + token.getMessage() + "】"); - return ResultUtil.error("调用支付异常"); + public static Payload getPayload(CheckoutRequest checkoutRequest) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String countryCode="GHA";//收取付款的国家的3位ISO代码 + String currencyCode = "GHS";//3位ISO代码的货币,商家正在开发票。 + String serviceCode="I-GO_TECHNOLOGIES_LI";//服务代码 + String dueDate = sdf.format(new Date(System.currentTimeMillis() + 1800000));//到期时间 + String languageCode="EN"; + String paymentOptionCode = "";//支付选项码 + + Payload payload = new Payload(checkoutRequest.getMerchantTransactionId(), checkoutRequest.getCustomerFirstName(), checkoutRequest.getCustomerLastName(), checkoutRequest.getMsisdn(), checkoutRequest.getCustomerEmail(), + checkoutRequest.getRequestAmount(), currencyCode, checkoutRequest.getAccountNumber(), serviceCode, dueDate, checkoutRequest.getRequestDescription(), + countryCode, languageCode, paymentOptionCode, checkoutRequest.getSuccessRedirectUrl(), checkoutRequest.getFailRedirectUrl(), checkoutRequest.getPendingRedirectUrl(), checkoutRequest.getCallbackUrl()); + return payload; + } + + + public static CallbackRequest getRequestParam(HttpServletRequest request) throws IOException { + // 读取参数 + InputStream inputStream; + StringBuilder sb = new StringBuilder(); + inputStream = request.getInputStream(); + String s; + BufferedReader in = new BufferedReader(new InputStreamReader(inputStream, "UTF-8")); + while ((s = in.readLine()) != null) { + sb.append(s); } - header.put("Authorization", "Bearer " + token.getAccess_token()); - header.put("Content-Type", "application/json"); + in.close(); + inputStream.close(); + String json = sb.toString(); + System.err.println("结果-----》" + json); + CallbackRequest callbackRequest = JSON.parseObject(json, CallbackRequest.class); - String s = httpClientUtil.pushHttpRequset("POST", TinggConfigEnum.CHECKOUT_URL.getValue(), params, header, "json"); - if(ToolUtil.isNotEmpty(s)){ + return callbackRequest; + } - } + + + + + public static void main(String[] ages){ + CheckoutRequest checkoutRequest = new CheckoutRequest(); + checkoutRequest.setMsisdn(Long.valueOf("233244915521")); + checkoutRequest.setCustomerEmail("393733352@qq.com"); + checkoutRequest.setAccountNumber("233244915521"); + checkoutRequest.setCustomerFirstName("GOU"); + checkoutRequest.setCustomerLastName("XIONG"); + checkoutRequest.setRequestAmount(1.00D); + checkoutRequest.setMerchantTransactionId("00030"); + checkoutRequest.setRequestDescription("payment test"); + checkoutRequest.setCallbackUrl("https://10pz685243.zicp.fun/base/IGO/wxCancelUserBalance"); + checkoutRequest.setPendingRedirectUrl("https://www.baidu.com"); + checkoutRequest.setSuccessRedirectUrl("https://www.baidu.com"); + checkoutRequest.setFailRedirectUrl("https://www.baidu.com"); + ResultUtil resultUtil = TinggPayUtil.checkoutRequest(checkoutRequest); + System.err.println(JSON.toJSONString(resultUtil)); } } -- Gitblit v1.7.1