Apple Pay
顧客が iPhone、iPad、および Apple Watch で Apple Pay を使用して安全に支払いを実行できるようにします。
Apple Pay は Stripe のほとんどのプロダクトと機能と互換性があります。Stripe のユーザーは、iOS 9 以降の iOS アプリケーション、および iOS 10 または macOS Sierra 以降で Safari を使用してウェブ上で Apple Pay を受け付けることができます。Apple Pay での支払いの処理に追加料金はかからず、料金体系は他のカード取引と同じです。
Apple Pay を利用できるのは、サポート対象国の加盟銀行のカードの保有者です。詳細については Apple の加盟銀行に関するドキュメントをご覧ください。
決済フロー
以下は、決済ページから行われる Apple Pay の決済フローのデモンストレーションです。
Stripe および Apple Pay の利用と、アプリ内課金の利用について
物品、サービス、およびその他の一部商品の販売については、お客様のアプリで Apple Pay など、Stripe で対応可能な支払い方法を受け付けることができます。これらの支払いは Stripe を介して処理され、お客様は Stripe の決済手数料を支払うだけで済みます。ただし、デジタル商品、コンテンツ、その他の一部商品の販売では Apple の アプリ内課金を使用する必要があります。これらの支払いは Apple によって処理され、同社の決済手数料が適用されます。
アプリ内課金を使用しなければならない販売の詳細については、Apple の App Store Review ガイドラインをご覧ください。
Apple Pay を受け付ける
Stripe では、さまざまな方法で Apply Pay を支払い方法として追加することができます。組み込みの詳細については、各方法から選択してご確認ください。
Stripe の React Native SDK を使用すると、Apple Pay と従来のクレジットカードによる決済の両方を受け付けることができます。開始前に Apple Developer Program に登録し、サーバー側とアプリで Stripe を設定する必要があります。次に、以下の手順に従ってください。
- Apple 加盟店 ID を登録する
- 新しい Apple Pay 証明書を作成する
- Xcode を導入する
- StripeProvider で Apple 加盟店 ID を設定する
- Apple Pay がサポートされているかを確認する
- 支払い画面を表示する
- Stripe に支払いを送信する
Apple 加盟店 ID を登録する
Apple Developer Web サイトで 新規 ID を登録 して、Apple 加盟店 ID を取得します。
フォームに説明と ID を入力します。説明はお客様の記録用であり、後で変更できます。アプリの名前を ID として使用することをお勧めします (merchant.
など)。
新しい Apple Pay 証明書を作成する
支払いデータを暗号化するためのアプリの証明書を作成します。
ダッシュボードの iOS certificate settings (iOS 証明書の設定) に移動して、新規アプリケーションを追加をクリックし、表示されるガイドに従います。
証明書署名リクエスト (CSR) ファイルをダウンロードして、Apple Pay の利用を可能にする安全な証明書を Apple から取得します。
1 つの CSR ファイルを使用して証明書を 1 つだけ発行する必要があります。Apple 加盟店 ID を切り替えた場合、ダッシュボードの iOS Certificate Settings (iOS 証明書の設定) に移動して、新しい CSR と証明書を取得する必要があります。
Xcode を導入する
Apple Pay ケイパビリティをアプリに追加します。Xcode でプロジェクト設定を開き、Signing & Capabilities (署名およびケイパビリティ) タブを選択して、Apple Pay ケイパビリティを追加します。この段階で開発者アカウントへのログインを要求される場合があります。前の手順で作成した加盟店 ID を選択すると、アプリで Apple Pay を受け付けられるようになります。
Xcode で Apple Pay ケイパビリティを有効化する
StripeProvider で Apple 加盟店 ID を設定する
StripeProvider
コンポーネントで、登録した Apple 加盟店 ID を指定します。
import { StripeProvider } from '@stripe/stripe-react-native'; function App() { return ( <StripeProvider publishableKey="
" merchantIdentifier="merchant.com.{{YOUR_APP_NAME}}" > // Your app code here </StripeProvider> ); }pk_test_TYooMQauvdEDq54NiTphI7jx
Apple Pay がサポートされているかを確認する
アプリ内で Apple Pay を支払いオプションとして表示する前に、ユーザーのデバイスが Apple Pay に対応しているか、およびユーザーのウォレットにカードが追加されているかを判別します。
import { PlatformPayButton, isPlatformPaySupported } from '@stripe/stripe-react-native'; function PaymentScreen() { const [isApplePaySupported, setIsApplePaySupported] = useState(false); useEffect(() => { (async function () { setIsApplePaySupported(await isPlatformPaySupported()); })(); }, [isPlatformPaySupported]); // ... const pay = async () => { // ... }; // ... return ( <View> {isApplePaySupported && ( <PlatformPayButton onPress={pay} type={PlatformPay.ButtonType.Order} appearance={PlatformPay.ButtonStyle.Black} borderRadius={4} style={{ width: '100%', height: 50, }} /> )} </View> ); }
Payment Intent を作成する
サーバー側
amount (金額) と currency (通貨) を指定して PaymentIntent を作成するエンドポイントを設定します。支払い金額は、クライアント側ではなく、常に信頼できる環境のサーバー側で指定してください。これにより、悪意のある顧客が金額を恣意的に選択できないようにします。
クライアント側
サーバーから PaymentIntent をリクエストするメソッドを作成します。
function PaymentScreen() { // ... const fetchPaymentIntentClientSecret = async () => { const response = await fetch(`${API_URL}/create-payment-intent`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ some: 'value', }), }); const { clientSecret } = await response.json(); return clientSecret; }; // ... }
トラブルシューティング
トークンの作成時に Stripe API のエラーが表示される場合は、お客様の Apple Pay 証明書に問題のあるケースがほとんどです。前述のように、新しい証明書を生成して Stripe にアップロードする必要があります。自身で生成したものではなく、必ずダッシュボードから取得した CSR を使用してください。Xcode は誤って古い証明書をキャッシュに入れることがよくあるため、新しい証明書を生成するだけではなく、新しい Apple 加盟店 ID を作成することもお勧めします。
次のエラーを受信した場合:
Stripe に Apple 加盟店アカウントを追加していません
アプリが以前の (Stripe 以外の) CSR/証明書を使用して暗号化されたデータを送信している可能性があります。お客様の Apple 加盟店 ID で、Stripe 以外の CSR によって生成された証明書が取り消されていることを確認してください。それでも問題が解決しない場合は、お客様の Apple アカウントの加盟店 ID を削除してから再作成してください。その後、前回使用したものと同じ (Stripe が提供した) CSR から新しい証明書を作成します。この新しい証明書を Stripe に再度アップロードする必要はありません。完了したら、アプリで Apple Pay 証明書をオフにしてからオンに切り替え、正しく更新されていることを確認します。
支払い画面を表示する
PlatformPayButton
の onPress
プロパティーで、confirmPlatformPayPayment
を呼び出して Apple Pay 画面を表示します。 決済画面に顧客のカートアイテムを表示するには、アイテムを引数として渡します。
注
顧客のアクションを処理するコードには、決済画面を表示する前に複雑なアクションや非同期のアクションを含めないでください。ユーザーアクションが決済画面を直接呼び出さない場合、Apple Pay はエラーを返します。
import { confirmPlatformPayPayment } from '@stripe/stripe-react-native'; function PaymentScreen() { // ... see above const pay = async () => { const clientSecret = await fetchPaymentIntentClientSecret() const { error } = await confirmPlatformPayPayment( clientSecret, { applePay: { cartItems: [ { label: 'Example item name', amount: '14.00', paymentType: PlatformPay.PaymentType.Immediate, }, { label: 'Total', amount: '12.75', paymentType: PlatformPay.PaymentType.Immediate, }, ], merchantCountryCode: 'US', currencyCode: 'USD', requiredShippingAddressFields: [ PlatformPay.ContactField.PostalAddress, ], requiredBillingContactFields: [PlatformPay.ContactField.PhoneNumber], }, } ); if (error) { // handle error } else { Alert.alert('Success', 'Check the logs for payment intent details.'); console.log(JSON.stringify(paymentIntent, null, 2)); } }; // ... see above }
Apple Pay のテスト
Stripe のテストカード情報は iOS の Wallet に保存できません。ただし、お客様がテスト API キーを使用すると、Stripe はそれを認識し、利用可能な成功したテストカードのトークンを返します。これにより、本番環境のカードを使用して、請求を伴わないテスト支払いを実行できます。