Payment without Security code
Payment without Security Code (CVC), is not a standard practice and can only be approved in exceptional cases. The below flow requires approval from Nets. Contact your account manager to enable this option.
Initial transaction of Easy Payment flow
In the initial transaction of Easy Payment flow, PiA SDK should be started as similar as
the basic payment flow. Then, Easy payment can be triggered if the user selects to save the card
for the future usage during the card entry process. Then, SDK will pass the boolean parameter
saveCard
with true
(by default, it is set to false to trigger the basic
payment flow as mentioned above) in the register call to notify the app to go ahead with the Easy payment flow and
you need to make the transaction registration according to the sequence diagram above.
After your app gets the successful result from PiA SDK, you can start Netaxept call(s) to proceed the transaction and fetch and store token in your backend which will be utilised for the subsequent transaction of Easy Payment.
Subsequent transaction of Easy Payment flow
In the subsequent transaction of Easy payment, you can follow the same way as the initial transaction to start PiA SDK and make sure:
- you pass a
non-nil
card token when instantiating the PiA SDK - the register call from your backend contains the parameter
recurringUse3DS = true
in order to trigger 3DSecure authentication as per PSD2/SCA requirements.
Important Note: If you wish to skip security code entry, you need approval from your acquirer.
The iOS SDK supports 3 different ways of presenting subsequent payments to the user:
Option 1 | Option 2 | Option 3 |
---|---|---|
![]() |
![]() |
![]() |
Option 1: Require user confirmation: Present a card view with entry field for CVC (if CVC is required) and a “Pay XX.XX” button to confirm payment
let confirmationPrompt = TokenizedCardPrompt.forAmount(
UInt(orderDetails.amount.totalAmount),
currency: orderDetails.amount.currencyCode,
shouldPromptCVC: true/false)
Option 2: Skip user confirmation - with SDK UI: Present a card view with an activity indicator while processing payment without requiring user confirmation
let confirmationPrompt = TokenizedCardPrompt.none
For option 1 and 2, once the confirmationPrompt is set, you can generate the PaymentProcess object and continue.
let tokenPaymentProcess = PaymentProcess.tokenizedCardPayment(
withMerchant: merchantDetails,
token: card.tokenId,
expiryDate: card.expiryDate!,
cardDisplay: cardDisplay,
confirmationPrompt: confirmationPrompt,
registrationCallback: { [unowned self] callback in
//Make the registration call and return the callback
})
Preset the controller and handle the callbacks
PiaSDK.controller(
for: tokenPaymentProcess,
success: { piaController, transactionId in }, // Commit the transaction with your merchant backend
cancellation: { piaController, transactionId in }, // User canceled, rollback the transaction
failure: { piaController, error in} // Rollback transaction, check error object for detail.
)
Option 3: Skip user confirmation - without SDK UI: Process payment staying in customer’s view controller (presenting 3DS authentication webpage on the customer’s controller if necessary)
Initiate the payment by making the registration call and then call the below API. Make sure to handle the respective callbacks.
PiaSDK.initiateCardPayment(
with: PaymentProcess.tokenizedCardExpressCheckout(
from: self.navigationController,
merchant: self.merchantDetails,
transactionID: transaction.transactionId,
redirectURL: URL(string: transaction.redirectOK)!
),
success: { piaController, transactionId in }, // Commit the transaction with your merchant backend
cancellation: { piaController, transactionId in }, // User canceled, rollback the transaction
failure: { piaController, error in} // Rollback transaction, check error object for detail.
)
Note:
- Options 2 and 3 are not applicable if CVC is required. Approval must be granted by your acquirer.
- Netaxept backend integration tips can be found in 5.4 Backend Tips, Registering Easy Payment section