#java #apache-spark #https #stripe-payments
#java #apache-spark #https #stripe-платежи
Вопрос:
У меня уже некоторое время есть прослушиватель webhook в моей Java-программе, и он работает так, как и должен, когда вы отправляете webhook на URL прослушивателя. Теперь мне нужно создать URL-адрес HTTPS, но я не знаю, является ли это проблемой, которую мне нужно исправить в моем Java-коде или на моем веб-сервере Apache. У меня есть действительный доверенный сертификат, но всякий раз, когда я пытаюсь отправить webhook через Stripe, он выдает только сообщение об ошибке TLS и ничего не возвращает. Я думаю, это потому, что порты прослушивателей не используют SSL, но я не знаю, как это исправить. Если я добавлю порт к виртуальным хостам в Apache, чтобы использовать HTTPS для порта, то Java не сможет его прослушивать, потому что он уже будет использоваться. Это мой класс для прослушивателя. Нужно ли мне добавить какой-либо код, чтобы он прослушивал через HTTPS?
Примером URL для прослушивателя (который работает) может быть http://verifus.ddns.net:4568/webhook . Когда есть HTTPS, он вообще не работает.
import com.stripe.Stripe;
import com.stripe.model.*;
import com.stripe.net.ApiResource;
import net.dv8tion.jda.core.JDA;
import net.dv8tion.jda.core.entities.Role;
import org.apache.commons.httpclient.HttpStatus;
import org.simplejavamail.email.Email;
import org.simplejavamail.email.EmailBuilder;
import org.simplejavamail.mailer.MailerBuilder;
import us.verif.bot.Config;
import us.verif.bot.sql.StripeSql;
import java.security.SecureRandom;
import java.util.EventListener;
import java.util.Random;
import static spark.Spark.port;
import static spark.Spark.post;
public class StripeWebhook implements EventListener {
static final private String ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
final private Random rng = new SecureRandom();
private JDA jda;
public StripeWebhook(JDA jda) {
this.jda = jda;
}
public void startListener() {
port(Integer.parseInt(Config.getStripeWebhookPort()));
post("/webhook", (request, response) -> {
Event event = ApiResource.GSON.fromJson(request.body(), Event.class);
//Just some event checkers onwards
Комментарии:
1. Привет, Патрик, вам нужно будет обслуживать конечную точку Webhook с использованием https. К сожалению, Stripe требует этого. Это должно быть настроено на вашем веб-сервере (например, сервере apache).
2. SSL уже есть на моем сервере, но использование разных портов по какой-то причине не работает.
Ответ №1:
Вам необходимо настроить ваш сервер Apache с вашими SSL-сертификатами. Вы можете прочитать документы или следовать некоторым руководствам и практическим инструкциям, описывающим точные шаги.
Комментарии:
1. На моем веб-сервере уже настроен SSL. Verifus.ddns.net есть ли что-то еще, что мне нужно настроить, потому что SSL уже работает, но не на разных портах?
2. Вам также необходимо настроить его на порт, на котором вы запускаете свой webhook.
3. Проблема в том, что если я настрою SSL на порту, добавив Listen <порт> и создав виртуальный хост, то программа Java не сможет прослушивать этот порт.