• 解決済 ruri528002

    (@ruri528002)


    stripeという決済サービスでAPIからのコールバック処理を作成するにあたって質問させていただきたいです。

    購入決済完了後、wordpress上のDBの値を更新する処理を作成しようとしています。
    そもそもコールバック処理自体作成したことがなくどのように受け取れば良いのかわかっていません。

    APIのドキュメントを見ていると
    成功時のリダイレクトURL:domein/success
    成功時のリダイレクトURL:domein/canceled
    となっています。

    wordpress側で固定ページ:successを作成し、
    テストモードで決済すると、ちゃんとdomein/successに遷移されます。

    ダッシュボードのログを見ると「応答本文」として下記jsonのようなものが確認できます
    しかし、domein/successで「ページのソースを表示」を見ても特にjsonのようなものは見当たりませんでした。

    応答本文

    {
    "id": "ppage_1Mqx9bJqupZfn56U7gzb3tXU",
    "object": "checkout.session",
    "account_settings": {
    "account_id": "acct_1MqVDsJqupZfn56U",
    "assets": {
    "icon": null,
    "logo": null,
    "use_logo": false
    },
    "branding": {
    "background_color": null,
    "border_style": "default",
    "button_color": null,
    "font_family": "default"
    },
    "country": "JP",
    "display_name": "domein",
    "privacy_policy_url": null,
    "specified_commercial_transactions_act_url": null,
    "statement_descriptor": "domein",
    "support_email": null,
    "support_phone": "+819000000000",
    "support_url": null,
    "terms_of_service_url": null
    },
    "beta_versions": null,
    "billing_address_collection": null,
    .
    .
    .
    .

    ダッシュボードで生成される購入ボタンのコード自体はjsになっていて

    successUrlに遷移するようになっているので、URLパラメータを設定しようかと思いましたが

    こんなことをすると不正利用が簡単にできてしまうので、PHPページで受け取るにはどうすればいいんだろうと思った次第です

    var stripe = Stripe('pk_test_51MqVDsJqupZfn5IUuMQIVDdSV2FfJ1qCOZ4FeL5jzhz7sFbE3Nh4OE67gIBABla4EL0YYyY1RrT30WKpeyOpeAEU00nYbituan');
    var checkoutButton = document.getElementById('checkout-button-price_1Mqd9rJqupZfn5IUZjLwNj1P');
    checkoutButton.addEventListener('click', function() {
     stripe.redirectToCheckout({
       lineItems: [{
        price: 'price_1Mqd9rJqupZfn5IUZjLwNj1P',
        quantity: 1
       }],
       mode: 'payment',
       successUrl: window.location.protocol + ‘//domain/success',
       cancelUrl: window.location.protocol + ‘//domain/canceled',
      })
      .then(function(result) {
       if (result.error) {
        var displayError = document.getElementById('error-message');
        displayError.textContent = result.error.message;
       }
      });
    });

    試してみたこと

    ・successページでvar_dump($_POST)  の中をみたけどなんも入っていなかた

    ・ajaxみたいにdataでセットしたら良いのかとjs のコードでdataを入れてみたけど動作しなかった

    checkoutButton.addEventListener('click', function() {
       stripe.redirectToCheckout({
         lineItems: [{
          price: 'price_1Mqd6aJqupZfn5IUzqkaqTX7',
          quantity: 1
         }],
         mode: 'payment',
         successUrl: window.location.protocol + ‘//domain/success',
       cancelUrl: window.location.protocol + ‘//domain/canceled',
         data: {
          id:"checkout-button-price_1Mqd6aJqupZfn5IUzqkaqTX7",
         },
        })
        .then(function(result) {
         if (result.error) {
          var displayError = document.getElementById('error-message');
          displayError.textContent = result.error.message;
         }
        });
      });

    なにかアドバイスいただけると嬉しいです( ; ; )

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • 当方、Stripeには明るくありませんが、

    購入決済完了後、wordpress上のDBの値を更新する処理を作成しようとしています。

    おそらく、決済が完了したイベントを通知するWebhookを利用する必要があるかと思います。

    手順は以下で良いかと。

    1. WordPress側にAPIを用意する
    2. Stripe側の当該Webhookエンドポイントに1のエンドポイントを設定する

    2を実施するには、WordPressの WP REST API という機能を使うと良いと思われます。「wordpress stripe webhook」で検索すると同じようなことをされている方のブログが引っかかりますので、ご参考いただければ。

    認識間違ってましたらすいません。

    こんにちは。

    WordPressは関係なく、Stripe APIの実装に関する質問のように見えるので、Stripeのヘルプ&サポートを確認してみてはどうでしょうか。

    トピック投稿者 ruri528002

    (@ruri528002)

    回答ありがとうございます!

    まさにWebhookで解決しそうです!

    ありがとうございました!

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「APIからのコールバック処理について」には新たに返信することはできません。