Add `sepaMaximumEuros` field to subscription configuration
This commit is contained in:
parent
387e4b94b4
commit
71e4351743
|
@ -342,7 +342,7 @@ subscription: # configuration for Stripe subscriptions
|
||||||
BRAINTREE: plan_example # braintree Plan ID
|
BRAINTREE: plan_example # braintree Plan ID
|
||||||
|
|
||||||
oneTimeDonations:
|
oneTimeDonations:
|
||||||
sepaMaxTransactionSizeEuros: '10000'
|
sepaMaximumEuros: '10000'
|
||||||
boost:
|
boost:
|
||||||
level: 1
|
level: 1
|
||||||
expiration: P90D
|
expiration: P90D
|
||||||
|
|
|
@ -20,7 +20,7 @@ import javax.validation.constraints.Positive;
|
||||||
public record OneTimeDonationConfiguration(@Valid ExpiringLevelConfiguration boost,
|
public record OneTimeDonationConfiguration(@Valid ExpiringLevelConfiguration boost,
|
||||||
@Valid ExpiringLevelConfiguration gift,
|
@Valid ExpiringLevelConfiguration gift,
|
||||||
Map<String, @Valid OneTimeDonationCurrencyConfiguration> currencies,
|
Map<String, @Valid OneTimeDonationCurrencyConfiguration> currencies,
|
||||||
BigDecimal sepaMaxTransactionSizeEuros) {
|
BigDecimal sepaMaximumEuros) {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param badge the numeric donation level ID
|
* @param badge the numeric donation level ID
|
||||||
|
|
|
@ -229,7 +229,7 @@ public class SubscriptionController {
|
||||||
giftBadge,
|
giftBadge,
|
||||||
oneTimeDonationConfiguration.gift().expiration())));
|
oneTimeDonationConfiguration.gift().expiration())));
|
||||||
|
|
||||||
return new GetSubscriptionConfigurationResponse(buildCurrencyConfiguration(userAgent), levels);
|
return new GetSubscriptionConfigurationResponse(buildCurrencyConfiguration(userAgent), levels, oneTimeDonationConfiguration.sepaMaximumEuros().toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
@DELETE
|
@DELETE
|
||||||
|
@ -537,7 +537,8 @@ public class SubscriptionController {
|
||||||
* @param levels map of numeric level IDs to level-specific configuration
|
* @param levels map of numeric level IDs to level-specific configuration
|
||||||
*/
|
*/
|
||||||
public record GetSubscriptionConfigurationResponse(Map<String, CurrencyConfiguration> currencies,
|
public record GetSubscriptionConfigurationResponse(Map<String, CurrencyConfiguration> currencies,
|
||||||
Map<String, LevelConfiguration> levels) {
|
Map<String, LevelConfiguration> levels,
|
||||||
|
String sepaMaximumEuros) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -712,11 +713,11 @@ public class SubscriptionController {
|
||||||
if (request.paymentMethod == PaymentMethod.SEPA_DEBIT &&
|
if (request.paymentMethod == PaymentMethod.SEPA_DEBIT &&
|
||||||
amount.compareTo(SubscriptionCurrencyUtil.convertConfiguredAmountToApiAmount(
|
amount.compareTo(SubscriptionCurrencyUtil.convertConfiguredAmountToApiAmount(
|
||||||
EURO_CURRENCY_CODE,
|
EURO_CURRENCY_CODE,
|
||||||
oneTimeDonationConfiguration.sepaMaxTransactionSizeEuros())) > 0) {
|
oneTimeDonationConfiguration.sepaMaximumEuros())) > 0) {
|
||||||
throw new BadRequestException(Response.status(Status.BAD_REQUEST)
|
throw new BadRequestException(Response.status(Status.BAD_REQUEST)
|
||||||
.entity(Map.of(
|
.entity(Map.of(
|
||||||
"error", "amount_above_sepa_limit",
|
"error", "amount_above_sepa_limit",
|
||||||
"maximum", oneTimeDonationConfiguration.sepaMaxTransactionSizeEuros().toString())).build());
|
"maximum", oneTimeDonationConfiguration.sepaMaximumEuros().toString())).build());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -802,6 +802,7 @@ class SubscriptionControllerTest {
|
||||||
.header(HttpHeaders.USER_AGENT, userAgent)
|
.header(HttpHeaders.USER_AGENT, userAgent)
|
||||||
.get(GetSubscriptionConfigurationResponse.class);
|
.get(GetSubscriptionConfigurationResponse.class);
|
||||||
|
|
||||||
|
assertThat(response.sepaMaximumEuros()).isEqualTo("10000");
|
||||||
assertThat(response.currencies()).containsKeys("usd", "jpy", "bif", "eur").satisfies(currencyMap -> {
|
assertThat(response.currencies()).containsKeys("usd", "jpy", "bif", "eur").satisfies(currencyMap -> {
|
||||||
assertThat(currencyMap).extractingByKey("usd").satisfies(currency -> {
|
assertThat(currencyMap).extractingByKey("usd").satisfies(currency -> {
|
||||||
assertThat(currency.minimum()).isEqualByComparingTo(
|
assertThat(currency.minimum()).isEqualByComparingTo(
|
||||||
|
@ -1087,7 +1088,7 @@ class SubscriptionControllerTest {
|
||||||
- '8000'
|
- '8000'
|
||||||
- '9000'
|
- '9000'
|
||||||
- '10000'
|
- '10000'
|
||||||
sepaMaxTransactionSizeEuros: '10000'
|
sepaMaximumEuros: '10000'
|
||||||
""";
|
""";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue