📺

【Shopify.dev和訳】Apps/Channels/Sales channel payment check API

2021/09/17に公開約11,700字

この記事について

この記事は、Apps/Cannels/Sales channel payments check APIの記事を和訳したものです。

記事内で使用する画像は、公式ドキュメント内の画像を引用して使用させていただいております。

Shopify アプリのご紹介

Shopify アプリである、「商品ページ発売予告アプリ | リテリア Coming Soon」は、商品ページを買えない状態のまま、発売日時の予告をすることができるアプリです。Shopify で Coming Soon 機能を実現することができます。

https://apps.shopify.com/shopify-application-314?locale=ja&from=daniel

Shopify アプリである、「らくらく日本語フォント設定|リテリア Font Picker」は、ノーコードで日本語フォントを使用できるアプリです。日本語フォントを導入することでブランドを演出することができます。

https://apps.shopify.com/font-picker-1?locale=ja&from=daniel

Checkout API を使用して販売チャネルの支払いを完了する


販売チャネルアプリは、Checkout APIを使用して、お客様のクレジットカード情報を Shopify に送信し、支払いを完了させます。

デフォルトでは、アプリは各製品に対して Shopify の Web チェックアウトへのチェックアウトリンクを提供することができます。これにより、あなたのプラットフォームでは、独自のネイティブチェックアウトフォームを構築する代わりに、Shopify のウェブチェックアウトを使用することができます。Checkout APIweb_url パラメータを使用して、顧客をチェックアウトリンクに誘導することができます。

アプリ内で直接支払いを受け付けたい場合は、サードパーティのサービスを利用して顧客のクレジットカード情報をトークン化し、Shopify に送信することをお勧めします。この情報をトークン化することで、販売チャネルアプリを使った支払いのPCI コンプライアンスの範囲を狭めることができます。アプリと統合するトークン化サービスによって、Shopify 加盟店が販売チャネルで使用できる決済ゲートウェイの種類が決まります。

  • Shopify Payments をペイメントゲートウェイとして有効にしているマーチャントのために、Stripe と統合して支払いを処理します。
  • Spreedly(または同様の転送サービス)と統合して、Shopify Payments 以外の決済プロバイダを利用しているマーチャントの支払いを処理します。

Stripe をあなたの販売チャネルアプリと統合する

Shopify の Stripe との統合を利用して、Shopify Payments を決済ゲートウェイソリューションとして有効にしているマーチャントに代わってクレジットカードをトークン化することができます。

仕組み

  1. お客様がチェックアウトを開始します。
  2. あなたの販売チャネルアプリは、チェックアウト API を使用してチェックアウトを作成します。
  3. Shopify は shopify_payments_account_id を返します。
  4. あなたのチャネルは、マーチャントの管理アカウント ID と顧客のクレジットカード情報を Stripe に送信して、トークンを生成します。
  5. あなたのチャネルは Checkout API を使用して支払いトランザクションを作成し、Stripe から Shopify にトークンを渡します。
  6. Shopify は Shopify Payments を使って支払いを処理します。

設定条件

Shopify の Stripe との統合には以下の条件があります。

  • Stripe で Shopify のカスタムアカウント用のアクセスをトークンで作成する必要があります。
  • あなたのアプリのユーザーは Shopify Payments を有効にする必要があります。

トークンを取得してアクセスを作成する。:
Stripe で Shopify のカスタムアカウントに代わってクレジットカードをトークン化するには、トークン作成アクセスが必要です。トークン作成アクセスを得るためには、Shopify に Stripe のアカウントidを提供してください。このidStripe APIを使って問い合わせることができます。

Stripe を利用した支払いの完了

Stripe を使って決済を完了させるには:

  1. 顧客がチェックアウトをするときは、その取引のためのチェックアウトオブジェクトを作成します。チェックアウトを作成すると、Shopify はマーチャントの shopify_payments_account_id を返します。商品が配送を必要とする場合は、配送先と請求先の住所を指定し、配送料金の投票を行い、適用される配送料金を設定する必要があることに注意してください。

  2. マーチャントの shopify_payments_account_id とあなたのプラットフォームアカウントのカード情報を、トークンエンドポイントを使って Stripe に送ります。シークレットキーは Stripe のシークレットキーに対応しており、Stripe アカウントの API セクションから取得することができます。

    POST /v1/tokens HTTPS/1.1
    Host: api.stripe.com
    Authentication: Basic #{secret_key}
    Stripe-Account: #{shopify_payments_account_id}
    card: {
      number: '4242424242424242',
      exp_month: 12,
      exp_year: 2019,
      cvc: 123
    }
    

    リクエストが成功すると、お客様のクレジットカードのトークンが返されます。

  3. チェックアウト API を使ってトークンを送信し、Shopify での支払いを処理します。unique_tokenには、クライアントが生成した任意の一意の識別子を指定できます。

    POST /admin/checkouts/#{token}/payments.json HTTPS/1.1
    Host: shop-name.myshopify.com
    X-Shopify-Access-Token: #{shopify_access_token}
    X-Shopify-Checkout-Version: 2016-08-28
    {
      "payment": {
        "amount": "33.00",
        "unique_token": "12345",
        "payment_token": {
          "payment_data": "tok_1AgzvXGp4JCfxblBH7gs5kLB",
          "type": "stripe_vault_token" },
        "request_details": {
          "ip_address": "123.1.1.1",
          "accept_language": "en"
          "user_agent": "Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/54.0.2840.98 Safari\/537.36"
        },
      }
    }
    

    リクエストが成功すると、Stripe トークンを使った支払いが完了し、対応する注文がショップに作成されます。

    Stripe での Vaulting の詳細については、Stripe API Referenceをご参照ください。


第三者サービスを利用したクレジットカード情報の送信

Spreedlyのようなサードパーティの決済転送サービスを使って、顧客のクレジットカード情報を Shopify の PCI 準拠のカードサーバーに送ることができます。

仕組み

  1. お客様がチェックアウトプロセスを開始します
  2. セールスチャネルアプリはチェックアウト API を使用して Shopify にチェックアウトオブジェクトを作成します。
  3. Shopify はチェックアウト情報を販売チャネルアプリに返します。
  4. 販売チャネルアプリは、クレジットカード情報を Spreedly に渡します。
  5. Spreedly は保管されたクレジットカードトークンを生成します。
  6. Spreedly は、クレジットカード情報を Shopify の金庫に渡します。
  7. Shopify の金庫は、支払いセッション ID を Spreedly に渡す
  8. Spreedly は、保管されたクレジットカードトークンと支払いセッション ID を販売チャネルアプリに送信します。
  9. 販売チャネルアプリは、Shopify に支払いセッションを送信し、Checkout API を使用して注文を作成します。
  10. Shopify は、マーチャントのペイメントゲートウェイを使用して支払いを処理します。

Spreedly を利用した支払いの完了

Spreedly を利用して決済を完了するために:

  1. Spreedly のアカウントにサインアップして、環境キーと秘密のアクセストークンを取得する。

  2. Spreedly API を使って、Shopify を Spreedly のレシーバーとして追加する:

    POST /v1/receivers.json HTTPS/1.1
    Host: core.spreedly.com
    Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
    Content-Type: application/<format>
    {
      "receiver": {
        "receiver_type": "shopify"
      }
    }
    

    レスポンスにはトークン・パラメータが含まれています。これは、Spreedly でクレジットカードを保管する際に使用されるレシーバー・トークンです。

  3. 顧客がチェックアウトしたら、そのクレジットカード情報を Spreedly に送信する。
    Spreedly にクレジットカード情報を送信するには、複数の方法があります。iFrame Payment FormまたはSpreedly Expressを使用することができますが、これらは低レベルの PCI コンプライアンスを必要とします。
    また、Spreedly JavaScript APIを使用して、クライアントのブラウザから Spreedly に直接クレジットカードを送信することもできます:

    POST /v1/payment_methods.<format> HTTPS/1.1
    Host: core.spreedly.com
    Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
    Content-Type: application/<format>
    {
      "payment_method": {
        "credit_card": {
          "first_name": "Joe",
          "last_name": "Jones",
          "number": "5555555555554444",
          "verification_value": 423,
          "month": "3",
          "year": "2032"
        },
        "email": "joey@example.com"
      }
    }
    

    このコールのレスポンスには、payment_method.tokenパラメータが含まれており、これを使ってクレジットカードを保存します。

  4. Spreedly からpayment_method.tokenreceiver tokenを Shopify の PCI 準拠のカード保管環境に送ります。

    提供されるheaderbodyのパラメータは、Spreedly が Shopify に転送するリクエストのヘッダとボディです。クレジットカードの詳細は、テンプレート化された構文により、Spreedly のレシーバー変数として提供されます。

    POST https://core.spreedly.com/v1/receivers/#{receiver_token}/deliver.json
    Authorization: Basic #{spreedly_auth_token}
    Content-Type: application/json
    
    {
       "delivery": {
         "payment_method_token": #{payment_method.token},
         "url": "https://elb.deposit.shopifycs.com/sessions",
         "headers": "Content-type: application/json",
         "body":"{ \"payment\": { \"credit_card\":{ \"number\": \"{{ credit_card_number }}\", \"month\": \"{{ credit_card_month }}\", \"year\": \"{{ credit_card_year }}\", \"verification_value\": \"{{ credit_card_verification_value }}\", \"first_name\":\"{{ credit_card_first_name }}\", \"last_name\":\"{{ credit_card_last_name }}\"}}}"
        }
    }
    

    レスポンスオブジェクトにはidパラメータが含まれており、支払いを作成する際に Shopify に送ることになります。

  5. Shopify API を使って Shopify に新しいチェックアウトオブジェクトを作成します:

    POST /admin/checkouts.json HTTP/1.1
    Host: shop-name.myshopify.com
    Content-Type: application/json
    X-Shopify-Access-Token: #{shopify_access_token}
    {
      "checkout": {
        "email": "jamiedee@mailinator.com",
        "billing_address": {
          "first_name": "Jamie",
          "last_name": "Dwyer",
          "address1": "150 Elgin St.",
          "country": "CA",
          "province": "ON",
          "city": "Ottawa",
          "zip": "K2P1L4"
        },
        "shipping_address": {
          "first_name": "Jamie",
          "last_name": "Dwyer",
          "address1": "150 Elgin St.",
          "country": "CA",
          "province": "ON",
          "city": "Ottawa",
          "zip": "K2P1L4"
        },
        "line_items": [
          {
            "variant_id": 27166731523,
            "quantity": 1
          }
        ]
      }
    }
    
  6. チェックアウト API を使ってidを送信し、Shopify でのトランザクションを処理します。

    POST /admin/checkouts/#{token}/payments.json HTTP/1.1
    Host: shop-name.myshopify.com
    Content-Type: application/json
    X-Shopify-Access-Token: #{shopify_access_token}
          {
            "payment": {
              "request_details": {
                "ip_address": "123.1.1.1",
                "accept_language": "en-US,en;q=0.8,fr;q=0.6",
                "user_agent": "Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/54.0.2840.98 Safari\/537.36"
               },
              "amount": "1675.99",
              "session_id": #{id},
              "unique_token": "client-side-idempotency-key"
            }
          }
          ```
    Spreedly での Vaulting の詳細については、[Spreedly documentation on Payment Method Distribution](https://docs.spreedly.com/guides/payment-method-distribution/)と[Spreedly API Reference](https://docs.spreedly.com/reference/api/v1/)を参照してください。
    

販売チャネルのアプリからクレジットカード情報を送信

販路アプリで支払いを完了するには、販路アプリから Shopify の PCI 準拠のカードサーバーに顧客のクレジットカード情報を送信します。

仕組み

  1. お客様がチェックアウトプロセスを開始します。
  2. セールスチャネルアプリはチェックアウト API を使用して Shopify にチェックアウトオブジェクトを作成します。
  3. Shopify はチェックアウト情報をあなたの販売チャンネルアプリに返します。
  4. お客様の販売チャネルアプリは、クレジットカード情報を Shopify の PCI 準拠のカードサーバーに渡します。
  5. Shopify のカードサーバーは、支払いセッション ID をお客様の販売チャネルアプリに返します。
  6. 販売チャネルアプリは Checkout API を使用して、Shopify に支払いセッション ID を渡します。
  7. Shopify は、マーチャントのペイメントゲートウェイを使用して支払いを処理します。

販売チャネルのアプリから支払いを完了する

アプリから Shopify にクレジットカード情報を送信するには、クレジットカード情報を使って支払いセッションを作成する必要があります。

Shopify アプリのご紹介

Shopify アプリである、「商品ページ発売予告アプリ | リテリア Coming Soon」は、商品ページを買えない状態のまま、発売日時の予告をすることができるアプリです。Shopify で Coming Soon 機能を実現することができます。

https://apps.shopify.com/shopify-application-314?locale=ja&from=daniel

Shopify アプリである、「らくらく日本語フォント設定|リテリア Font Picker」は、ノーコードで日本語フォントを使用できるアプリです。日本語フォントを導入することでブランドを演出することができます。

https://apps.shopify.com/font-picker-1?locale=ja&from=daniel

Discussion

ログインするとコメントできます