Files
AIGC/src/main/java/com/example/demo/config/PayPalConfig.java
blandarebiter 90b5118e45 perf(backend+frontend): 列表API响应体积优化 3.1MB→145KB (↓95.4%)
- 后端: JPQL构造器投影排除LONGTEXT大字段(uploadedImages/videoReferenceImages)
- 后端: DTO层过滤非分镜图类型的base64内联resultUrl
- 前端: 列表缩略图从video改为img loading=lazy,消除172并发请求
- 前端: download函数增加resultUrl懒加载(详情接口兜底)
- 文档: 新增性能优化报告 docs/performance-optimization-report.md
2026-04-10 18:46:37 +08:00

118 lines
3.5 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.example.demo.config;
import com.paypal.base.rest.APIContext;
import com.paypal.base.rest.OAuthTokenCredential;
import com.paypal.base.rest.PayPalRESTException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.HashMap;
import java.util.Map;
/**
* PayPal配置类
* 配置PayPal SDK和API上下文
*/
@Configuration
public class PayPalConfig {
private static final Logger logger = LoggerFactory.getLogger(PayPalConfig.class);
@Value("${paypal.client-id:}")
private String clientId;
@Value("${paypal.client-secret:}")
private String clientSecret;
@Value("${paypal.mode:sandbox}")
private String mode;
@Value("${paypal.success-url:https://vionow.com/api/payment/paypal/success}")
private String successUrl;
@Value("${paypal.cancel-url:https://vionow.com/api/payment/paypal/cancel}")
private String cancelUrl;
// CNY到USD的汇率配置默认7.2即1美元=7.2人民币)
@Value("${paypal.exchange-rate:7.2}")
private double exchangeRate;
/**
* 创建PayPal API上下文
* @return API上下文对象
*/
@Bean
public APIContext apiContext() {
try {
// 验证配置
if (clientId == null || clientId.isEmpty()) {
logger.warn("PayPal Client ID未配置PayPal功能将不可用");
return null;
}
if (clientSecret == null || clientSecret.isEmpty()) {
logger.warn("PayPal Client Secret未配置PayPal功能将不可用");
return null;
}
logger.info("=== 初始化PayPal配置 ===");
logger.info("Client ID: {}...", clientId.substring(0, Math.min(10, clientId.length())));
logger.info("Mode: {}", mode);
logger.info("Success URL: {}", successUrl);
logger.info("Cancel URL: {}", cancelUrl);
// 创建PayPal配置
Map<String, String> configMap = new HashMap<>();
configMap.put("mode", mode);
// 创建OAuth凭证
OAuthTokenCredential credential = new OAuthTokenCredential(clientId, clientSecret, configMap);
// 创建API上下文
APIContext context = new APIContext(credential.getAccessToken());
context.setConfigurationMap(configMap);
logger.info("✅ PayPal配置初始化成功");
return context;
} catch (PayPalRESTException e) {
logger.error("❌ PayPal配置初始化失败", e);
logger.error("错误信息: {}", e.getMessage());
logger.error("详细错误: {}", e.getDetails());
return null;
} catch (Exception e) {
logger.error("❌ PayPal配置初始化失败", e);
return null;
}
}
// Getters
public String getClientId() {
return clientId;
}
public String getClientSecret() {
return clientSecret;
}
public String getMode() {
return mode;
}
public String getSuccessUrl() {
return successUrl;
}
public String getCancelUrl() {
return cancelUrl;
}
public double getExchangeRate() {
return exchangeRate;
}
}