web-dev-qa-db-fra.com

Stripe - Ajouter une nouvelle carte à un client existant

J'ai besoin d'ajouter une carte à un client préexistant. Voici ce que j'ai fait:

1. obtenir le jeton de la soumission de l'utilisateur

card_token = request.POST('stripeToken')

2. récupérer un client

customer =  stripe.Customer.retrieve('cus_xxxxxxxxxx')

3. ajouter une carte à ce client

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?

26
chenxi17

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'
27
koopajah

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());
0
CamelTM

Voici un exemple en plusieurs langues et plateformes.

https://stripe.com/docs/api#create_card

bonne chance