in handlers/stripe-webhook-endpoints/src/main/scala/com/gu/stripeCardUpdated/CardUpdatedSteps.scala [118:148]
def createPaymentMethod(requests: Requests)(
eventDataObject: EventDataObject,
paymentMethodFields: PaymentMethodFields,
): ApiGatewayOp[CreatePaymentMethodResult] = {
for {
creditCardType <- Some(eventDataObject.brand)
.collect {
case StripeBrand.Visa => Visa
case StripeBrand.Discover => Discover
case StripeBrand.MasterCard => MasterCard
case StripeBrand.AmericanExpress => AmericanExpress
}
.toApiGatewayContinueProcessing(
ApiGatewayResponse.internalServerError(s"not valid card type for zuora: ${eventDataObject.brand}"),
)
result <- CreatePaymentMethod
.createPaymentMethod(requests)(
CreateStripePaymentMethod(
paymentMethodFields.AccountId,
eventDataObject.id,
eventDataObject.customer,
eventDataObject.country,
eventDataObject.last4,
eventDataObject.expiry,
creditCardType,
paymentMethodFields.NumConsecutiveFailures,
),
)
.toApiGatewayOp("CreatePaymentMethod failed")
} yield result
}