2013-04-09 14 views
11

Desidero raccogliere tutti gli abbonamenti del cliente Braintree. Quando sfoglio la pagina di un cliente nel gateway, posso vedere i loro abbonamenti, ma non sembra che esista un metodo come per Braintree::Customer o che possa cercare Braintree::Subscriptions per customer_id.Recupero di abbonamenti di un cliente Braintree

Ci sono diversi modi per accedere a tutti gli abbonamenti di un cliente, ma sono molto lenti. Ad esempio, posso recuperare tutte le transazioni del cliente e, per ogni transazione, ottenere il subscription_id (se esiste), quindi recuperare l'abbonamento con tale ID. Ciò comporta molte comunicazioni con l'API Braintree e speravo in una soluzione più efficiente.

Oh, e sto programmando questo in rotaie, ma la domanda non sembra specifica di Rails.

risposta

21

Lavoro a Braintree.

I clienti hanno uno credit_cards array e ogni carta di credito ha un subscriptions array. Quindi, se vuoi tutti gli abbonamenti per un cliente, puoi fare:

customer.credit_cards.map(&:subscriptions).flatten 
+1

Cosa deve essere modificato per tenere conto degli abbonamenti tramite paypal? –

+3

@ChristophGeschwind In Ruby, puoi fare 'customer.payment_methods.map (&: subscriptions) .flatten' per ottenerli tutti, o entrambi' customer.credit_cards' e 'customer.paypal_accounts' per ottenerli separatamente. – agf

+0

Grazie, penso che anche un aggiornamento sulla tua risposta sia appropriato. –

Problemi correlati