Translation disclaimer

Documentation is written in English and subsequently translated. This page, therefore, might not have the most up-to-date content. If any questions arise relating to the accuracy of the translated content, please refer to the English version of the page.

Menu

カードとCVCで支払うセッションの作成

iOS SDKでカードの詳細とCVCに個別のsessionを作成することにより、顧客の支払の詳細を保護します。

完全な統合例:こちらでsession生成例を確認できます。

UIコンポーネントを参照する

チェックアウトフォームを表示するには、最初にストーリーボードでレイアウトを作成しなければなりません。

一意の識別子でUIコンポーネントを参照する方法例:

Copied!
import AccessCheckoutSDK
class ViewController: UIViewController {

    @IBOutlet weak var panTextField: UITextField!
    @IBOutlet weak var expiryDateTextField: UITextField!
    @IBOutlet weak var cvcTextField: UITextField!

    func submitButtonClickHandler() {
        // code to generate your sessions
        ...
    }    ...

カード検証

オプションで、顧客のカードの詳細を確認できます。[こちら]で手順を確認することができます。(/ja/docs/access-worldpay/checkout/ios/card-validator)

作成: session

AccessCheckoutClientBuilderを初期化します

AccessCheckoutClientBuilderでSDKを初期化しなければなりません。

初期化を行うにはBaseURLmerchantIDおよびその他のパラメーターを指定しなければなりません。

必須パラメーターでSDKを初期化する方法例:

Copied!
// The AccessCheckoutClientBuilder throws an error if either the accessBaseUrl() or merchantId() calls are omitted 
let accessCheckoutClient:AccessCheckoutClient? = try? AccessCheckoutClientBuilder().accessBaseUrl(<ACCESS_BASE_URL>)
   .merchantId(<MERCHANT_ID>)
   .build()
プレースホルダー説明
<ACCESS_BASE_URL>
  • テスト用:https://try.access.worldpay.com/
  • ライブ使用:https://access.worldpay.com/
<MERCHANT_ID>Worldpayから提供された一意の加盟店ID。

取得: session

顧客のカードの詳細の送信

CardDetailsには、sessionを取得するために送信される顧客のデータが含まれています。

Copied!
// The CardDetailsBuilder throws an error if the expiry date is provided in a format different from MM/YY or MMYY (which will not happen if you use the components with built-in validation provided by the SDK)
let cardDetails:CardDetails = try! CardDetailsBuilder().pan(panTextField.text!)
    .expiryDate(expiryDateTextField.text!)
    .cvc(cvcTextField.text!)
    .build()

sessionの指定

生成するsessionのタイプとして[SessionType.card][SessionType.cvc]を指定しなければなりません。

Copied!
try? accessCheckoutClient?.generateSessions(cardDetails: cardDetails, sessionTypes: [SessionType.card, SessionType.cvc]) { result in
    DispatchQueue.main.async {
        switch result {
        case .success(let sessions):
            // The session is returned in a Dictionary[SessionType:String]
            let cardSession = sessions[SessionType.card]
            let cvcSession = sessions[SessionType.cvc]
            ...
        case .failure(let error):
            // The error returned is of type AccessCheckoutError 
            let errorMessage = error.message
            ...
        }
    }
}

注記:

  • generateSessionsへの呼び出しは、Result<[SessionType: String], AccessCheckoutError>を返すクロージャを取ります
  • 成功/失敗を処理するとUIが更新される場合は、クロージャーでメインスレッドのパターンを使用する必要があります

完全なコードサンプル

上記の手順の完全なコードサンプル:

Copied!
import AccessCheckoutSDK
class MyViewController: UIViewController {
    private let accessBaseUrl = "https://try.access.worldpay.com"
    private let checkoutId = "your-checkout-id"
    @IBOutlet weak var panAccessCheckoutView: AccessCheckoutUITextField!
    @IBOutlet weak var expiryDateAccessCheckoutView: AccessCheckoutUITextField!
    @IBOutlet weak var cvcAccessCheckoutView: AccessCheckoutUITextField!
    @IBAction func submit(_ sender: Any) {
        let cardDetails = try! CardDetailsBuilder().pan(panAccessCheckoutView)
            .expiryDate(expiryDateAccessCheckoutView)
            .cvc(cvcAccessCheckoutView)
            .build()
        let accessCheckoutClient = try? AccessCheckoutClientBuilder().accessBaseUrl(accessBaseUrl)
            .checkoutId(checkoutId)
            .build()
        try? accessCheckoutClient?.generateSessions(cardDetails: cardDetails, sessionTypes: [SessionType.card, SessionType.cvc]) { result in
            DispatchQueue.main.async {
                switch result {
                    case .success(let sessionsDictionary):
                        let cardSession = sessionsDictionary[SessionType.card]
                        let cvcSession = sessionsDictionary[SessionType.cvc]
                        ...
                    case .failure(let error):
                        ...
                }
            }
        }
    }
}

検証済みトークンの作成

カードsessionを受け取った後、検証済みのトークンを作成し、それをCVCsessionと一緒に使用して支払を受理する必要があります。

重要:カードsessionの寿命は1分間で、一度しか使用できません。その時間内にトークンを作成しない場合は、新しいCARDsession値を作成する必要があります。

支払の受理

Use the value of the CVC session and the verified token in our card/checkout paymentInstrument to take a card on file payment.

重要:CVCsessionの寿命は15分間で、一度しか使用できません。その時間内に支払を受け取らない場合は、新しいCVCsession値を作成する必要があります。これは、CVCのみのSDKを使用して実行できます。

paymentInstrumentは、ファイルリソース (payments:cardOnFileAuthorize,payments:migrateCardOnFileSaleandpayments:migrateCardOnFileAuthorize) のどのカードでも使用できます。


CVC専用のsessionを作成しなければなりませんか?以下の統合例をご覧ください。

CVC専用のsessionの作成

顧客のCVCsessionを送信して、支払cvcを作成します。

完全な統合例:こちらでsession生成例を確認できます。

UIコンポーネントを参照する

チェックアウトフォームを表示するには、最初にストーリーボードでレイアウトを作成しなければなりません。

一意の識別子でUIコンポーネントを参照する方法例:

Copied!
import AccessCheckoutSDK

class ViewController: UIViewController {

    @IBOutlet weak var cvcTextField: UITextField!

    func submitButtonClickHandler() {
        // code to generate your session
        ...
    }   
    ...

CVC validation

オプションで、顧客のCVCを確認できます。[こちら]で手順を確認することができます。(/ja/docs/access-worldpay/checkout/ios/cvc-validator)

CVCの作成 session

AccessCheckoutClientBuilderを初期化します

AccessCheckoutClientBuilderでSDKを初期化しなければなりません。

初期化を行うにはBaseURLmerchantIDおよびその他のパラメーターを指定しなければなりません。

必須パラメーターでSDKを初期化する方法例:

Copied!
// The AccessCheckoutClientBuilder throws an exception if either the accessBaseUrl() or merchantId() calls are omitted 
let accessCheckoutClient:AccessCheckoutClient? = try? AccessCheckoutClientBuilder().accessBaseUrl(<ACCESS_BASE_URL>)
   .merchantId(<MERCHANT_ID>)
   .build()
プレースホルダー説明
<ACCESS_BASE_URL>
  • テスト用:https://try.access.worldpay.com/
  • ライブ使用:https://access.worldpay.com/
<MERCHANT_ID>Worldpayから提供された一意の加盟店ID。

取得: session

顧客のカードの詳細の送信

CardDetailsには、sessionを取得するために送信される顧客のデータが含まれています。

Copied!
let cardDetails:CardDetails = try! CardDetailsBuilder().cvc(cvcTextField.text!)
    .build()

sessionの指定

生成するsessionのタイプとして[SessionType.cvc]を指定しなければなりません。

Copied!
try? accessCheckoutClient?.generateSessions(cardDetails: cardDetails, sessionTypes: [SessionType.cvc]) { result in
    DispatchQueue.main.async {
        switch result {
        case .success(let sessions):
            // The session is returned in a Dictionary[SessionType:String]
            let session = sessions[SessionType.cvc]
            ...
        case .failure(let error):
            // The error returned is of type AccessCheckoutError 
            let errorMessage = error.message
            ...
        }
    }
}

推奨:

  • generateSessionsへの呼び出しは、Result[SessionType: String], AccessCheckoutError>を返すクロージャを取ります
  • 成功/失敗を処理するとUIが更新される場合は、クロージャーでメインスレッドのパターンを使用する必要があります

完全なコードサンプル

上記の手順の完全なコードサンプル:

Copied!
import AccessCheckoutSDK
class MyViewController: UIViewController {
    private let accessBaseUrl = "https://try.access.worldpay.com"
    private let checkoutId = "your-checkout-id"
    @IBOutlet weak var cvcAccessCheckoutView: AccessCheckoutUITextField!
    @IBAction func submit(_ sender: Any) {
        let cardDetails = try! CardDetailsBuilder().cvc(cvcAccessCheckoutView)
            .build()
        let accessCheckoutClient = try? AccessCheckoutClientBuilder().accessBaseUrl(accessBaseUrl)
            .checkoutId(checkoutId)
            .build()
        try? accessCheckoutClient?.generateSessions(cardDetails: cardDetails, sessionTypes: [SessionType.card, SessionType.cvc]) { result in
            DispatchQueue.main.async {
                switch result {
                    case .success(let sessionsDictionary):
                        let cardSession = sessionsDictionary[SessionType.card]
                        let cvcSession = sessionsDictionary[SessionType.cvc]
                        ...
                    case .failure(let error):
                        ...
                }
            }
        }
    }
}

Take a payment

Use the value of the CVC session and your stored verified token in our card/checkout paymentInstrument to take a card on file payment.

重要:CVCsessionの寿命は15分間で、一度しか使用できません。その時間内に支払を受け取らない場合は、新しいCVCsession値を作成する必要があります。

paymentInstrumentは、ファイルリソース (payments:cardonFileAuthorize,payments:migrateCardOnFileSaleandpayments:migrateCardOnFileAuthorize) のどのカードでも使用できます。

Next steps


カード・オン・ファイル販売
の受理カード・オン・ファイル認証の受理、または
ファイル認証でカードの移行