web-dev-qa-db-ja.com

ストライプの支払い:顧客cus _ *****にID tok _ *****のリンクカードがないため、エラーが発生します

テストモードで新しい顧客を作成して支払いを試みると、このエラーが発生しました。

顧客cus_7Zz2BCnybIZLGwにはID tok_17Kp8GAwLkQPB7OqrrM73VVIのリンクカードがありません

Imを使用してカード番号:4242424242424242 exp_month:12 exp_year 2016

返される応答は、

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.
)

入力料金データは、

 $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

課金を作成する には3つの異なる方法があります:

  • sourceパラメーターのみ。この場合、sourcetoken または source ID( Checkout または Stripe。 js )、つまりtok_またはsrc_で始まる文字列。

  • customerパラメーターのみ。この場合、customercustomer ID、つまりcus_で始まる文字列である必要があります。顧客のデフォルトの支払い元に請求されます。

  • customerパラメーターとsourceパラメーターの両方を使用します。この場合、customerは前のケースと同様に顧客IDである必要がありますが、sourceは既に顧客に関連付けられている支払い元のIDである必要があります。支払い元は cards (IDはcard_で始まる)、 銀行口座 (IDはba_で始まる)または sources =(IDはsrc_で始まります)。

あなたの場合、sourceパラメーターにトークンIDを渡し、customerパラメーターに顧客IDを渡します。

これが新しいカードの場合、最初にトークンを使用して顧客で カードを作成 し、次にカードIDで請求を作成する必要があります。この顧客用にカードが既に保存されている場合、カード情報を再度収集する必要はありません(したがって、トークンをまったく作成する必要はありません)。

83
Ywain