PAY.JP iOS SDK のインストール
PAY.JP iOS SDK を使用するには、Carthage または CocoaPods を使ってインストールします。
Carthage を使う場合
github "payjp/payjp-ios"
CocoaPods を使う場合
pod 'PAYJP'
SDK の初期化
まず、UIApplicationDelegate
クラスを継承したクラスで、PAY.JP の公開鍵を設定して SDK を初期化します。
以下のサンプルコードではテストモードの公開鍵を設定しています。
import PAYJP
class AppDelegate: UIApplicationDelegate {
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions:
[UIApplication.LaunchOptionsKey: Any]? = nil) -> Bool {
PAYJPSDK.publicKey = "pk_test_0383a1b8f91e8a6e3ea0e2a9"
PAYJPSDK.locale = Locale.current
return true
}
購入ボタンの表示
iOS SDK が提供する購入ボタン PKPaymentButton
を ViewController
で表示します。
let button = PKPaymentButton(paymentButtonType: .buy, paymentButtonStyle: .black)
self.view.addSubView(button)
ペイメントリクエストの作成
Apple Pay での支払いに対する PKPaymentRequest
オブジェクトを作成します。appleMerchantID
には Xcode の設定で有効化したマーチャント ID を設定してください。
let request = PKPaymentRequest()
request.merchantIdentifier = appleMerchantID
request.currencyCode = "JPY"
request.countryCode = "JP"
request.supportedNetworks = [.visa, .masterCard, .JCB, .amex]
request.merchantCapabilities = .capability3DS
request.requiredBillingAddressFields = .email
支払いサマリーアイテムの作成
ペイメントリクエストに PKPaymentSummaryItem
を使って商品の情報を追加します。ここでは商品名と価格を設定しています。
let item = PKPaymentSummaryItem(
label: "PAY.JP TEST ITEM", amount: NSDecimalNumber(string: "100")
)
request.paymentSummaryItems = [item]
ペイメントシートの表示
PKPaymentAuthorizationViewController
にペイメントリクエストを設定し、画面に表示します。
let vc = PKPaymentAuthorizationViewController(paymentRequest: request)
vc.delegate = self
present(vc, animated: true, completion: nil)
delegateメソッドの実装
PKPaymentAuthorizationViewControllerDelegate
のメソッドを定義して、ユーザーの操作が発生した時の処理を実装します。
// ViewController
func paymentAuthorizationViewController(
_ controller: PKPaymentAuthorizationViewController,
didAuthorizePayment payment: PKPayment,
completion: @escaping (PKPaymentAuthorizationStatus) -> Void
) {
// TODO:
}
func paymentAuthorizationViewControllerDidFinish(
_ controller: PKPaymentAuthorizationViewController
) {
controller.dismiss(animated: true, completion: nil)
}
トークンの作成
delegate メソッドで渡される Apple Pay のペイメントトークンから PAY.JP トークンを作成します。これには APIClient#createToken
を呼び出します。
注意: iOS シミュレーターで実行時には payment.token
は空の値になりますので、実機で実行してください。
// import PAYJP
func paymentAuthorizationViewController(
_ controller: PKPaymentAuthorizationViewController,
didAuthorizePayment payment: PKPayment,
completion: @escaping (PKPaymentAuthorizationStatus) -> Void
) {
let apiClient = APIClient.shared
apiClient.createToken(with: payment.token) { (result) in
switch result {
case .success(let token):
// トークンオブジェクトを処理し、サーバーに送信します
// https://pay.jp/docs/charge
completion(.success)
case .failure(let error):
print(error)
completion(.failure)
}
}
}
サーバーサイドの実装
PAY.JP トークンの生成に成功したら、これをあなたのサーバーへ送信し支払い処理を実行します。サーバーサイドでの実装は PAY.JP ドキュメント内の支払いを行うや、以下のドキュメントとサンプルコードを参考にしてください。