MacBook ProのTouch Barでもできる、Safari上でのApple Pay決済の流れとApple Pay JSの使い方:Apple Payアプリ開発入門(2)(3/3 ページ)
2016年10月25日から日本でも利用可能になったApple Payについて、JavaScriptを利用したWeb上での決済の流れを、実装フレームワークApple Pay JSの使い方とともに解説します
Ruby on Railsでサーバサイドの実装
次にサーバサイドの実装を見ていきます。今回はRuby on Railsを使いました。
class MerchantValidationsController < ApplicationController def create uri = URI.parse(params[:validation_url]) cert_file = File.read(Rails.root.join('files').join('xxx.cert').to_s) # 先ほど作成したxxx.certを利用 http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true http.cert = OpenSSL::X509::Certificate.new(cert_file) http.key = OpenSSL::PKey::RSA.new(cert_file) render json: http.post(uri.path, { merchantIdentifier: 'merchantID', domainName: 'mydomain', displayName: 'SHOP NAME' }.to_json).body end end
ここまで終わるとユーザーの端末に認証画面が表示されます。
ApplePaySessionのコールバックメソッドを追加
また、フロント側に戻ってApplePaySessionのコールバックメソッドを追加します。キャンセル時・配送先選択時など、それぞれのアクションに応じたコールバックメソッドがあるので、それぞれ必要な処理を追加してください。
<script type="text/javascript"> if (window.ApplePaySession) { if (ApplePaySession.canMakePaymentsWithActiveCard("merchantID")) { $(".pay-button").show(); } } $(".pay-button").click(function() { var request = { countryCode: 'JP', currencyCode: 'JPY', supportedNetworks: ['visa', 'jcb', 'masterCard'], merchantCapabilities: ['supports3DS'], total: { label: 'ひまわり', amount: '1200' } }; var session = new ApplePaySession(2, request); session.onvalidatemerchant = function (event) { $.get("/merchant_validation", {validation_url: event.validationURL}, function(res) { session.completeMerchantValidation(res); }); } // ここから今回追加 session.oncancel = function(event) {}; // キャンセルを押した時に呼ばれる session.onpaymentmethodselected = function(event) {}; // 支払い方法選択時に呼ばれる session.onshippingmethodselected = function(event) {}; // 配送方法を選択された時に呼ばれる session.onshippingcontactselected = function(event) {}; // 住所選択時に呼ばれる session.onpaymentauthorized = function(event) {}; // 決済完了時に呼ばれる // ここまで今回追加 session.begin(); }); </script>
各決済プラットフォームとの連携
最後に実際の決済処理についても触れておきます。決済処理はアップルの外部の決済プラットフォームと連携する必要があります。
具体的には、「onpaymentauthorized」というコールバックメソッドで決済Tokenが発行されるので、それを使って決済プラットフォームと連携を行います。
session.onpaymentauthorized = function(event) { // event.payment.tokenでTokenを取得できる };
2016年11月現在、以下の決済プラットフォームがApple Payに対応しています。連携方法については各プラットフォームのドキュメントをご参照ください。
最新情報はアップル公式ドキュメントで
本連載では、Apple Payを使った決済処理を実装してきましたがいかがでしょうか。Apple Payを使ったアプリ開発の一助になりましたら幸いです。
Apple Pay自体の最新情報はアップル公式ドキュメント「Apple Pay - Apple Developer」の「Payment Platforms」をご参照ください。
今回のサンプルコードは、こちらからダウンロードできます。
筆者紹介
杉本裕樹
田町のベンチャーで働くエンジニア。
仕事ではiPhoneアプリの開発やRailsを使ったWebサービス開発を行っている。最近のマイブームはUnityを使った3Dゲーム開発。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- iOS 10 SDKの新機能SiriKit、音声認識、iMessage拡張を自作アプリに生かすには
iOS 10で開発者にAPIが解放されたと話題の音声アシスタント「Siri」。その実態はどんなものなのか。SiriKit、Speech/Messages Frameworkの使い方と併せて、簡単なアプリを作りながら解説します。 - 「iPhone 7」の新機能、エンジニアは“どこ”を評価した?
「fabcross for エンジニア」が、設計/開発系エンジニアに聞いたiPhone 7/iPhone 7 Plusに関する意識調査結果を発表。彼らがiPhone 7の新機能で特に評価した項目は……? - 2Dゲームを例にSwift 2からSwift 3への変更点と移行のポイントを見る
iPhoneゲームをSwift言語で作成してみたいという初心者向けにiOSのゲームフレームワークを使った作り方を一から解説する入門連載。今回は、これまでに作成したアプリのコードをSwift 3.0に対応することで、対応する際のポイントや3.0での変更点を解説します。併せて、Xcode 8のSwift 3.0自動変換ツールの使い方なども紹介します。