2016-09-23 14 views
0

ストライプ支払いが使用されているときに電子メールの領収書を送信する必要があります。電子メールは顧客に送られません。Checkout.jsが使用されているときに、ストライプが電子メールを送信しない

我々はhttps://checkout.stripe.com/checkout.jsを使用して、電子メールの設定が正しく設定されているではされています

enter image description here

JavaScriptを呼び出すクライアント側のストライプはここにある:

stripeHandler = StripeCheckout.configure({ 
     key: "{{stripe_key}}", 
     image: '/static/img/framework/logo.png', 
     token: function(token) { 
     $("#stripe_token").val(token.id); 
     $("#payment_form").submit() 
     } 
    }); 

    stripeHandler.open({ 
     name: 'My Company Inc.', 
     description: "{{order_description|escapejs}}", 
     email: "{{ order.user.email }}", 
     amount: parseInt(parseFloat($('#total_cost').text) * 100) 
    }); 

答えて

2

あなたが経由してカードの詳細情報を収集するたびにStripe Checkout、ストライプはtok_XXXのようなIDを持つカードトークンを送ります。

カードトークンを取得することは、支払い処理の第一歩に過ぎません。その場合、登録料APIを使用して請求を作成し、支払いを受け取るか、または得意先登録APIを使用して顧客にカードを保存するサーバーにそのトークンを送信する必要があります。

どちらの場合でも、ストライプは顧客の電子メールアドレスを知らず、トークンから取得されません。その電子メールアドレスを使用するには、明示的にAPIに送信する必要があります。

お客様を作成する場合は、作成時にemailパラメータに渡します。その電子メールは、保存したカードを請求するたびにその顧客に電子メールの領収書を送信するために使用されます。

最初に顧客を作成せずに請求書を作成した場合は、明示的にStripeにその領収書を送信するよう通知する必要があります。これは、文書にhereと記載されているように、receipt_emailパラメータをAPIに渡すことによって行われます。

コードで最後に問題になっているのは、コードでコードを使用していないtokenコールバックでStripeがお客様の電子メールアドレスを送り返してきた場合でもあります。つまり、トークンがサーバーに到達したら、電子メールアドレスがなくなり、コードは単に空の値を無視しなければなりません。あなたはこのような何かを行うには、あなたのハンドラを変更したいと思う

stripeHandler = StripeCheckout.configure({ 
    key: "{{stripe_key}}", 
    image: '/static/img/framework/logo.png', 
    token: function(token) { 
    $("#stripe_token").val(token.id); 
    $("#stripe_email").val(token.email); 
    $("#payment_form").submit() 
    } 
}); 

これは、フォームが既に電子メールを設定するには、ID stripe_emailで二隠された入力フィールドを持っていることを前提としています。 PHP hereで完全な例を見ることができます。

もう1つの解決方法はトークンIDに基づいてサーバートークンAPIを呼び出すことです。それ以外の場合はemailプロパティで電子メールを取得します。

0

私は同じ問題を抱えていて、メールをトリガーするためにサーバーサイドコードを設定していないことに気付きました。ストライプにはAutomatically send receipts using the APIに記載されている指示があります。

私の場合、receipt_emailパラメータを設定していませんでした。 PHPを使用しているので、コードは次のようになります。

$token = $_POST['stripeToken']; 
$emailR = $_POST['stripeEmail']; 

$charge = \Stripe\Charge::create(array(
    "amount" => 30000, 
    "currency" => "usd", 
    "source" => $token, 
    "description" => "Awesome Widget", 
    "receipt_email" => $emailR, 
    "metadata" => array("Email" => $emailR) 
)); 
関連する問題