- Home
- Japanese Welcome
- Quick Links
- Access Worldpay
- Checkout SDK
- iOS SDK
- カードとCVCで支払うセッションの作成
カードとCVCで支払うセッションの作成
iOS SDKでカードの詳細とCVCに個別のsessionを作成することにより、顧客の支払の詳細を保護します。
完全な統合例:
UIコンポーネントを参照する
チェックアウトフォームを表示するには、最初にストーリーボードでレイアウトを作成しなければなりません。
一意の識別子でUIコンポーネントを参照する方法例:
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を初期化しなければなりません。
初期化を行うにはBaseURL
、merchantID
およびその他のパラメーターを指定しなければなりません。
必須パラメーターでSDKを初期化する方法例:
// 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()
// 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> |
|
<MERCHANT_ID> | Worldpayから提供された一意の加盟店ID。 |
取得: session
顧客のカードの詳細の送信
CardDetails
には、session
を取得するために送信される顧客のデータが含まれています。
// 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()
// 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]
を指定しなければなりません。
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
...
}
}
}
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が更新される場合は、クロージャーでメインスレッドのパターンを使用する必要があります
完全なコードサンプル
上記の手順の完全なコードサンプル:
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
を受け取った後、session
と一緒に使用して
重要:カード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
値を作成する必要があります。これは、
paymentInstrument
は、ファイルリソース (
CVC専用のsessionを作成しなければなりませんか?以下の統合例をご覧ください。
CVC専用のsessionの作成
顧客のCVCsession
を送信して、支払cvcを作成します。
完全な統合例:
UIコンポーネントを参照する
チェックアウトフォームを表示するには、最初にストーリーボードでレイアウトを作成しなければなりません。
一意の識別子でUIコンポーネントを参照する方法例:
import AccessCheckoutSDK
class ViewController: UIViewController {
@IBOutlet weak var cvcTextField: UITextField!
func submitButtonClickHandler() {
// code to generate your session
...
}
...
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を初期化しなければなりません。
初期化を行うにはBaseURL
、merchantID
およびその他のパラメーターを指定しなければなりません。
必須パラメーターでSDKを初期化する方法例:
// 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()
// 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> |
|
<MERCHANT_ID> | Worldpayから提供された一意の加盟店ID。 |
取得: session
顧客のカードの詳細の送信
CardDetails
には、session
を取得するために送信される顧客のデータが含まれています。
let cardDetails:CardDetails = try! CardDetailsBuilder().cvc(cvcTextField.text!)
.build()
let cardDetails:CardDetails = try! CardDetailsBuilder().cvc(cvcTextField.text!) .build()
sessionの指定
生成するsession
のタイプとして[SessionType.cvc]
を指定しなければなりません。
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
...
}
}
}
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が更新される場合は、クロージャーでメインスレッドのパターンを使用する必要があります
完全なコードサンプル
上記の手順の完全なコードサンプル:
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
は、ファイルリソース (
Next steps
の受理