Add an optional description to the payment intent request
This commit is contained in:
parent
ac7eb88194
commit
e9a3d52d7f
|
@ -16,6 +16,7 @@ public class DonationConfiguration {
|
||||||
|
|
||||||
private String uri;
|
private String uri;
|
||||||
private String apiKey;
|
private String apiKey;
|
||||||
|
private String description;
|
||||||
private Set<String> supportedCurrencies;
|
private Set<String> supportedCurrencies;
|
||||||
private CircuitBreakerConfiguration circuitBreaker = new CircuitBreakerConfiguration();
|
private CircuitBreakerConfiguration circuitBreaker = new CircuitBreakerConfiguration();
|
||||||
private RetryConfiguration retry = new RetryConfiguration();
|
private RetryConfiguration retry = new RetryConfiguration();
|
||||||
|
@ -42,6 +43,16 @@ public class DonationConfiguration {
|
||||||
this.apiKey = apiKey;
|
this.apiKey = apiKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@JsonProperty
|
||||||
|
public String getDescription() {
|
||||||
|
return description;
|
||||||
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
public void setDescription(final String description) {
|
||||||
|
this.description = description;
|
||||||
|
}
|
||||||
|
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
@NotEmpty
|
@NotEmpty
|
||||||
public Set<String> getSupportedCurrencies() {
|
public Set<String> getSupportedCurrencies() {
|
||||||
|
|
|
@ -20,6 +20,7 @@ import java.net.http.HttpResponse.BodyHandlers;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
import java.util.Base64;
|
import java.util.Base64;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
@ -48,12 +49,14 @@ public class DonationController {
|
||||||
|
|
||||||
private final URI uri;
|
private final URI uri;
|
||||||
private final String apiKey;
|
private final String apiKey;
|
||||||
|
private final String description;
|
||||||
private final Set<String> supportedCurrencies;
|
private final Set<String> supportedCurrencies;
|
||||||
private final FaultTolerantHttpClient httpClient;
|
private final FaultTolerantHttpClient httpClient;
|
||||||
|
|
||||||
public DonationController(final Executor executor, final DonationConfiguration configuration) {
|
public DonationController(final Executor executor, final DonationConfiguration configuration) {
|
||||||
this.uri = URI.create(configuration.getUri());
|
this.uri = URI.create(configuration.getUri());
|
||||||
this.apiKey = configuration.getApiKey();
|
this.apiKey = configuration.getApiKey();
|
||||||
|
this.description = configuration.getDescription();
|
||||||
this.supportedCurrencies = configuration.getSupportedCurrencies();
|
this.supportedCurrencies = configuration.getSupportedCurrencies();
|
||||||
this.httpClient = FaultTolerantHttpClient.newBuilder()
|
this.httpClient = FaultTolerantHttpClient.newBuilder()
|
||||||
.withCircuitBreaker(configuration.getCircuitBreaker())
|
.withCircuitBreaker(configuration.getCircuitBreaker())
|
||||||
|
@ -77,11 +80,15 @@ public class DonationController {
|
||||||
return CompletableFuture.completedFuture(Response.status(422).build());
|
return CompletableFuture.completedFuture(Response.status(422).build());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final Map<String, String> formData = new HashMap<>();
|
||||||
|
formData.put("amount", Long.toString(request.getAmount()));
|
||||||
|
formData.put("currency", request.getCurrency());
|
||||||
|
if (!Strings.isNullOrEmpty(description)) {
|
||||||
|
formData.put("description", description);
|
||||||
|
}
|
||||||
final HttpRequest httpRequest = HttpRequest.newBuilder()
|
final HttpRequest httpRequest = HttpRequest.newBuilder()
|
||||||
.uri(uri)
|
.uri(uri)
|
||||||
.POST(FormDataBodyPublisher.of(Map.of(
|
.POST(FormDataBodyPublisher.of(formData))
|
||||||
"amount", Long.toString(request.getAmount()),
|
|
||||||
"currency", request.getCurrency())))
|
|
||||||
.header("Authorization", "Basic " + Base64.getEncoder().encodeToString(
|
.header("Authorization", "Basic " + Base64.getEncoder().encodeToString(
|
||||||
(apiKey + ":").getBytes(StandardCharsets.UTF_8)))
|
(apiKey + ":").getBytes(StandardCharsets.UTF_8)))
|
||||||
.header("Content-Type", "application/x-www-form-urlencoded")
|
.header("Content-Type", "application/x-www-form-urlencoded")
|
||||||
|
|
|
@ -50,6 +50,7 @@ public class DonationControllerTest {
|
||||||
public void before() throws Throwable {
|
public void before() throws Throwable {
|
||||||
DonationConfiguration configuration = new DonationConfiguration();
|
DonationConfiguration configuration = new DonationConfiguration();
|
||||||
configuration.setApiKey("test-api-key");
|
configuration.setApiKey("test-api-key");
|
||||||
|
configuration.setDescription("some description");
|
||||||
configuration.setUri("http://localhost:" + wireMockRule.port() + "/foo/bar");
|
configuration.setUri("http://localhost:" + wireMockRule.port() + "/foo/bar");
|
||||||
configuration.setCircuitBreaker(new CircuitBreakerConfiguration());
|
configuration.setCircuitBreaker(new CircuitBreakerConfiguration());
|
||||||
configuration.setRetry(new RetryConfiguration());
|
configuration.setRetry(new RetryConfiguration());
|
||||||
|
|
Loading…
Reference in New Issue