TPCSDK

@objcMembers
public final class TPCSDK : NSObject, SdkProtocol

TPCSDK for iOS

TPCSDK Properties

  • This is the version of the TPCSDK

    Declaration

    Swift

    public static let tpcsdkVersion: String

TPCSDK Configuration

  • Reset SDK

    Declaration

    Swift

    public static func reset()
  • Configure SDK with SdkVariant and Issuer ID.

    Note

    Using SdkVariant and Issuer ID

    • Possible errors:

    • TPCError.invalidArgument

    • TPCError.notSupported

    func application(_ application: UIApplication,
       didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
    
        let tpcVariant = SdkVariant.PROD
        let tpcIssuerId = "TPC_ISSUER"
        try? TPCSDK.configure(variant: tpcVariant, issuerId: tpcIssuerId)
    
        return true
    }
    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        // Override point for [customization after application launch.
    
        SdkVariant tpcVariant = SdkVariantPROD;
        NSString * tpcIssuerId = @"TPC_ISSUER";
        NSError * error;
        [TPCSDK configureWithVariant:tpcVariant issuerId:tpcIssuerId error:&error];
    
        return YES;
    }
    

    Declaration

    Swift

    @objc
    public static func configure(variant: SdkVariant,
                                 issuerId: String) throws

    Parameters

    variant

    Use SdkVariant.PPROD for Pre-Production server and SdkVariant.PROD for Production server.

    issuerId

    Issuer ID is provided to you during onboarding process.

  • Configure SDK with Server URL and Issuer ID.

    Note

    Using Server URL and Issuer ID

    • Possible errors:

    • TPCError.invalidArgument

    • TPCError.notSupported

    func application(_ application: UIApplication,
       didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
    
        let tpcServerUrl = "https://hapi.dbp.thalescloud.io/mg/tpc"
        let tpcIssuerId  = "TPC_ISSUER"
        try? TPCSDK.configure(url: tpcServerUrl, issuerId: tpcIssuerId)
    
        return true
    }
    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        // Override point for [customization after application launch.
    
        NSString * tpcServerUrl = @"https://hapi.dbp.thalescloud.io/mg/tpc";
        NSString * tpcIssuerId = @"TPC_ISSUER";
        NSError * error;
        [TPCSDK configureWithUrl:tpcServerUrl issuerId:tpcIssuerId error:&error];
    
        return YES;
    }
    

    Declaration

    Swift

    @objc
    public static func configure(url: String,
                                 issuerId: String) throws

    Parameters

    url

    Provide server URL without trailing slash (example: https://hapi.dbp.thalescloud.io).

    issuerId

    Issuer ID is provided to you during onboarding process.

Push Provisioning

  • Get card digitization status for local and remote device.

    • Possible errors:
    • TPCError.notConfigured
    • TPCError.invalidArgument
    • TPCError.invalidFormat
    • TPCError.serverError

    Note

    Using FundingCard object initialized with Card’s Scheme and Encrypted Payload

    Note

    For AMEX and DISCOVER, it is mandatory to provide scheme and primaryAccountNumberSuffix.

    TPCSDK.getCardDigitizationResult(card: card) {
       (primaryAccountIdentifier, digitizeDetails, error) in
    }
    
    [TPCSDK getCardDigitizationResultWithCard:card
                     primaryAccountIdentifier:NULL
                                   completion:^(NSString * _Nullable primaryAccountIdentifier,
                                               CardDigitizationResult * _Nullable digitizeDetails,
                                               NSError * _Nullable error) {
    
    }];
    

    Note

    Using FundingCard object initialized with Primary Account Identifier
    TPCSDK.getCardDigitizationResult(card: card) {
       (primaryAccountIdentifier, digitizeDetails, error) in
    }
    
    [TPCSDK getCardDigitizationResultWithCard:card
                     primaryAccountIdentifier:NULL
                                   completion:^(NSString * _Nullable primaryAccountIdentifier,
                                               CardDigitizationResult * _Nullable digitizeDetails,
                                               NSError * _Nullable error) {
    
    }];
    

    Note

    Using Primary Account Identifier
    TPCSDK.getCardDigitizationResult(primaryAccountIdentifier: cardIdentifier) {
       (primaryAccountIdentifier, digitizeDetails, error) in
    }
    
    [TPCSDK getCardDigitizationResultWithCard:NULL
                     primaryAccountIdentifier:cardIdentifier
                                   completion:^(NSString * _Nullable primaryAccountIdentifier,
                                               CardDigitizationResult * _Nullable digitizeResult,
                                               NSError * _Nullable error) {
    }];
    

    Declaration

    Swift

    public static func getCardDigitizationResult(card: FundingCard? = nil,
                                                 primaryAccountIdentifier: String? = nil,
                                                 primaryAccountNumberSuffix: String? = nil,
                                                 completion: @escaping (_ primaryAccountIdentifier: String?, _ digitizeDetails: CardDigitizationResult?, _ error: Error?) -> Void)

    Parameters

    card

    FundingCard object initialized with Card’s Scheme and Encrypted Payload, or FundingCard object initialized with Primary Account Identifier

    primaryAccountIdentifier

    Primary Account Identifier of the payment card

    primaryAccountNumberSuffix

    The last four or five digits of the card’s number. This field is only used for AMEX/DISCOVER schemes and supported only on iOS 13.4 and above.

    completion

    The callback invoked when the operation is completed. When it succeeds, it returns digitizeDetails - See CardDigitizationResult and possible primaryAccountIdentifier. Otherwise, it returns error details.

  • Get token for local and remote device.

    • Possible errors:
    • TPCError.deviceEnvironmentUnsafe
    • TPCError.notSupported

    Since

    2.1.0

    Note

    Using GetTokenInput object initialized with last 4 digits of PAN

    TPCSDK.getToken(input: tokenInput) {
       (localPass, remotePass, error) in
    }
    
    [TPCSDK getTokenWithInput:tokenInput
                   completion:^(PKPass *_Nullable localPass,
                               PKPass *_Nullable remotePass,
                               NSError *_Nullable error) {
    }];
    

    Declaration

    Swift

    public static func getToken(input: GetTokenInput,
                                completion: @escaping (_ localPass: PKPass?, _ remotePass: PKPass?, _ error: Error?) -> Void)

    Parameters

    input
    completion

    The callback invoked when the operation is completed. When it succeeds, it returns a local and remote PKPass. Otherwise, it returns error details.

  • Warning

    This API is deprecated as it does not provide information about pending activation and Apple Watch status. Please use getCardDigitizationResult API instead.

    Check card digitization status with FundingCard or Primary Account Identifier.

    • Possible errors:
    • TPCError.notConfigured
    • TPCError.invalidArgument
    • TPCError.invalidFormat
    • TPCError.serverError

    Important

    Display Add to Apple Wallet button if digitizeResult is IsCardDigitizedResult.CardNotDigitized.

    See also

    TPCSDK.getCardDigitizationResult(card:completion:) for details of card digitization result on current device or an attached device.

    Note

    Using FundingCard object initialized with Card’s Scheme and Encrypted Payload

    Note

    For AMEX and DISCOVER, it is mandatory to provide scheme and primaryAccountNumberSuffix.

    TPCSDK.isCardDigitized(card: card) {
        (primaryAccountIdentifier, digitizeResult, error) in
            switch digitizeResult {
               case .CardNotDigitized:
                   // TODO: Display Add to Apple Wallet button
                   break
            default: break
        }
    }
    
    [TPCSDK isCardDigitizedWithCard:card
           primaryAccountIdentifier:NULL
                         completion:^(NSString * _Nullable primaryAccountIdentifier, enum IsCardDigitizedResult digitizeResult, NSError * _Nullable error) {
        switch(digitizeResult) {
            case IsCardDigitizedResultCardNotDigitized:
               // TODO: Display Add to Apple Wallet button
               break;
    
            default: break;
        }
    }];
    

    Note

    Using FundingCard object initialized with Primary Account Identifier
    TPCSDK.isCardDigitized(card: card) {
       (primaryAccountIdentifier, digitizeResult, error) in
    
            switch digitizeResult {
                case .CardNotDigitized:
                // TODO: Display Add to Apple Wallet button
                break
            default: break
        }
    }
    
    [TPCSDK isCardDigitizedWithCard:card
           primaryAccountIdentifier:NULL
                         completion:^(NSString * _Nullable primaryAccountIdentifier, enum IsCardDigitizedResult digitizeResult, NSError * _Nullable error) {
        switch(digitizeResult) {
            case IsCardDigitizedResultCardNotDigitized:
               // TODO: Display Add to Apple Wallet button
            break;
    
            default: break;
        }
    }];
    

    Note

    Using Primary Account Identifier
    TPCSDK.isCardDigitized(primaryAccountIdentifier: cardIdentifier) {
       (digitizeResult, error) in
    
        switch digitizeResult {
            case .CardNotDigitized:
               // TODO: Display Add to Apple Wallet button
            break
    
            default:
               // TODO: Hide Add to Apple Wallet button
            break
        }
    }
    
    [TPCSDK isCardDigitizedWithCard:NULL
           primaryAccountIdentifier:cardIdentifier
                         completion:^(NSString * _Nullable primaryAccountIdentifier, enum IsCardDigitizedResult digitizeResult, NSError * _Nullable error) {
        switch(digitizeResult) {
            case IsCardDigitizedResultCardNotDigitized:
            // TODO: Display Add to Apple Wallet button
            break;
    
            default:
            // TODO: Hide Add to Apple Wallet button
            break;
        }
    }];
    

    Declaration

    Swift

    @available(*, deprecated, message: "This API is deprecated as it does not provide information about pending activation and Apple Watch status. Please use getCardDigitizationResult API instead.")
    public static func isCardDigitized(card: FundingCard? = nil,
                                       primaryAccountIdentifier: String? = nil,
                                       primaryAccountNumberSuffix: String? = nil,
                                       completion: @escaping (_ primaryAccountIdentifier: String?, _ digitizeResult: IsCardDigitizedResult, _ error: Error?) -> Void)

    Parameters

    card

    FundingCard object initialized with Card’s Scheme and Encrypted Payload, or FundingCard object initialized with Primary Account Identifier

    primaryAccountIdentifier

    Primary Account Identifier of the payment card

    primaryAccountNumberSuffix

    The last four or five digits of the card’s number. This field is only used for AMEX/DISCOVER schemes and supported only on iOS 13.4 and above.

    completion

    The callback invoked when the operation is completed. When it succeeds, it returns digitizeResult - See IsCardDigitizedResult and possible primaryAccountIdentifier. Otherwise, it returns error details.

  • Displays an interface that lets users add cards to Apple Pay from within your app.

    TPCSDK.provision(fromController: self,
               primaryAccountSuffix: "1234",
                     cardholderName: "John Doe",
                             scheme: CardScheme.Mastercard,
                   encryptedPayload: "PKCS7 encrypted PAN",
                  authorizationCode: "code",
                  provisionDelegate: self)
    
    [TPCSDK provisionFromController:self
               primaryAccountSuffix:@"1234"
                     cardholderName:@"John Doe"
                             scheme:CardSchemeMastercard
                   encryptedPayload:@"PKCS7 encrypted PAN"
                  authorizationCode:@"code"
                  provisionDelegate:self];
    

    Declaration

    Swift

    public static func provision(fromController controller: UIViewController,
                                 primaryAccountSuffix: String,
                                 cardholderName: String?,
                                 scheme: CardScheme,
                                 encryptedPayload: String,
                                 authorizationCode: String,
                                 provisionDelegate: TPCSDKProvisionDelegate? = nil)

    Parameters

    fromController

    The calling UIViewController

    primaryAccountSuffix

    The Funding PAN suffix to be displayed is defined within the primaryAccountSuffix key. This value should be 4 digits and will have dots prepended to indicate that it is a suffix.

    cardholderName

    The name of the person as shown on the card

    scheme
    encryptedPayload

    Card information encrypted in PKCS7

    authorizationCode

    Authorization code

    provisionDelegate
  • Displays an interface that lets users add cards to Apple Pay from within your app.

    Note

    In case of Amex or Discover scheme, the SDK can not retrieve primaryAccountIdentifier from the server. You need to use the getCardDigitizationResult API to obtain a CardDigitizationResult object. If either the localPKPass or remotePKPass properties of the CardDigitizationResult object are not nil, then access the primaryAccountIdentifier property of the PKSecureElementPass object. Pass the retrieved primaryAccountIdentifier to the provision API.

    TPCSDK.provision(fromController: self,
               primaryAccountSuffix: "1234",
                     cardholderName: "John Doe",
                       schemeString: "MASTERCARD",
                   encryptedPayload: "PKCS7 encrypted PAN",
                  authorizationCode: "code",
                          productId: "productId",
           primaryAccountIdentifier: "primaryAccountIdentifier",
                  provisionDelegate: self)
    
    [TPCSDK provisionFromController:self
               primaryAccountSuffix:@"1234"
                   cardholderName:@"John Doe"
                     schemeString:@"MASTERCARD"
                 encryptedPayload:@"PKCS7 encrypted PAN"
                authorizationCode:@"code"
                        productId:@"productId"
         primaryAccountIdentifier:@"primaryAccountIdentifier"                     
                provisionDelegate:self];
    

    Declaration

    Swift

    public static func provision(fromController controller: UIViewController,
                                 primaryAccountSuffix: String,
                                 cardholderName: String?,
                                 schemeString: String,
                                 encryptedPayload: String,
                                 authorizationCode: String,
                                 productId: String? = nil,
                                 primaryAccountIdentifier: String? = nil,
                                 provisionDelegate: TPCSDKProvisionDelegate? = nil)

    Parameters

    fromController

    The calling UIViewController

    primaryAccountSuffix

    The Funding PAN suffix to be displayed is defined within the primaryAccountSuffix key. This value should be 4 digits and will have dots prepended to indicate that it is a suffix.

    cardholderName

    The name of the person as shown on the card

    schemeString

    Card’s scheme. Could be VISA, MASTERCARD or others. NOTE: It has to be UPPERCASE string

    encryptedPayload

    Card information encrypted in PKCS7

    authorizationCode

    Authorization code

    productId

    Unique identifier of the card product. This data can be retrieved from Bank’s Card Management System. It is only applicable for domestic schemes. Maximum length is 32 characters.

    primaryAccountIdentifier

    An FPANID for the card. If this parameter is not provided, the SDK will automatically retrieve it from the server for non-Amex/non-Discover schemes. For Amex/Discover schemes, please refer to the Note section for additional instructions.

    provisionDelegate

In-App Activation

  • Get pending activation payment pass from local and remote device

    • Possible errors:
    • TPCError.notConfigured
    • TPCError.invalidArgument
    • TPCError.invalidFormat
    • TPCError.serverError

    Note

    Using FundingCard object initialized with Card’s Scheme and Encrypted Payload

    TPCSDK.getPendingActivationPass(card: card) {
       (pendingActivationPass, error) in
    }
    
    [TPCSDK getPendingActivationPassWithCard:card
                                  completion:^(PendingActivationPass * _Nullable pendingActivationPass, NSError * _Nullable error) {
    }];
    

    Declaration

    Swift

    public static func getPendingActivationPass(card: FundingCard,
                                                completion: @escaping (_ pendingActivationPass: PendingActivationPass?, _ error: Error?) -> Void)

    Parameters

    card

    See FundingCard. Using FundingCard object initialized with Card’s Scheme and Encrypted Payload.

    completion

    The callback invoked when the operation is completed. When it succeeds, it returns pendingActivationPass - See PendingActivationPass. Otherwise, it returns error details.

  • Activate payment pass

    • Possible errors: This method returns two possible types of errors: TPCError, which is returned from the SDK, and Error, which is returned directly from Apple’s PKPassLibrary.activate.
    • TPCError.notConfigured
    • TPCError.invalidArgument
    • TPCError.invalidFormat
    • TPCError.serverError
    • Error Returns directly from PKPassLibrary.activate

    Note

    Use PKPass from TPCSDK.getPendingActivationPass and FundingCard object initialized with Card’s Scheme and Encrypted Payload. Authorization code and nonce must be provided.

    TPCSDK.activatePass(pass: localPass,
                        card: card,
           authorizationCode: authorizationCode,
                       nonce: nonce) {
       (success, error) in
    }
    
    [TPCSDK activatePassWithPass:pass
                            card:card
               authorizationCode:code
                           nonce:nonce
                      completion:^(BOOL success, NSError * _Nullable error) {
    }];
    

    Declaration

    Swift

    public static func activatePass(pass: PKPass,
                                    card: FundingCard,
                                    authorizationCode: String,
                                    nonce: String?,
                                    completion: @escaping (_ success: Bool, _ error: Error?) -> Void)

    Parameters

    pass

    See PassKit.PKPass

    card
    authorizationCode

    Authorization code

    nonce

    Nonce

    completion

    The callback invoked when the operation is completed. When it succeeds, the success value istrue. Otherwise, it returns error details.

Token Management

  • Get Payment Passes from PKPassLibrary

    Declaration

    Swift

    public static func getPaymentPasses(completion: @escaping (_ paymentPasses: [PKPass]?,
                                                         _ remotePaymentPasses: [PKPaymentPass]?) -> Void)
  • Get the list of tokens for the given card

    • Possible errors:
    • TPCError.notConfigured
    • TPCError.invalidArgument
    • TPCError.invalidFormat
    • TPCError.serverError
    TPCSDK.getTokens(card: card) {
       (tokenList, error) in
    }
    
    [TPCSDK getTokensWithCard:card
                   completion:^(NSArray<Token *> * _Nullable tokenList, NSError * error) {
    }];
    

    Declaration

    Swift

    public static func getTokens(card: FundingCard,
                                 completion: @escaping (_ tokenList: [Token]?, _ error: Error?) -> Void)

    Parameters

    card

    See FundingCard. Using FundingCard object initialized with Card’s Scheme and Encrypted Payload

    completion

    The callback invoked when the operation is completed. When it succeeds, it returns Token list. Otherwise, it returns error details.

  • Get asset for the given token requestor asset ID

    • Possible errors:
    • TPCError.notConfigured
    • TPCError.invalidArgument
    • TPCError.invalidFormat
    • TPCError.serverError
    TPCSDK.getTokenRequestorAsset(assetId: tokenRequestorId) {
       (tokenRequestorAsset, error) in
    }
    
    [TPCSDK getTokenRequestorAssetWithAssetId:id
                                   completion:^(NSArray<TokenRequestorAsset *> * _Nullable tokenRequestorAsset, NSError * error) {
    }];
    

    Declaration

    Swift

    public static func getTokenRequestorAsset(assetId: String,
                                              completion: @escaping (_ tokenRequestorAsset: [TokenRequestorAsset]?, _ error: Error?) -> Void)

    Parameters

    assetId

    See Token.TokenRequestor.id

    completion

    The callback invoked when the operation is completed. When it succeeds, it returns Token Requestor asset. Otherwise, it returns error details.

  • Update token state

    • Possible errors:
    • TPCError.notConfigured
    • TPCError.invalidArgument
    • TPCError.invalidFormat
    • TPCError.serverError
    TPCSDK.updateTokenState(tokenId: tokenId,
                   tokenRequestorId: tokenRequestorId,
                             scheme: scheme
                  authorizationCode: authorizationCode,
                             action: .Suspend) {
        (success, error) in
    }
    
    [TPCSDK updateTokenStateWithTokenId:tokenId
                       tokenRequestorId:tokenRequestorId
                                 scheme:scheme
                      authorizationCode:code
                                 action:state
                             completion:^(BOOL success, NSError * error) {
    }];
    

    Declaration

    Swift

    public static func updateTokenState(tokenId: String,
                                        tokenRequestorId: String,
                                        scheme: CardScheme,
                                        authorizationCode: String,
                                        action: TokenState,
                                        completion: @escaping (_ success: Bool, _ error: Error?) -> Void)

    Parameters

    tokenId

    See Token.id

    tokenRequestorId

    Unique identifier of the token requestor allocated by the TSP Scheme. It shall be provided for VISA scheme.

    scheme
    authorizationCode

    Authorization code provided by issuer.

    action
    completion

    The callback invoked when the operation is completed. When it succeeds, the success value istrue. Otherwise, it returns error details and the success value isfalse.

  • Update token state

    • Possible errors:
    • TPCError.notConfigured
    • TPCError.invalidArgument
    • TPCError.invalidFormat
    • TPCError.serverError
    TPCSDK.updateTokenState(tokenId: tokenId,
                   tokenRequestorId: tokenRequestorId,
                       schemeString: scheme
                  authorizationCode: authorizationCode,
                             action: .Suspend) {
       (success, error) in
    }
    
    [TPCSDK updateTokenStateWithTokenId:tokenId
                       tokenRequestorId:tokenRequestorId
                           schemeString:scheme
                      authorizationCode:code
                                 action:state
                             completion:^(BOOL success, error) {
    }];
    

    Declaration

    Swift

    public static func updateTokenState(tokenId: String,
                                        tokenRequestorId: String,
                                        schemeString: String,
                                        authorizationCode: String,
                                        action: TokenState,
                                        completion: @escaping (_ success: Bool, _ error: Error?) -> Void)

    Parameters

    tokenId

    See Token.id

    tokenRequestorId

    Unique identifier of the token requestor allocated by the TSP Scheme. It shall be provided for VISA scheme.

    schemeString

    Card’s scheme. Could be VISA, MASTERCARD or others.

    authorizationCode

    Authorization code provided by issuer.

    action
    completion

    The callback invoked when the operation is completed. When it succeeds, the success value istrue. Otherwise, it returns error details and the success value isfalse.

Issuer Linkage

  • Get cards

    • Possible errors:
    • TPCError.notConfigured
    • TPCError.invalidArgument
    • TPCError.invalidFormat
    • TPCError.serverError
    TPCSDK.getCards(userId: userId,
         authorizationCode: authorizationCode,
                       kyc: kyc) {
       (cards, error) in
    }
    
    [TPCSDK getCardsWithUserId:userId
             authorizationCode:code
                           kyc:kyc
                    completion:^(NSArray<CardList *> * _Nullable cardList, NSError * _Nullable error) {
    }];
    

    Declaration

    Swift

    public static func getCards(userId: String,
                                authorizationCode: String,
                                kyc: String,
                                completion: @escaping (_ cards: [CardList]?, _ error: Error?) -> Void)

    Parameters

    userId

    User ID

    authorizationCode

    Authorization code

    kyc

    KYC

    completion

    The callback invoked when the operation is completed. When it succeeds, it returns the card list - See CardList. Otherwise, it returns error details.

  • Get asset for the given card

    • Possible errors:
    • TPCError.notConfigured
    • TPCError.invalidArgument
    • TPCError.invalidFormat
    • TPCError.serverError
    TPCSDK.getCardAsset(cardId: cardId,
                           kyc: kyc,
                          size: .S) {
       (cardAsset, error) in
    }
    
    [TPCSDK getCardAssetWithCardId:cardId
                               kyc:kyc
                              size:size
                        completion:^(CardAsset * _Nullable cardAsset, NSError * _Nullable error) {
    }];
    

    Declaration

    Swift

    public static func getCardAsset(cardId: String,
                                    kyc: String,
                                    size: CardAssetSize,
                                    completion: @escaping (_ cardAsset: CardAsset?, _ error: Error?) -> Void)

    Parameters

    cardId

    Card ID

    kyc

    KYC

    size
    cardAsset

    See CardAsset

    completion

    The callback invoked when the operation is completed. When it succeeds, it returns the card asset - See CardAsset. Otherwise, it returns error details.

  • Request encrypted payload for a given funding card

    • Possible errors:
    • TPCError.notConfigured
    • TPCError.invalidArgument
    • TPCError.invalidFormat
    • TPCError.serverError
    TPCSDK.getPayload(authorizationCode: code,
                                 cardId: cardId,
                                    kyc: kyc) {
       (payload, error) in
    }
    
    [TPCSDK getPayloadWithAuthorizationCode:code
                                     cardId:cardId
                                        kyc:kyc
                                 completion:^(NSString * _Nullable encryptedPayload, NSError * _Nullable error) {
    }];
    

    Declaration

    Swift

    public static func getPayload(authorizationCode: String,
                                  cardId: String,
                                  kyc: String,
                                  completion: @escaping (_ payload: String?, _ error: Error?) -> Void)

    Parameters

    authorizationCode

    Authorization code

    cardId

    Card ID

    kyc

    KYC

    payload

    Card information encrypted in PKCS7

    completion

    The callback invoked when the operation is completed. When it succeeds, it returns the payload - the Card information encrypted in PKCS7. Otherwise, it returns error details.

Scheme Push Provisioning

  • Request encrypted payload for a given funding card

    • Possible errors:
    • TPCError.notConfigured
    • TPCError.invalidArgument
    • TPCError.invalidFormat
    • TPCError.serverError
    TPCSDK.getEligibleTokenRequestor(card: card,
                      publicKeyIdentifier: publicKeyId) {
       (TokenRequestorList, error) in
    }
    
    [TPCSDK getEligibleTokenRequestorWithCard:card
                          publicKeyIdentifier:publicKeyId
                                   completion:^(NSArray<TokenRequestor *> * _Nullable tokenRequestorList, NSError * _Nullable error) {
    }];
    

    Declaration

    Swift

    public static func getEligibleTokenRequestor(card: FundingCard,
                                                 publicKeyIdentifier: String? = nil,
                                                 completion: @escaping (_ tokenRequestorList: [TokenRequestor]?, _ error: Error?) -> Void)

    Parameters

    card

    FundingCard object initialized with Card’s Scheme and Encrypted Payload

    publicKeyIdentifier

    Identifier of the key used to encrypt payload

    completion

    The callback invoked when the operation is completed. When it succeeds, it returns the list of tokenRequestors - See TokenRequestor. Otherwise, it returns error details.

  • Initiate push provision to scheme

    • Possible errors:
    • TPCError.notConfigured
    • TPCError.invalidArgument
    • TPCError.invalidFormat
    • TPCError.serverError
    TPCSDK.schemePushProvision(card: card,
                publicKeyIdentifier: publicKeyId,
                  authorizationCode: code,
         termsAndConditionsAccepted: true,
                        callbackUrl: callbackUrl,
                       callbackType: callbackType,
                        pushHandler: pushHandler) {
        (pushUrl, error) in
    }
    
    [TPCSDK schemePushProvisionWithCard:card
                    publicKeyIdentifier:publicKeyId
                      authorizationCode:code
             termsAndConditionsAccepted:TRUE
                            callbackUrl:callbackUrl
                           callbackType:callbackType
                            pushHandler:pushHandler
                             completion:^(NSString * _Nullable pushUrl, NSError * _Nullable error) {
    }];
    

    Declaration

    Swift

    public static func schemePushProvision(card: FundingCard,
                                           publicKeyIdentifier: String? = nil,
                                           authorizationCode: String,
                                           termsAndConditionsAccepted: Bool,
                                           callbackUrl: String,
                                           callbackType: String,
                                           pushHandler: String,
                                           completion: @escaping (_ pushUrl: String?, _ error: Error?) -> Void)

    Parameters

    card

    FundingCard object initialized with Card’s Scheme and Encrypted Payload

    publicKeyIdentifier

    Identifier of the key used to encrypt payload

    authorizationCode

    Authorization code

    termsAndConditionsAccepted

    Terms and conditions accepted by user

    callbackUrl

    URL used by the token requestor to pass control back to issuer application

    callbackType

    ANDROID, IOS, or WEB

    pushHandler

    Token requestor push handler

    completion

    The callback invoked when the operation is completed. When it succeeds, it returns the pushUrl - a token requestor URL used for redirection. Otherwise, it returns error details.