web-dev-qa-db-fra.com

Paiement Stripe: obtenir une erreur car le client cus _ ***** n'a pas de carte liée avec un jeton d'identification _ *****

En mode test lorsque je crée un nouveau client et essaie de payer, j'ai cette erreur.

Le client cus_7Zz2BCnybIZLGw n'a pas de carte liée avec l'ID tok_17Kp8GAwLkQPB7OqrrM73VVI

Im en utilisant le numéro de carte: 424242424242424242 exp_month: 12 exp_year 2016

La réponse de retour est,

Array
(
    [charge_status] => 
    [error_info] => Array
        (
            [type] => invalid_request_error
            [message] => Customer cus_7Zz2BCnybIZLGw does not have a linked card with ID tok_17Kp8GAwLkQPB7OqrrM73VVI.
            [param] => card
            [code] => missing
        )

    [message] => Customer cus_7Zz2BCnybIZLGw does not have a linked card with ID tok_17Kp8GAwLkQPB7OqrrM73VVI.
)

Les données de charge d'entrée sont,

 $customer = Stripe_Customer::create(array(
      'account_balance' => 100,
      'source' => $token,
      'email' => strip_tags(trim($email))
    )
  );

$customer_id = $customer->id;

$charge   = array(
                'card'          => 4242424242424242, 
                'amount'        => 100, 
                'currency'      => 'cad', 
                'receipt_email' => [email protected],
                'description'   => 'my payment',
                'customer'      => $customer_id
              );
38
Sree

Il existe trois façons différentes de créer une charge :

  • avec le paramètre source uniquement. Dans ce cas, source doit être un token ou source ID (créé par Checkout ou Stripe. js ), c'est-à-dire une chaîne commençant par tok_ ou src_.

  • avec le paramètre customer uniquement. Dans ce cas, customer doit être un client ID, c'est-à-dire une chaîne commençant par cus_. La source de paiement par défaut du client sera facturée.

  • avec les paramètres customer et source. Dans ce cas, customer doit être un ID client comme dans le cas précédent, mais source doit être l'ID d'une source de paiement déjà associée au client. Les sources de paiement peuvent être cartes (l'ID commence par card_), comptes bancaires (l'ID commence par ba_) ou sources (l'ID commence par src_).

Dans votre cas, vous transmettez un ID de jeton dans le paramètre source ainsi qu'un ID client dans le paramètre customer.

S'il s'agit d'une nouvelle carte, vous devez d'abord utiliser le token to créer une carte sur le client, puis créer la charge avec l'ID de la carte. Si la carte a déjà été enregistrée pour ce client, vous n'avez pas besoin de collecter à nouveau les informations de la carte (et donc pas besoin de créer un jeton du tout).

83
Ywain