java 如何在Sping Boot 应用程序中应用“STRIPE_SECRET_KEY”?

a11xaf1n  于 2023-05-12  发布在  Java
关注(0)|答案(2)|浏览(113)

目前,我有简单的ChargeRequestPaymentStatus作为我的实体,StripeServiceChargeControllerCheckoutController作为我的控制器。
我尝试在**.bashrc**中设置环境变量:

STRIPE_SECRET_KEY=my_key

但是,仍然得到一个错误:

Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'STRIPE_SECRET_KEY' in value "${STRIPE_SECRET_KEY}"

下面是 StripeService

package com.edoyou.k2sbeauty.services.implementations;

import com.edoyou.k2sbeauty.entities.model.ChargeRequest;
import com.stripe.Stripe;
import com.stripe.exception.APIConnectionException;
import com.stripe.exception.APIException;
import com.stripe.exception.CardException;
import com.stripe.exception.InvalidRequestException;
import com.stripe.model.Charge;
import jakarta.annotation.PostConstruct;
import java.util.HashMap;
import java.util.Map;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.core.AuthenticationException;
import org.springframework.stereotype.Service;

@Service
public class StripeService {

  @Value("${STRIPE_SECRET_KEY}")
  private String secretKey;

  @PostConstruct
  public void init() {
    Stripe.apiKey = secretKey;
  }
  public Charge charge(ChargeRequest chargeRequest)
      throws AuthenticationException, InvalidRequestException,
      APIConnectionException, CardException, APIException, com.stripe.exception.AuthenticationException {
    Map<String, Object> chargeParams = new HashMap<>();
    chargeParams.put("amount", chargeRequest.getAmount());
    chargeParams.put("currency", chargeRequest.getCurrency());
    chargeParams.put("description", chargeRequest.getDescription());
    chargeParams.put("source", chargeRequest.getStripeToken());
    return Charge.create(chargeParams);
  }
}
06odsfpq

06odsfpq1#

这不起作用的可能原因是您没有从.bashrc文件中导出环境变量。Bash环境变量必须是exported才能被子进程使用。
将.bashrc文件中的变量声明更改为:
export STRIPE_SECRET_KEY=my_key
使用. .bashrc获取.bashrc文件的源代码,然后在启动服务之前验证环境变量是否存在。您必须在.bashrc更改产生的进程中启动服务。例如,这个环境变量对于在进行这些更改之前打开的ide不可见。

m4pnthwp

m4pnthwp2#

你能用Java dotEnv module试试吗?然后,可以在app/目录中添加.env文件,以设置必要的环境变量

STRIPE_SECRET_KEY=sk_test_XXXXXXXXXXX

然后,您可以访问它并将其加载到Stripe客户端库中,如下所示

import io.github.cdimascio.dotenv.*;
...
Dotenv dotenv = Dotenv.load();
Stripe.apiKey = dotenv.get("STRIPE_SECRET_KEY");

相关问题