beam-community / stripity-stripe

An Elixir Library for Stripe
Other
965 stars 346 forks source link

Missing Jason.Encoder implementation for Stripe.Customer #788

Closed vittoriabitton closed 1 year ago

vittoriabitton commented 1 year ago

I'm processing some Stripe Customers using retrieve/2 for a Stripe.Customer and while trying to fetch its attributes I keep getting:

** (Protocol.UndefinedError) protocol Jason.Encoder not implemented for 
%Stripe.Customer{id: "cus_Lt4OfmnftQHhNW", object: "customer", address: nil, balance: 0, created: 1234567890, currency: "usd", default_source: nil, deleted: nil, delinquent: false, description: nil, discount: nil, email: nil, invoice_prefix: "40BEC7C", invoice_settings: %{custom_fields: nil, default_payment_method: nil, footer: nil}, livemode: false, metadata: %{}, name: nil, next_invoice_sequence: 1, payment_method: nil, phone: nil, preferred_locales: [], shipping: nil, sources: nil, subscriptions: nil, tax_exempt: "none", tax_ids: nil, test_clock: nil} 
of type Stripe.Customer (a struct), Jason.Encoder protocol must always be explicitly implemented.
If you own the struct, you can derive the implementation specifying which fields should be encoded to JSON:

         @derive {Jason.Encoder, only: [....]}
         defstruct ...

PS: data from this is using stripe-mock service.

The to-go solution for this would be adding @derive {Jason.Encoder, only: [....]} to stripity-stripe Stripe.Customer model or there is another possible workaround for this?

Thanks in advance :)