2017-10-28 16 views
0

ちょっと、ちょっと私はプログラミングにかなり慣れています。あなたの助けに本当に感謝します。私はストライプの支払いを設定しようとしていますが、カードを充電すると、この非常に長いエラーメッセージが何度も繰り返されています。致命的なエラー:キャッチされていない例外ストライプ

致命的なエラー:C:\ xampp \ htdocs \ vendor \ stripe \ stripe-php \ lib \ ApiRequestor.php:124のAPIでメッセージ 'No such such token:false'というキャッチされない例外 'Stripe \ Error \ InvalidRequest'要求 'req_MN1aLPlF6OMPIv' スタックトレース:#0 C:\ XAMPP \ htdocsに\ベンダ\ストライプ\ストライプ-PHP \ LIB \ ApiRequestor.php(102):ストライプ\ ApiRequestor :: _ specificAPIError({\ n "エラー":{\ N ... '、400、アレイ、アレイ、アレイ)#1 C:\ XAMPP \ htdocsにベンダ\ストライプ\ストライプ-PHP \ \ LIB \ ApiRequestor.php(309):ストライプ\ ApiRequestor-> handleErrorResponse({\ N "エラー":{\ n ... '、400、アレイ、アレイ)#2 C:\ XAMPP \ htdocsにベンダ\ストライプ\ストライプ-PHP \ \ LIB \ ApiRequestor.php(65):ストライプ\ ApiRequestor-> _interpretResponse({\ n "エラー":{\ n ... '、400、アレイ)#3 C:\ XAMPP \ htdocsにベンダ\ストライプ\ストライプ-PHP \ \ LIB \ ApiResource.php(119):ストライプ\ ApiRequestor-> request( 'post'、 '/ v1/charges'、Array、Array)#4 C:\ xampp \ htdocs \ vendor \ stripe \ stripe-php \ lib \ ApiResource.php(15 8):ストライプ\ ApiResource :: _ staticRequest( 'ポスト'、 '/ V1 /料金'、配列、NULL)#5 C:\ xamppの\ htdocsに\ベンダー\ストライプ\ストライプ-PHP \ libに\ Charge.php(74) :Stripe \ ApiResourc in C:\ xampp \ htdocs \ vendor \ stripe \ stripe-php \ lib \ ApiRequestor.php on line 124

これは何を意味しているのですか?私は文字通りストライプからすべてのものをコピー/ペーストしました。以下は、私のコードは、それが

var form = document.getElementById('payment-form'); 
var hiddenInput = document.createElement('input'); 
hiddenInput.setAttribute('type', 'hidden'); 
hiddenInput.setAttribute('name', 'stripeToken'); 
hiddenInput.setAttribute('value', token.id); 
form.appendChild(hiddenInput); 

form.submit(); 
    } 

がトークンを作成したりするときにエラーを表示するフォームを送信サーバーに送信されますので、フォームにトークンIDを挿入

Stripe.setPublishableKey('<?=STRIPE_PUBLIC;?>'); 

function stripeTokenHandler(token) { 

ですフォームが提出されます。

var form = document.getElementById('payment-form'); 
    form.addEventListener('submit', function(event) { 
    event.preventDefault(); 

    stripe.createToken(card).then(function(result) { 
    if (result.error) { 

エラー」

var errorElement = document.getElementById('card-errors'); 
    errorElement.textContent = result.error.message; 
    } else { 

私は次のコードでThankYou.phpに私の顧客を取っています。この後、サーバー

 stripeTokenHandler(result.token); 
     } 
    }); 
    }); 

にトークンを送信があったことを顧客に通知

<?php 
require_once '/init.php'; 

あなたの秘密鍵を設定します。トークンは、チェックアウトや要素を使用して作成された生産

\Stripe\Stripe::setApiKey(STRIPE_PRIVATE); 

でライブ秘密鍵にこれを変更することを忘れないでください! フォームから提出された支払いトークンIDを取得:

$token = isset($_POST['stripeToken']); 

担当者のカード:

$charge = \Stripe\Charge::create(array(
"amount" => 1000, 
"currency" => "usd", 
"description" => "Example charge", 
"source" => $token, 
)); 

答えて

0

にこの行を:

$token = isset($_POST['stripeToken']); 

は応じて可変$tokentrueまたはfalseを割り当てますstripeToken POSTパラメータがあるかどうか。

ですから、ここでは、電荷生成要求に$tokenを渡すとき:

$charge = \Stripe\Charge::create(array(
    "amount" => 1000, 
    "currency" => "usd", 
    "description" => "Example charge", 
    "source" => $token, 
)); 

sourceパラメータは、その値としてtrueまたはfalseのいずれかを持っています。これは、あなたが望むものではない - むしろ、単にあなたの$token変数にstripeToken POSTパラメータの値を割り当てる必要があります。

$token = $_POST['stripeToken']; 

エラーメッセージによると、言った:「いいえ、そのようなトークン:偽」、 $token変数の値はfalseでした。これは、バックエンドのPHPスクリプトがではないことを示し、stripeToken POSTパラメータを受け取りました。これは別の問題があることを示しています。おそらくフロントエンドコードにトークンを作成する場所にあります。

ウェブ開発の初心者の方は、カード情報の収集とトークンの作成についてはCheckoutをご覧になることをお勧めします。これは、ほとんどの作業を行う事前に作成された支払いフォームです。

あなたはここにPHPでチェックアウトを使用するためのチュートリアルを見つけることができます。このライン$トークン= ISSET($ _ POST [ 'stripeToken'])https://stripe.com/docs/checkout/php

+0

を。実際にはissetはありませんが、私はISSETがないと、定義されていないindex stripeTokenと言います。フォームにトークンIDを挿入するとstripeTokenがストライプコードとして定義されます。 –

+0

function stripeTokenHandler(token){ //トークンIDをフォームに挿入してサーバーに送信します var form = document.getElementById( 'payment-form'); var hiddenInput = document.createElement( 'input'); hiddenInput.setAttribute( 'type'、 'hidden'); hiddenInput.setAttribute( 'name'、 'stripeToken'); hiddenInput.setAttribute( 'value'、token.id); form.appendChild(hiddenInput); //フォームを送信 form.submit(); } –

関連する問題