diff --git a/core/src/main/java/google/registry/flows/domain/DomainCreateFlow.java b/core/src/main/java/google/registry/flows/domain/DomainCreateFlow.java index 7c604cfeb..700b43ac0 100644 --- a/core/src/main/java/google/registry/flows/domain/DomainCreateFlow.java +++ b/core/src/main/java/google/registry/flows/domain/DomainCreateFlow.java @@ -59,6 +59,7 @@ import static google.registry.util.DateTimeUtils.leapSafeAddYears; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.common.net.InternetDomainName; +import google.registry.config.RegistryConfig; import google.registry.flows.EppException; import google.registry.flows.EppException.CommandUseErrorException; import google.registry.flows.EppException.ParameterValuePolicyErrorException; @@ -438,11 +439,22 @@ public final class DomainCreateFlow implements MutatingFlow { .build()); persistEntityChanges(entityChanges); + // If the registrar is participating in tiered pricing promos, return the standard price in the + // response (even if the actual charged price is less) + boolean shouldShowDefaultPrice = + defaultTokenUsed + && RegistryConfig.getTieredPricingPromotionRegistrarIds().contains(registrarId); + FeesAndCredits responseFeesAndCredits = + shouldShowDefaultPrice + ? pricingLogic.getCreatePrice( + tld, targetId, now, years, isAnchorTenant, isSunriseCreate, Optional.empty()) + : feesAndCredits; + BeforeResponseReturnData responseData = flowCustomLogic.beforeResponse( BeforeResponseParameters.newBuilder() .setResData(DomainCreateData.create(targetId, now, registrationExpirationTime)) - .setResponseExtensions(createResponseExtensions(feeCreate, feesAndCredits)) + .setResponseExtensions(createResponseExtensions(feeCreate, responseFeesAndCredits)) .build()); return responseBuilder .setResData(responseData.resData()) diff --git a/core/src/test/java/google/registry/flows/domain/DomainCreateFlowTest.java b/core/src/test/java/google/registry/flows/domain/DomainCreateFlowTest.java index 823193105..f78ae631a 100644 --- a/core/src/test/java/google/registry/flows/domain/DomainCreateFlowTest.java +++ b/core/src/test/java/google/registry/flows/domain/DomainCreateFlowTest.java @@ -48,6 +48,7 @@ import static google.registry.testing.DatabaseHelper.createTld; import static google.registry.testing.DatabaseHelper.createTlds; import static google.registry.testing.DatabaseHelper.deleteTld; import static google.registry.testing.DatabaseHelper.getHistoryEntries; +import static google.registry.testing.DatabaseHelper.loadAllOf; import static google.registry.testing.DatabaseHelper.loadRegistrar; import static google.registry.testing.DatabaseHelper.newContact; import static google.registry.testing.DatabaseHelper.newHost; @@ -1099,19 +1100,10 @@ class DomainCreateFlowTest extends ResourceFlowTestCasenaturalOrder() - .put(START_OF_TIME, TokenStatus.NOT_STARTED) - .put(clock.nowUtc().minusDays(2), TokenStatus.VALID) - .put(clock.nowUtc().minusDays(1), TokenStatus.ENDED) - .build()) - .build()); persistResource( - Tld.get("tld") + setupDefaultTokenWithDiscount() .asBuilder() - .setDefaultPromoTokens( - ImmutableList.of(defaultToken1.createVKey(), defaultToken2.createVKey())) + .setTokenStatusTransitions( + ImmutableSortedMap.naturalOrder() + .put(START_OF_TIME, TokenStatus.NOT_STARTED) + .put(clock.nowUtc().minusDays(2), TokenStatus.VALID) + .put(clock.nowUtc().minusDays(1), TokenStatus.ENDED) + .build()) .build()); doSuccessfulTest(); } @@ -2088,20 +1866,10 @@ class DomainCreateFlowTest extends ResourceFlowTestCase>builder() + .addAll(tld.getDefaultPromoTokens()) + .add(allocationToken.createVKey()) + .build()) + .build()); + return allocationToken; + } }