# 韓国で PAYCO による支払いを受け付ける # Checkout > This is a Checkout for when payment-ui is checkout. View the full page at https://docs.stripe.com/payments/payco/accept-a-payment?payment-ui=checkout. > Stripe は、通貨、支払い方法の制限、その他のパラメーターを評価することで、適切な支払い方法を顧客に自動的に提示できます。 > > - [決済の受け付け](https://docs.stripe.com/payments/accept-a-payment.md?payment-ui=checkout&ui=stripe-hosted)ガイドに従って、[動的な決済手段](https://docs.stripe.com/payments/payment-methods/dynamic-payment-methods.md)を使用するチェックアウトの統合機能を構築します。 - 動的な決済手段を使用しない場合は、チェックアウトの導入で、決済方法を手動で設定するために以下のステップに従ってください。 [PAYCO](https://www.payco.com/) を導入すると、韓国在住の顧客は、この現地で人気があるこの支払い方法を使用して支払えるようになります。 顧客は支払いを行うと、現地の提携決済代行業者にリダイレクトされ、認証と支払いの承認を求められます。顧客が支払いを承認すると、Stripe は顧客をお客様のサイトにリダイレクトします。 ## 互換性を判断する **サポート対象のビジネスの所在地**: AT, BE, CY, DE, DK, EE, ES, FI, FR, GB, GR, HK, HR, HU, IE, IT, JP, LT, LU, LV, MT, NL, PT, SE, SG, SI, SK, US **対応可能な通貨**: `krw` **取引通貨**: `krw` **支払いモード**: Yes **セットアップモード**: No **サブスクリプションモード**: No 韓国の決済手段に対応するには、[Checkout セッション](https://docs.stripe.com/payments/checkout/how-checkout-works.md)が次の条件をすべて満たしている必要があります。 - ラインアイテムの*価格* (Prices define how much and how often to charge for products. This includes how much the product costs, what currency to use, and the interval if the price is for subscriptions)はすべて、韓国ウォン (通貨コード `krw`) で示す必要があります。 - 最低受付額は 100 KRW です。カードパススルー取引には上限がなく、顧客が Payco 口座に貯金としてチャージできる最大金額は 2,000,000 KRW です。 ## PAYCO による決済を受け付ける 構築済みのシステムに以下の更新を加えることで、PAYCO を有効化します。 [Checkout Session (セッション)](https://docs.stripe.com/api/checkout/sessions.md) を作成する際に、次を実行する必要があります。 - `payco` を `payment_method_types` のリストに追加します。 - すべての `line_items` が `krw` 通貨を使用していることを確認します。 #### Stripe がオンラインで提供するページ ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "line_items[0][price_data][currency]"=krw \ -d "line_items[0][price_data][product_data][name]"=T-shirt \ -d "line_items[0][price_data][unit_amount]"=2000 \ -d "line_items[0][quantity]"=1 \ -d mode=payment \ -d "payment_method_types[0]"=card \ -d "payment_method_types[1]"=payco \ --data-urlencode success_url="https://example.com/success" ``` #### 組み込みフォーム ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "line_items[0][price_data][currency]"=krw \ -d "line_items[0][price_data][product_data][name]"=T-shirt \ -d "line_items[0][price_data][unit_amount]"=2000 \ -d "line_items[0][quantity]"=1 \ -d mode=payment \ -d "payment_method_types[0]"=card \ -d "payment_method_types[1]"=payco \ --data-urlencode return_url="https://example.com/return" \ -d ui_mode=embedded ``` ## PAYCO の導入をテストする Checkout の実装状態をテストする際に、**PAYCO** を選択して**支払う**をクリックします。これにより、Stripe がオンラインで提供するページにリダイレクトされ、そこで支払いを承認するか失敗するかを選択できます。支払いを承認すると、PaymentIntent は `requires_action` から `succeeded` に切り替わります。テスト支払いを失敗にすると、PaymentIntent は `requires_action` から `requires_payment_method` に切り替わります。リダイレクトベースの支払い方法をテストする方法について、詳細は[こちら](https://docs.stripe.com/testing.md#redirects)をご覧ください。 # ダイレクト API > This is a ダイレクト API for when payment-ui is direct-api. View the full page at https://docs.stripe.com/payments/payco/accept-a-payment?payment-ui=direct-api. [PAYCO](https://www.payco.com/) を導入すると、韓国在住の顧客は、この現地で人気があるこの支払い方法を使用して支払えるようになります。 顧客は支払いを行うと、現地の提携決済代行業者にリダイレクトされ、認証と支払いの承認を求められます。顧客が支払いを承認すると、Stripe は顧客をお客様のサイトにリダイレクトします。 [Payment Intents API](https://docs.stripe.com/payments/payment-intents.md) を使用して、韓国の顧客から現地のカードと支払い方法による決済を受け付けます。 ## Stripe を設定する [サーバー側] まず、Stripe アカウントが必要です。[今すぐ登録](https://dashboard.stripe.com/register)してください。 アプリケーションから Stripe APIにアクセスするには、公式ライブラリを使用してください。 #### Ruby ```bash # Available as a gem sudo gem install stripe ``` ```ruby # If you use bundler, you can add this line to your Gemfile gem 'stripe' ``` ## PaymentIntent を作成する [サーバー側] [PaymentIntent](https://docs.stripe.com/api/payment_intents/object.md) は、顧客から支払いを回収する意図を表すオブジェクトであり、支払いプロセスを追跡します。`payco` を使用して決済を受け付ける `PaymentIntent` を作成するには、回収する金額を入力し、通貨として `krw`、[payment_method_types](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_types) リストで `payco` を指定します。`PaymentIntent` の作成時に渡す決済手段タイプのリストを保持している場合は、それに `payco` を追加します。 ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=10000 \ -d currency=krw \ -d "payment_method_types[]"=payco \ -d "payment_method_data[type]"=payco ``` ### client secret を取得する PaymentIntent には、*client secret* (The client secret is a unique key returned from Stripe as part of a PaymentIntent. This key lets the client access important fields from the PaymentIntent (status, amount, currency) while hiding sensitive ones (metadata, customer)) が含まれています。これは、支払いプロセスを安全に完了するためにクライアント側で使用されます。client secret をクライアント側に渡す際は、いくつかの方法を使用できます。 #### 1 ページのアプリケーション ブラウザーの `fetch` 関数を使用して、サーバーのエンドポイントから client secret を取得します。この方法は、クライアント側が 1 ページのアプリケーションで、特に React などの最新のフロントエンドフレームワークで構築されている場合に最適です。client secret を処理するサーバーのエンドポイントを作成します。 #### Ruby ```ruby get '/secret' do intent = # ... Create or retrieve the PaymentIntent {client_secret: intent.client_secret}.to_json end ``` その後、クライアント側で JavaScript を使用して client secret を取得します。 ```javascript (async () => { const response = await fetch('/secret'); const {client_secret: clientSecret} = await response.json(); // Render the form using the clientSecret })(); ``` #### サーバ側のレンダリング サーバーからクライアントに client secret を渡します。この方法は、アプリケーションがブラウザーへの送信前に静的なコンテンツをサーバーで生成する場合に最適です。 決済フォームに [client_secret](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-client_secret) を追加します。サーバー側のコードで、PaymentIntent から client secret を取得します。 #### Ruby ```erb
``` ```ruby get '/checkout' do @intent = # ... Fetch or create the PaymentIntent erb :checkout end ``` ## 顧客が利用規約を理解していることを確認する [クライアント側] Stripe の決済代行業者は、顧客が代行業者の身元を認識し、その利用規約を理解していることを求めています。そのため、チェックアウトページには以下の文言とリンクを必ず含める必要があります。 > 送信すると、次の手順を完了するためにリダイレクトされます。この取引は、NICEPAY の[利用規約](https://start.nicepay.co.kr/homepage/terms/bill.do)に従って、NICEPAY を通じて処理されます。 ## 現地の代行業者にリダイレクトする [クライアント側] 顧客が PAYCO での支払いをクリックしたときに、Stripe.js を使用してその支払いを Stripe に送信します。[Stripe.js](https://docs.stripe.com/payments/elements.md) は、決済フローを構築するための基本的な JavaScript ライブラリです。このライブラリにより、以下で説明するリダイレクトなどの複雑な処理が自動的に行われ、他の決済手段にも対応できるように実装を拡張できます。Stripe.js スクリプトを決済ページに含めるには、HTML ファイルの `head` にこのスクリプトを追加します。 ```html Checkout ``` 決済ページで以下の JavaScript を使用して、Stripe.js のインスタンスを作成します。 ```javascript // Set your publishable key. Remember to change this to your live publishable key in production! // See your keys here: https://dashboard.stripe.com/apikeys const stripe = Stripe('<>'); ``` `PaymentIntent` の [Client Secret](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-client_secret) を使用して `stripe.confirmPayment` を呼び出し、地域の決済代行業者の決済フローページへのリダイレクトを処理します。このページで、顧客はカード発行会社を選択し、支払いを承認します。`return_url` を追加して、決済完了後に顧客をリダイレクトする場所を指定します。 ```javascript const form = document.getElementById('payment-form'); form.addEventListener('submit', async function(event) { event.preventDefault(); // Set the clientSecret of the PaymentIntent const { error } = await stripe.confirmPayment({ clientSecret: clientSecret, confirmParams: { payment_method_data: { type: 'payco', }, // Return URL where the customer should be redirected after the authorization return_url: `${window.location.href}`, }, }); if (error) { // Inform the customer that there was an error. const errorElement = document.getElementById('error-message'); errorElement.textContent = result.error.message; } }); ``` `return_url` は、支払いの結果を表示する、貴社のウェブサイトのページに相当します。`PaymentIntent` の[ステータスを確認](https://docs.stripe.com/payments/payment-intents/verifying-status.md#checking-status)して、何を表示するべきか判断できます。ステータスを確認するために、Stripe がリダイレクトする `return_url` には次の URL クエリパラメーターが含まれています。また、独自のクエリパラメーターを `return_url` に追加することもできます。設定したパラメーターは、リダイレクトプロセス全体にわたって保持されます。 | パラメータ | 説明 | | ------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------- | | `payment_intent` | `PaymentIntent` の一意の ID。 | | `payment_intent_client_secret` | `PaymentIntent` オブジェクトの [Client Secret](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-client_secret)。 | ## Test integration with PAYCO PAYCO の実装をテストするには、テスト API キーを使用して、リダイレクトページを表示します。リダイレクトページで支払いを認証することによって、支払い成功のケースをテストできます。PaymentIntent は `requires_action` から `succeeded` に移行します。顧客が認証に失敗するケースをテストするには、テスト API キーを使用してリダイレクトページを表示します。リダイレクトページで**テスト支払いの失敗**をクリックします。PaymentIntent は、`requires_action` から `requires_payment_method` に移行します。 ## Optional: 支払い後のイベントを処理する 支払いが完了すると、Stripe は [payment_intent.succeeded](https://docs.stripe.com/api/events/types.md#event_types-payment_intent.succeeded) イベントを送信します。ダッシュボード、カスタム *Webhook* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests)、またはパートナーソリューションを使用してこれらのイベントを受信し、また、顧客への注文確認メールの送信、データベースでの売上の記録、配送ワークフローの開始などのアクションを実行します。 クライアントからのコールバックを待つのではなく、これらのイベントをリッスンします。クライアント側では、コールバックが実行される前に顧客がブラウザーのウィンドウを閉じたり、アプリを終了したりする可能性があります。また、悪意を持つクライアントがレスポンスを不正操作する恐れもあります。非同期型のイベントをリッスンするよう構築済みのシステムを設定することで、これ以降はより多くの決済手段を簡単に受け付けられるようになります。[サポートされているすべての決済手段の違い](https://stripe.com/payments/payment-methods-guide)をご確認ください。 - **ダッシュボードでイベントを手動で処理する** ダッシュボードを使用して、テスト決済を[ダッシュボードで表示](https://dashboard.stripe.com/test/payments)したり、メール領収書を送信したり、入金を処理したり、失敗した決済を再試行したりできます。 - **Custom Webhook を構築する** [Build a custom webhook](https://docs.stripe.com/webhooks/handling-payment-events.md#build-your-own-webhook) handler to listen for events and build custom asynchronous payment flows. Test and debug your webhook integration locally with the Stripe CLI. - **構築済みアプリを導入する** パートナーアプリケーションを統合することで、[自動化](https://stripe.partners/?f_category=automation)や[マーケティング/セールス](https://stripe.partners/?f_category=marketing-and-sales)などの一般的なビジネスイベントを処理します。