J'ai besoin d'ajouter une carte à un client préexistant. Voici ce que j'ai fait:
card_token = request.POST('stripeToken')
customer = stripe.Customer.retrieve('cus_xxxxxxxxxx')
customer.Cards.create(card=card_token)
C'est # 3 que j'ai des problèmes parce qu'il semble que le client n'a pas de carte de méthode, mais j'ai vu des gens le faire ailleurs.
Comment devrais-je y parvenir?
Si vous utilisez la version de l'API 2015-02-18
ou une version ultérieure, l'attribut cards
a été remplacé par sources
, comme vous pouvez le constater dans le fichier changelog .
La documentation sur l'API Create Card affiche le code suivant maintenant:
customer = stripe.Customer.retrieve('cus_xxxxxxxxxx')
customer.sources.create(card=card_token)
Vous pouvez trouver la version de votre API dans les clés de l'API settings du tableau de bord et vous pouvez également utiliser l'en-tête Stripe-Version
pour forcer votre demande d'API à une version plus ancienne de l'API afin que cards
fonctionne toujours comme décrit dans la section Versioning . Documentation:
stripe.api_version = '2015-01-26'
Exemple (customerId - cus_xxxxxxxxxx):
Stripe.apiKey = stripeApiKey;
Customer customer = Customer.retrieve(customerId);
Map<String, Object> cardParams = new HashMap<String, Object>();
cardParams.put("number", "4242424242424242");
cardParams.put("exp_month", "12");
cardParams.put("exp_year", "2018");
cardParams.put("cvc", "314");
Map<String, Object> tokenParams = new HashMap<String, Object>();
tokenParams.put("card", cardParams);
Token cardToken = Token.create(tokenParams);
Map<String, Object> sourceParams = new HashMap<String, Object>();
sourceParams.put("source", cardToken.getId()); //?
Card source = (Card) customer.getSources().create(sourceParams);
logger.info("Card created: " + source.toString());
Voici un exemple en plusieurs langues et plateformes.
https://stripe.com/docs/api#create_card
bonne chance