Q37-2 / 質問後に気が付いたこと

「決済」及び「開発」関連用語集

カテゴリー: QA  閲覧数:359 配信日:2019-04-27 07:46


Q37-2


How do I redirect to the success screen after receiving the “payment_intent.succeeded” event via webhook?
・2019/4/27
・How can I display the success screen after making a payment with PaymentIntent?
・Checkout new allows you to specify 'success_url' as shown below, but how to specify 'success_url' if you do not use Checkout?
$checkoutSession = \Stripe\Checkout\Session::create([
'customer_email' => 'customer@example.com',
'success_url' => 'https://xxxx/thanks.php',


Code tried (PHP)
・ I can receive "payment_intent.succeeded" event by webhook
・ I do not redirect to the success screen

▼index.php
<?php
\Stripe\Stripe::setApiKey("sk_test_xxxx");
$paymentintent = \Stripe\PaymentIntent::create([
 "amount" => 1099,
 "currency" => "jpy",
]);
?>
<input id="cardholder-name" type="text">
<div id="card-element"></div>
<button id="card-button" data-secret="<?php echo $paymentintent->client_secret; ?>">
 Submit Payment
</button>

<script src="https://js.stripe.com/v3/"></script>
<script>
const stripe = Stripe('pk_test_xxxx');

const elements = stripe.elements();
const cardElement = elements.create('card');
cardElement.mount('#card-element');

const cardholderName = document.getElementById('cardholder-name');
const cardButton = document.getElementById('card-button');
const clientSecret = cardButton.dataset.secret;

cardButton.addEventListener('click', async (ev) => {
 const {paymentIntent, error} = await stripe.handleCardPayment(
   clientSecret, cardElement, {
     payment_method_data: {
       billing_details: {name: cardholderName.value}
     }
   }
 );

 if (error) {
   // Display error.message in your UI.
   console.log(error)
 } else {
   // The payment has succeeded. Display a success message.
   console.log("ok")
 }
});
</script>


How do I redirect to the success screen after receiving the "payment_intent.succeeded" event via webhook?

質問後に気が付いたこと


JavaScriptでリダイレクトさせるもエラー
・JavaScriptでwebhook.phpへリダイレクトさせるも「HTTP ERROR 400」発生
・そもそもwebhook.phpで「$_SERVER['HTTP_STRIPE_SIGNATURE']」を受け取るよう設定しているため、それ以外の方法によるアクセスは不可

\Stripe\Checkout\Session::create()メソッドの'success_url'パラメータ処理を行っているコード内容を参考にすればよいのでは?
・探してみるも良く分からない
・'success_url'に関する記述は下記のみ
▼stripe/vendor/stripe/stripe-php/lib/Checkout/Session.php
<?php

namespace Stripe\Checkout;

/**
* Class Session
*
* @property string $id
* @property string $object
* @property string $cancel_url
* @property string $client_reference_id
* @property string $customer
* @property string $customer_email
* @property mixed $display_items
* @property bool $livemode
* @property string $payment_intent
* @property string[] $payment_method_types
* @property string $subscription
* @property string $success_url
*
* @package Stripe
*/
class Session extends \Stripe\ApiResource
{

   const OBJECT_NAME = "checkout.session";

   use \Stripe\ApiOperations\Create;
   use \Stripe\ApiOperations\Retrieve;
}

▼stripe/stripe-php/lib/ApiOperations/Create.php
<?php

namespace Stripe\ApiOperations;

/**
* Trait for creatable resources. Adds a `create()` static method to the class.
*
* This trait should only be applied to classes that derive from StripeObject.
*/
trait Create
{
   /**
    * @param array|null $params
    * @param array|string|null $options
    *
    * @return \Stripe\ApiResource The created resource.
    */
   public static function create($params = null, $options = null)
   {
       self::_validateParams($params);
       $url = static::classUrl();

       list($response, $opts) = static::_staticRequest('post', $url, $params, $options);
       $obj = \Stripe\Util\Util::convertToStripeObject($response->json, $opts);
       $obj->setLastResponse($response);
       return $obj;
   }
}


Stripe Q39。I want to check the processing for the 'success_url' parameter of the 'Checkout \ Session :: create () method' in the Git-Hub code


週間人気ページランキング / 11-16 → 11-22
順位 ページタイトル抜粋 アクセス数
1 EMVレベル1 / EMVレベル2 / EMVCo とは? 9
2 Stripe Q15。PaymentIntent でエラー。カード番号に不備があります。 | QA(Stripe) 4
3 Twitch | ゲーム実況配信サービス(課金販売できるプラットフォーム) 3
3 Stripe Connect > | documentation(Stripe) 3
4 Stripe Q37。PaymentIntentで支払いを行った後、成功画面を表示させるためにはどうすれば良いですか? | QA(Stripe) 2
4 \Stripe\PaymentIntentオブジェクト / Stripe\PaymentMethodオブジェクト / \Stripe\Checkout\Sessionオブジェクト 2
4 Stripe Q50。 Connect 「Standardアカウント」で、自身に連結された子アカウントを、ダッシュボードから削除するには? | QA(Stripe) 2
4 Stripe Payments > PREPARING FOR SCA > Payment Intents | documentation(Stripe) 2
5 Stripe webhook 配信の問題 / 実際に受け取った警告メールの受信例 1
5 「Gumroad」は、決済サービス「PayPal」を利用したオンラインコンテンツ販売サービス | デジタルコンテンツ販売可能なサービス(課金販売できるプラットフォーム) 1
5 Stripe Q43。payouts スケジュールについて | QA(Stripe) 1
5 Payment Intents API | その他エントリー(Stripe) 1
5 質問履歴29 / A抜粋 / 感想 1
5 Google Pay | 「支払、出金」機能を有する決済系サービス表(決済サービス) 1
5 普通送金 | 為替取引 1
5 Yahoo!ウォレット | 「チャージ、支払、送金、出金」機能を有する決済系サービス(決済サービス) 1
5 note | 課金販売できるプラットフォーム 1
5 LINE LIVE | ライブ配信サービス(課金販売できるプラットフォーム) 1
5 クレジットカード導入に関する当初の考え / クレジットカード導入に関する現在の考え / 自分の経験に照らし合わせて考えてみると 1
5 EPUB3 | ファイルフォーマット(電子書籍) 1
2024/11/23 1:02 更新
指定期間人気ページランキング / 2020-5-28 → 2024-11-22
順位 ページタイトル抜粋 アクセス数
1 Stripeアカウントへログインする際、モバイル端末で受信したコード入力を求められる理由は? | その他エントリー(Stripe) 2022
2 EMVCo | クレジットカード仕様(仕様) 1330
3 Stripe Q13。決済成功時に、「請求に紐づけられたメールアドレス」に対して、メール送信したいのですが、 | QA(Stripe) 972
4 Twitch | ゲーム実況配信サービス(課金販売できるプラットフォーム) 939
5 Stripe Q16。PaymentIntentの支払いで郵便番号入力を求められる。Radar rules の ZIP code を無効にしているのに | QA(Stripe) 927
6 クレジットカード決済 | 課金 909
7 決済用語 878
8 Stripe Q50。 Connect 「Standardアカウント」で、自身に連結された子アカウントを、ダッシュボードから削除するには? | QA(Stripe) 847
9 EMVレベル1 / EMVレベル2 / EMVCo とは? 818
10 Stripe Q1。Stripeにおける個人事業主の定義 | QA(Stripe) 804
11 pixivFANBOX | クリエイター支援プラットフォーム(課金販売できるプラットフォーム) 795
12 Omise | 「支払」機能を有する決済系サービス(決済サービス) 784
13 Stripe Q31。ダッシュボードでの「支払い作成」の見方について | QA(Stripe) 749
14 YouTube | 動画サービス(課金販売できるプラットフォーム) 718
15 プリペイドカード | カード 649
16 EPUB | ファイルフォーマット(電子書籍) 613
17 Stripe Q74.「お客様のビジネスの詳細」とは何ですか? | Stripe 594
18 Stripeで"No such token: src"と表示されたら、最初にAPIキーを確認する | Stripe エラー(Stripe) 577
19 サブスクリプション | 課金 565
20 Stripe エラー(Stripe) カテゴリー 487
2024/11/23 1:02 更新