Skip to content

Allow public access to ApiRequestParams subclass constructors/fields #1393

Open
@shaun-wild

Description

@shaun-wild

Is your feature request related to a problem? Please describe.

I am using Kotlin and the use of the builders provided on these classes is overly verbose.

Describe the solution you'd like

Make the constructors public, so I can build the objects myself, using Kotlin's Type Safe Builders.

Also, I believe the fields will need to be accessible.

Or even create a Kotlin extensions library with the type-safe builders included.

Describe alternatives you've considered

I've tried creating a wrapper around the builders themselves, but it turned out to be extremely cumbersome.

Additional context

For example, instead of:

val lineItem = SessionCreateParams.LineItem.builder()
            .setPrice(priceID)
            .setQuantity(1)
            .build()

SessionCreateParams.builder().apply {
            setMode(SUBSCRIPTION)
            addPaymentMethodType(SessionCreateParams.PaymentMethodType.CARD)
            addLineItem(lineItem)
            setSuccessUrl("$domainURL/stripe/checkout?sessionID={CHECKOUT_SESSION_ID}&success=true")
            setCancelUrl("$domainURL/stripe/checkout?success=false")
            setAllowPromotionCodes(true)
            setSubscriptionData(subscriptionData)

I could simply do

createSessionParams {
  mode = SUBSCRIPTION
  paymentMethodTypes += CARD
  lineItems = listOf(
    lineItem {
      price = priceID
      quantity = 1
    }
  )
  successUrl = "$domainURL/stripe/checkout?sessionID={CHECKOUT_SESSION_ID}&success=true"
  cancelUrl = "$domainURL/stripe/checkout?success=false"
  allowPromitionCodes = true
  subscriptionData = 
}

But I cannot instantiate the classes myself, as the constructors are private.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions