Stripe paiement: obtenir erreur comme client cus * * * * * ne pas avoir une carte liée avec ID tok *****

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

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

Im en utilisant le numéro de carte: 4242424242424242 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' => test@test.com,
                'description'   => 'my payment',
                'customer'      => $customer_id
              );
28
demandé sur Sree 2015-12-22 15:30:53

2 réponses

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

  • Avec le source paramètre uniquement. Dans ce cas, source doit être un jeton ou source ID (créé par Caisse ou Rayure.js), c'est à dire une chaîne qui commence par tok_ ou src_.

  • Avec le customer paramètre uniquement. Dans ce cas, customer doit être un clients ID, c'est à dire une chaîne qui commence par cus_. Le paiement par défaut du client source sera facturé.

  • 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 qui est déjà attachée au client. Sources de paiement peut être cartes (ID commence par card_), comptes bancaires (ID commence par ba_) ou sources (ID commence par src_).

Dans votre cas, vous passez un identifiant de jeton dans le source avec un ID client dans le paramètre customer.

Si c'est une nouvelle carte, vous devez d'abord utiliser le jeton de créer une carte sur le client, puis de 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 n'avez donc pas besoin de créer un jeton du tout).

67
répondu Ywain 2018-05-03 11:38:48

J'avais défini "SourceToken" dans StripeCustomerCreateOptions et "SourceTokenOrExistingSourceId" dans StripeChargeCreateOptions (SourceToken) pour mon Stripcustomer.

La Suppression de L'affectation de SourceTokenOrExistingSourceId a résolu mon problème pour mon StripeCharge, car le jeton a créé des identifiants contradictoires.

0
répondu Remy 2018-01-27 17:14:53