Skip to content

Allow public access to ApiRequestParams subclass constructors/fields #1393

@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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions