From e432edf02673e7eb47d8fca780950a12d3400ae8 Mon Sep 17 00:00:00 2001 From: Denys Misko Date: Thu, 14 Nov 2024 09:08:28 +1000 Subject: [PATCH] Add fix for payment method is string --- go.mod | 2 +- payment_method.go | 22 +++++++++++++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index bc8e71b..9031e7d 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,3 @@ module github.com/recurly/recurly-client-go/v4 -go 1.12 +go 1.23 diff --git a/payment_method.go b/payment_method.go index 0d77b15..97b588b 100644 --- a/payment_method.go +++ b/payment_method.go @@ -6,16 +6,36 @@ package recurly import ( "context" + "encoding/json" "net/http" + "strings" ) +type tempCardType string + +func (t *tempCardType) UnmarshalJSON(data []byte) error { + var s string + if err := json.Unmarshal(data, &s); err == nil { + *t = tempCardType(s) + return nil + } else if !strings.Contains(err.Error(), "cannot unmarshal object into Go value of type string") { + return err + } + // recurly is stupid + /* + {"visa":"Visa","sepa":"SEPA","master":"MasterCard","bancontact":"Bancontact","cartes_bancaires":"Cartes Bancaires","discover":"Discover","american_express":"American Express","diners_club":"Diners Club","jcb":"JCB","dankort":"Dankort","maestro":"Maestro","forbrugsforeningen":"Forbrugsforeningen","laser":"Laser","apple_pay":"Apple Pay","adyen_ach":"Adyen ACH","union_pay":"Union Pay","elo":"ELO","hipercard":"Hipercard","bogus":"Test Card","token":"Token","tarjeta_naranja":"Tarjeta Naranja","unknown":"Unknown"} + */ + *t = "Unknown Object" + return nil +} + type PaymentMethod struct { recurlyResponse *ResponseMetadata Object string `json:"object,omitempty"` // Visa, MasterCard, American Express, Discover, JCB, etc. - CardType string `json:"card_type,omitempty"` + CardType tempCardType `json:"card_type,omitempty"` // Credit card number's first six digits. FirstSix string `json:"first_six,omitempty"`