Android SDK - Payment Account Management Module

The payment account management module governs the functionality associated with managing the payment accounts registered in the logged-in user’s mobile wallet. This includes adding new accounts, updating or deleting existing accounts, and determining how those accounts are displayed in the app.

This chapter describes the methods available to provide complete payment account administration, including utility methods that facilitate the functionality, such as retrieving account images for a richer display, or retrieving the billing addresses of existing accounts for the purpose of pre-populating address fields for a new account.

Service Description
UI Service com.paydiant.android.ui.service.account.PaymentAccountManagementService
Core Service com.paydiant.android.core.facade.PaymentAccountManagerFacade

Payment Account Metadata

The payment account management module uses a metadata approach for managing payment accounts in order to support variable property requirements for payment accounts of different tender types. For example, credit and debit card payment accounts require the card-holder’s billing address for processor authorization, but gift cards do not. This approach allows the adding and updating of different types of payment accounts to be both more flexible and more accurate, which enhances the usability of the mobile wallet app.

Each tender type element contains a set of one or more metadata elements, each of which represents a predefined property that is recognized and accepted by the Paydiant managed service. Application developers can use these metadata to design appropriate UI controls, field validation, and error handling. The following table describes the attributes that define each metadata property, the values for which can be specified individually for each metadata element when passed in a payment account creation or update method.

Meta data property attributes

Attribute escription
additionalDataValidations List
Defines rules against which the entered value must be validated prior to submitting to the Paydiant service, for example, if the value must be an exact character length.
dataGroup String
Optional attribute specifies a category to which the property belongs for the purpose of grouping UI controls in the app layout.
dataType String
Specifies the format type of the property, such as DATE, STRING, BOOLEAN, or other type.
defaultValue String
Default value of the property, which will be used in the event that no other value is entered.
key String
Unique identification of the metadata property that allows the metadata value to be recognized by the SDK. This value should not be edited by the app developer.
maskingRequired Boolean
Specifies whether the value for the property needs to be obscured from view in the UI.
maxLength Integer
Maximum length required by a UI widget in order to properly display or edit the property value. For example, the zip code property might be 5, while the mobile phone might be 10.
minLength Integer
Minimum length required by a UI widget in order to properly display or edit the property value. For example, the card number of an AMEX card is 24 digits, while the card number for a Visa card is 16, but if the property is not required, the minimum value would likely be 0.
name String
Plain language label for the attribute that the app developer can use in the UI.
order Integer
Specifies the numerical sequence of the attribute so the UI controls can follow a logical progression.
pciEncryptionRequired Boolean
Specifies whether the property must be encrypted in compliance with PCI sensitive data policies.
required Boolean
Indicates if the property is required for the payment account type.
reverificationRequired Boolean
Indicates if the property value requires reverification upon any change to the payment account.
storageRestricted Boolean
Specifies if the property value is prohibited from being cached or otherwise stored in the app’s private data directory.
updatesAllowed Boolean
Specifies if the user can change the value for this property during an update action. For example, when updating a payment account, the user can change the nickname property, but cannot change the card number.

Set UI Package Payment Account Service Listeners

To invoke the callback methods returned by the Paydiant service in response to the methods invoked by the Payment Account Management module of the SDK, the developer must set an implementation of the applicable listener interfaces in the UI Service class.

Item Description
Set Retrieval Listener Non-metadata Listener Interface:
com.paydiant.android.ui.service.account.IPaymentAccountManagementListener
Metadata Listener Interfaces com.paydiant.android.ui.service.account.IPaymentAccountManagementMetaDataListener

or an overridden instance of
com.paydiant.android.ui.service.account.PaymentAccountManagementListenerAdapter
void setPaymentAccountRetrieveListener (IPaymentAccountRetrieveListener listener);
Set Balance Refresh Listener Listener Interfaces:
com.paydiant.android.ui.service.account.IPaymentAccountBalanceRefrshListener

or an overridden instance of
com.paydiant.android.ui.service.account.PaymentAccountBalanceRefreshListenerAdapter
void setPaymentAccountBalanceRefreshListener (IPaymentAccountBalanceRefreshListener listener);
Remove Listener void removeListener();

Call this method from within the corresponding service class in order to remove the associated listener and set it to null.

Retrieve All Payment Accounts

Invoke this method from the core or UI service package to request the complete set of payment accounts that are currently registered in the user’s wallet.

Item Description
UI Method void retrieveAllPaymentAccounts (boolean includeMetaData);

includeMetaData - A boolean value indicating whether the returned payment account objects should include relevant metadata property values.
Success void onRetrieveAllPaymentAccountsSuccess (List < PaymentAccountsList > paymentAccountsList);

The success callback returns the paymentAccountsList, which is a set of paymentAccount objects, each of which defines a single payment account registered to the wallet owner, with or without relevant metatdata, depending on the parameters passed in the call.

Note: The data returned may not include current balance information for the accounts. Instead use Refresh an Account Balance.
Failure void onPaymentAccountManagerError(PaydiantException exception);

The failure callback returns an instance of PaydiantException for the RETRIEVE_ALL_PAYMENT_ACCOUNTS_EVENT detailing the nature of the failure identified by relevant error codes.
Core Method public List < PaymentAccountData > retrieveAllPaymentAccounts (boolean includeMetaData);

includeMetaData - A boolean value indicating whether the returned payment account objects should include relevant metadata property values.

Returns raw output for each payment account or relevant exception.

Errors

When retrieving payment accounts, the following errors are applicable for the RETRIEVE_ALL_PAYMENT_ACCOUNTS_EVENT:

Error Description
400 One or more parameters in the request is missing or invalid.
403 Access to the server is prohibited because the user is not logged in.
500 An unknown error occurred internally in the server.

Retrieve a Single Payment Account

Invoke this method from the core or UI service package to request the details of a specific payment account currently registered in the user’s wallet.

Item Description
UI Method void retrievePaymentAccount (string paymentAccountUri, boolean includeMetaData);

paymentAccountUri - Paydiant’s unique identifier of the account.
includeMetaData - A boolean value indicating whether the returned payment account objects should include relevant metadata property values.
includeMetaData - A boolean value indicating whether the returned payment account objects should include relevant metadata property values.
Success void onRetrievePaymentAccountSuccess (PaymentAccountData paymentAccountData);

The success callback returns the paymentAccountList, which is a set of paymentAccount objects, each of which defines a single payment account registered to the wallet owner, with or without relevant metatdata, depending on the parameters passed in the call.

Note: The data returned may not include current balance information for the accounts. Instead use Refresh an Account Balance.
Failure void onPaymentAccountManagerError(PaydiantException exception);

The failure callback returns an instance of PaydiantException for the RETRIEVE_PAYMENT_ACCOUNT_EVENT, detailing the nature of the failure identified by relevant error codes.
Core Method public PaymentAccountData retrievePaymentAccount (string paymentAccountUri, boolean includeMetaData);

paymentAccountUri - Paydiant’ s unique identifier for the account.
includeMetaData - A boolean value indicating whether the returned payment account objects should include relevant metadata property values.

Returns raw output for the payment account or relevant exception.

Errors

When retrieving a particular payment account, the following errors are applicable for the RETRIEVE_PAYMENT_ACCOUNT_EVENT:

Error Description
400 One or more parameters in the request is missing or invalid.
403 Access to the server is prohibited because the user is not logged in.
404 The specified payment account could not be located.
500 An unknown error occurred internally in the server.
503 The paymentAccountUri value is not valid.

Retrieve Account Without Balance Refresh

Invoke this method to retrieve the information for a specified payment account while specifically declining any balance update, which sometimes incurs a fee from payment processors. This method is useful when the payment account information is retrieved for the purpose of editing the account rather than for displaying as a payment selection.

Item Description
UI Method Public void retrievePaymentAccountWithoutBalanceRefresh (String paymentAccountUri);

paymentAccountUri - Paydiant’s unique identifier of the account.
Success void onRetrievePaymentAccountWithoutBalanceRefreshSuccess (PaymentAccountComplete paymentAccountComplete);

The success callback returns the paymentAccountComplete object containing the payment account properties without the balance.
Failure void onPaymentAccountManagerError(PaydiantException exception);

The failure callback returns an instance of PaydiantException for the RETRIEVE_PAYMENT_ACCOUNT_WITHOUT_BALANCE_REFRESH_EVENT, detailing the nature of the failure identified by relevant error codes.
Core Method public PaymentAccountComplete retrievePaymentAccountWithoutBalanceRefresh (string paymentAccountUri);

paymentAccountUri - Paydiant’ s unique identifier for the account.

Returns raw output for the payment account or relevant exception.

Errors

When retrieving a payment account excluding balance refresh, the following errors are applicable for the RETRIEVE_PAYMENT_ACCOUNT_WITHOUT_BALANCE_REFRESH_EVENT:

Error Description
400 One or more parameters in the request is missing or invalid.
403 Access to the server is prohibited because the user is not logged in.
404 The specified payment account could not be located.
500 An unknown error occurred internally in the server.
503 The paymentAccountUri value is not valid.

Refresh an Account Balance

Invoke this method to refresh the balance for the payment or loyalty account specified in the parameter. Developers may want to call this method prior to displaying the payment or loyalty account in the app at the time of payment selection to ensure that the balance is current, particularly since account retrieval does not automatically include a balance refresh operation.

Item Description
UI Method void refreshPaymentAccountBalance(String paymentAccountUri);

paymentAccountUri - Paydiant’s unique identifier of the account.
Success void onRefreshPaymentAccountBalanceSuccess(AccountBalance accountBalance)

The success callback returns an instance of accountBalance for the payment or loyalty account specified in the request and includes data related to the relevant time and date of the balance, the relevant currency, and other details.
Failure void onPaymentAccountManagerError(PaydiantException exception);

The failure callback returns an instance of PaydiantException for the REFRESH_PAYMENT_ACCOUNT_BALANCE_EVENT, detailing the nature of the failure identified by relevant error codes.
Core Method public AccountBalance refreshPaymentAccountBalance(String paymentAccountUri);

paymentAccountUri - Paydiant’ s unique identifier for the account.

Returns raw output for the payment account balance or relevant exception.

Errors

When refreshing a payment account balance, the following errors are applicable for the REFRESH_PAYMENT_ACCOUNT_BALANCE_EVENT:

Error Description
400 The balance inquiry failed.
403 Access to the server is prohibited because the user is not logged in.
404 The specified payment account could not be located.
405 The balance is temporarily unavailable.
406 Balance retrieval is not supported.
414 The balance amount is not valid.
500 An unknown error occurred internally in the server.
503 The paymentAccountUri value is not valid.

Get Payment Account Configurations

Invoke this method to retrieve the properties that are required or relevant for each payment account type so the forms for adding or editing a payment account can be displayed accordingly in the app.

Item Description
UI Method void retrievePaymentAccountConfigurations();
No parameters.
Success void onPaymentAccountConfigurationRetrievalSuccess (PaymentAccountFilters paymentAccountFilters);

The success callback returns the PaymentAccountFilters object containing the configuration details for each payment account type.
Failure void onPaymentAccountManagerError(PaydiantException exception);

The failure callback returns an instance of PaydiantException for the PAYMENT_ACCOUNT_CONFIGURATION_RETRIEVAL_EVENT, detailing the nature of the failure identified by relevant error codes.
Core Method PaymentAccountFiltersretrievePaymentAccountConfigurations();

Returns raw output for the payment account configuration details.

Errors

When retrieving payment account configurations, the following errors are applicable for the PAYMENT_ACCOUNT_CONFIGURATION_RETRIEVAL_EVENT:

Error Description
403 Access to the server is prohibited because the user is not logged in.
500 An unknown error occurred internally in the server.

Get Payment Account Billing Addresses

Invoke this method to obtain the billing addresses associated with each payment account. This information can be used to pre-populate the wallet owner’s information in the adding a payment account form, for convenience, or may also be used when the user is editing the properties for an existing payment account.

Item Description
UI Method void retrievePaymentAccountBillingAddresses();
No parameters.
Success void onPaymentAccountBillingAddressesRetrievalSuccess (BillingAddressList billingAddressList);

The success callback returns the BillingAddressList object containing the billing address that is associated with each payment account registered in the wallet.
Failure void onPaymentAccountManagerError(PaydiantException exception);

The failure callback returns an instance of PaydiantException for the PAYMENT_ACCOUNT_BILLINGADDRESS_RETRIEVAL_EVENT, detailing the nature of the failure identified by relevant error codes.
Core Method BillingAddressList retrievePaymentAccountBillingAddresses();
No parameters.

Returns raw output for the payment account billing addresses.

Errors

When retrieving payment account billing addresses, the following errors apply to the PAYMENT_ACCOUNT_BILLINGADDRESS_RETRIEVAL_EVENT:

Error Description
403 Access to the server is prohibited because the user is not logged in.
500 An unknown error occurred internally in the server.

Get All Tender Types

Invoke this method to retrieve a list of all tender types that are supported by the wallet issuer for the purpose of limiting the types of payment account that the user can register. This method is useful during the adding payment account operation in the app because it returns the metadata elements that define each type so the developer can design the form for each type to display only the fields that are relevant for the selected type.

Item Description
UI Method void retrieveAllTenderTypes();
No parameters.

or an overloaded instance of
void retrieveAllTenderTypes(Boolean provisioningSupported);

You can invoke an overloaded instance of the method to filter the returned tender types based on whether the wallet issuer allows a new card account to be generated from the app for that tender type.

provisioningSupported - Specifies how the results should be limited. Set the value to TRUE to show only tender types for which provisioning is supported or to FALSE to show only types for which provisioning is not supported.
Success void onRetrieveAllTenderTypesSuccess(TenderTypeList tenderTypeList);

The success callback returns the TenderTypeList object detailing all tender types that are supported for the wallet.
Failure void onPaymentAccountManagerError(PaydiantException exception);

The failure callback returns an instance of PaydiantException for the RETRIEVE_ALL_TENDER_TYPES_EVENT, detailing the nature of the failure identified by relevant error codes.
Core Method TenderTypeList retrieveAllTenderTypes();
No parameters.
Filter Results public tenderTypeList retrieveAllTenderTypes (boolean provisioningSupported);

Invoke this overloaded instance of the method to filter the returned tender types based on whether the wallet issuer allows a new card account to be generated from the app for that tender type.

provisioningSupported - Specifies how the results should be limited. Set the value to TRUE to show only tender types for which provisioning is supported or to FALSE to show only types for which provisioning is not supported.

Returns raw output for the TenderTypesList object.

Errors

When retrieving supported tender types, the following errors apply to the RETRIEVE_ALL_TENDER_TYPES_EVENT:

Error Description
403 Access to the server is prohibited because the user is not logged in.
500 An unknown error occurred internally in the server.

Get One Tender Type

Invoke this method to obtain the collection of properties that are relevant for a tender type of the specified account and network type values. Call this method when a tender type is selected for payment account addition or update so the requirements specific to that type are upheld.

Item Description
UI Method void retrieveSpecificTenderType(String paymentAccountTypeUri, String paymentAccountNetworkTypeUri);

paymentAccountTypeUri - Paydiant’s unique code that identifies an account type such as gift, credit, debit, etc.
paymentAccountNetworkTypeUri - Paydiant’s unique code that identifies a payment network such as Visa, Nyce, Amex, etc.
Success void onRetrieveSpecificTenderTypeSuccess(TenderType tenderType);

The success callback returns the TenderType definition that matches the values specified in the request.
Failure void onPaymentAccountManagerError(PaydiantException exception);

The failure callback returns an instance of PaydiantException for the RETRIEVE_SPECIFIC_TENDER_TYPE_EVENT, detailing the nature of the failure identified by relevant error codes.
Core Method public TenderType retrieveSpecificTenderType(String paymentAccountTypeUri, String paymentAccountNetworkTypeUri);

paymentAccountTypeUri - Paydiant’s unique code that identifies an account type such as gift, credit, debit, etc.
paymentAccountNetworkTypeUri - Paydiant’s unique code that identifies a payment network such as Visa, Nyce, Amex, etc.

Raw output of the TenderType definition or relevant exception.

Errors

When retrieving the details for a particular tender type, the following errors apply to the RETRIEVE_SPECIFIC_TENDER_TYPE_EVENT:

Error Description
400 One or more parameters in the request is missing or invalid.
403 Access to the server is prohibited because the user is not logged in.
417 The specified tender type has not been configured.
500 An unknown error occurred internally in the server.

Add Payment Account (Single Step)

Invoke this method to submit payment account information input by the wallet user for the purpose of linking an existing payment instrument, such as a credit card, debit card, gift card, etc., to the wallet as a mobile payments tender.

Do not use emoji characters in the nickname attribute because on some networks it can cause the payment to fail.

Note: When IIN resolution is enabled by the issuer (an onboarding configuration), the app should NOT pass values related to account type and account network type attributes. Provided values will override the automatic resolution and be submitted, which, if not correct, could result in card verification failure.

Item Description
UI Method void addPaymentAccount(PaymentAccountData paymentAccountData);

paymentAccountData - The complete set of metadata that defines the payment account to be added to the wallet. The property values required for this object may vary depending on the type of payment account being submitted. For example, a credit card or debit account requires the user billing address, but a gift card does not.
Success void onAddPaymentAccountSuccess(DetailedPaymentAccount detailedPaymentAccount);

The success callback returns an instance of the DetailedPaymentAccount object defining the account as it was linked to the wallet, including Paydiant-generated identifiers.
Failure void onPaymentAccountManagerError(PaydiantException exception);

The failure callback returns an instance of PaydiantException for the ADD_PAYMENT_ACCOUNT_METADATA_EVENT, detailing the nature of the failure identified by relevant error codes.
Core Method DetailedPaymentAccount addPaymentAccount(paymentAccountData PaymentAccountData);

paymentAccountData - The complete set of metadata that defines the payment account to be added to the wallet. The property values required for this object may vary depending on the type of payment account being submitted. For example, a credit card or debit account requires the user billing address, but a gift card does not.

Returns raw output for the newly linked payment account or relevant exception.

Errors

When adding a payment account, the following errors are applicable for the ADD_PAYMENT_ACCOUNT_MAETADATA_EVENT:

Error Description
400 One or more parameters in the request is invalid or missing.
402 The specified payment card value is invalid.
403 Access to the server is prohibited because the user is not logged-in.
404 The specified payment account could not be located.
406 The expiration date specified for the account is not valid.
410 The specified payment account already exists in the wallet.
414 The specified account contains insufficient funds for validation.
419 The tender type specified for the payment account does not match the type for the card number provided.
420 The network provider specified for the payment account does not match that of the card number provided.
421 The payment account could not be added due to an error.
426 The Issuer Identification Number (IIN) associated with the payment account specified is not supported for the wallet.
500 An unknown error occurred internally in the server.
508 Network verification of the payment account failed.

Non-Metadata Implementations

To Be Deprecated

Both UI and Core implementations pass values for only the default properties used to define a payment account in the wallet. The properties passed in this method are static and do not vary by tender type and cannot define custom fields of data.

Note: This implementation is not recommended and is scheduled for deprecation in a future version of the SDK.

Item Description
UI Method void addPaymentAccount(PaymentAccountInfo paymentAccountInfo);

paymentAccountinfo - The set of properties, without metadata, that defines a payment account to be added to the wallet.
Success void onAddPaymentAccountSuccess(PaymentAccounAdded paymentAccountAdded);

The success callback returns an instance of the PaymentAccountAdded object defining the account as it was linked to the wallet.
Failure void onPaymentAccountManagerError(PaydiantException exception);

The failure callback returns an instance of PaydiantException for the ADD_PAYMENT_ACCOUNT_EVENT, detailing the nature of the failure identified by relevant error codes.

|Core Method|PaymentAccountAdded addPaymentAccount(paymentAccountInfo PaymentAccountInfo);

Raw output for the added payment account or relevant exception.|

Provision a Payment Account (Single Step)

Invoke this method to submit the relevant data supplied in the app by the wallet owner for the purpose of generating a new payment account in the wallet user’s name that is automatically registered in the wallet.

Item Description
UI Method void provisionAccount(ProvisionCard provisionCard);

provisionCard - The set of metadata that defines the new payment account application. The property values required for this object may vary depending on the type of payment account being provisioned. For example, a credit card or debit account requires the user billing address, but a gift card does not.
Success void onProvisionAccountSuccess(ProvisionCardResponse provisionCardResponse);

The success callback returns an instance of the ProvisionCardResponse object defining the results of the account application and provisioning, as well as the new account details, if applicable.
Failure void onPaymentAccountManagerError(PaydiantException exception);

The failure callback returns an instance of PaydiantException for the PROVISION_ACCOUNT_EVENT, detailing the nature of the failure identified by relevant error codes.
Core Method public ProvisionCardResponse provisionAccount(ProvisionCard provisionCard);

provisionCard - The set of metadata that defines the new payment account application. The property values required for this object may vary depending on the type of payment account being provisioned. For example, a credit card or debit account requires the user billing address, but a gift card does not.

Returns raw output for the result of the application and newly created account or relevant exception.

Errors

When provisioning a new payment account, the following errors are applicable for the PROVISION_ACCOUNT_EVENT:

Error Description
400 One or more parameters in the request is invalid or missing.
403 Access to the server is prohibited because the user is not logged-in.
404 The specified payment account could not be located.
411 Card provisioning was declined by the processor.
414 The card provisioning limit has been exceeded.
421 The payment account could not be added due to an error.
426 Card provisioning is not supported in this use case.
500 An unknown error occurred internally in the server.
502 An error occurred while trying to reach the processor.

Start Payment Account Enrollment (Variable Steps)

Invoke this method to initialize the process for designating a payment account as a mobile payments tender in the wallet. This process is applicable to both existing payment accounts (credit cards, debit cards, gift cards, etc.) and newly-issued accounts (a new gift card, loyalty card, private label credit card, etc.). Depending on the type of payment account being enrolled in the wallet and the specifications from the processing service, the response may indicate that the enrollment is complete or that additional information is required in order to further process the enrollment. In the latter case, collect the additional information to pass in the Continue Payment Account Enrollment (Variable Steps) call.

Note: When IIN resolution is enabled by the issuer (an onboarding configuration), the app should NOT pass values related to account type and account network type attributes. Provided values will override the automatic resolution and be submitted, which, if not correct, could result in card verification failure.

Item Description
UI Method void startPaymentAccountEnrollment (StartPaymentAccountEnrollment startPaymentAccountEnrollment);

startPaymentAccountEnrollment - An instance of the object defining the basic information about the payment account to be enrolled, such as whether it is an existing account LINK or a new account PROVISION, payment account type, network type, and any additional data that may be relevant for the specific payment account.
Success void onStartPaymentAccountEnrollmentSuccess (PaymentAccountEnrollment paymentAccountEnrollment);

paymentAccountEnrollment - An object that specifies a unique identifier for the generated enrollment event, as well as the state of that event. If enrollmentState=END, enrollment is complete. If enrollmentState=MORE_INFO, this object will specify the additional data required before enrollment can resume. Collect that input and pass it in the Continue Payment Account Enrollment (Variable Steps) call.
Failure void onPaymentAccountManagerError (PaydiantException exception);

The failure callback returns an instance of PaydiantException for the START_PAYMENT_ACCOUNT_ENROLLMENT_EVENT, detailing the nature of the failure identified by relevant error codes.
Core Method PaymentAccountEnrollment startPaymentAccountEnrollment (StartPaymentAccountEnrollment startPaymentAccountEnrollment);

startPaymentAccountEnrollment - An instance of the object defining the basic information about the payment account to be enrolled, such as whether it is an existing account (LINK) or a new account (PROVISION), payment account type, network type, and any additional data that may be relevant for the specific payment account.

Returns raw output for the new enrollment event and its state or relevant exception.

Errors

The following error states are applicable in the PaydiantException instance returned for the START_PAYMENT_ACCOUNT_ENROLLMENT_EVENT.

See Variable-Step Payment Account Enrollment Statuses 790 - 809 for relevant ErrorInformation.errorCode status and values.

Error Description
400 (BAD_REQUEST) Required additional data values are missing.
The enrollmentType is not specified.
Supported tender types could not be located.
Payment account already exists in wallet.
Duplicates are not allowed.
500(INTERNAL_SERVER_ERROR) An internal server error has occurred.
A processing error has occurred.

Continue Payment Account Enrollment (Variable Steps)

Invoke this method to submit additional information required in the enrollment process for an enrollment event with a state of MORE_INFO. The enrollment process can have a variable number of steps depending on the information required and submitted throughout the process. Therefore, the properties required in this call will have been specified in the response to either the Start Payment Account Enrollment (Variable Steps) call or the immediately previous instance of this call.

This call should continue to be invoked until the enrollmentState in the response is END.

Item Description
UI Method void continuePaymentAccountEnrollment (ContinuePaymentAccountEnrollment continuePaymenParameters

continuePaymentAccountEnrollment - An instance of the object that identifies the associated enrollment event and passes the additional data that was specified in the previous enrollment step.
Success void onContinuePaymentAccountEnrollmentSuccess (PaymentAccountEnrollment paymentAccountEnrollment);

paymentAccountEnrollment - An object that informs the state of the enrollment and, if applicable, specifies the additional properties required to be passed in the next step.
Failure void onPaymentAccountManagerError (PaydiantException exception);

The failure callback returns an instance of PaydiantException for the CONTINUE_PAYMENT_ACCOUNT_ENROLLMENT_EVENT, detailing the nature of the failure identified by relevant error codes.
Core Method PaymentAccountEnrollment continuePaymentAccountEnrollment (ContinuePaymentAccountEnrollment continuePaymentAccountEnrollment);

continuePaymentAccountEnrollment - An instance of the object identifying the associated enrollment event and passing the additional data that was specified in the previous enrollment step.

Returns raw output for the PaymentAccountEnrollment class or relevant exception.

Errors

The following error states are applicable in the PaydiantException instance returned for the CONTINUE_PAYMENT_ACCOUNT_ENROLLMENT_EVENT. See Variable-Step Payment Account Enrollment Statuses 790 - 809 for relevant ErrorInformation.errorCode status and values.

Error Description
400 (BAD_REQUEST) PaydiantCorrelationId not found.
Payment account already exists in wallet.
Duplicates are not allowed.
500 (INTERNAL_SERVER_ERROR) An internal server error has occurred.
A processing error has occurred.

Retrieve Payment Account Enrollments

Invoke this method to retrieve a list of enrollments that are still pending completion so the user can select one to resume or cancel the enrollment, if desired.

Item Description
UI Method void retrieveAllPaymentAccountEnrollments();
Success void onRetrieveAllPaymentAccountEnrollmentSuccess (List < PaymentAccountEnrollment > paymentAccountEnrollments);

paymentAccountEnrollments - An array of paymentAccountEnrollment instances that still have an enrollmentState of MORE_INFO, indicating that they can still be resumed and completed.
Failure void onPaymentAccountManagerError (PaydiantException exception);

The failure callback returns an instance of PaydiantException for the PAYMENT_ACCOUNT_ENROLLMENT_RETRIEVAL_EVENT, detailing the nature of the failure identified by relevant error codes.
Core Method List < PaymentAccountEnrollment > retrieveAllPaymentAccountEnrollments();

Returns raw output for the list of incomplete PaymentAccountEnrollment instances or relevant exception.

Errors

The following error states are applicable in the PaydiantException instance returned for the PAYMENT_ACCOUNT_ENROLLMENT_RETRIEVAL_EVENT.

Error Description
500 (INTERNAL_SERVER_ERROR) An internal server error has occurred.

Cancel Payment Account Enrollments

Invoke this method to delete an incomplete payment account enrollment that is still active.

Item Description
UI Method void cancelPaymentAccountEnrollment(String padiantCorrelationId);

paydiantCorrelationId - The unique identifier of the enrollment.
Success void onCancelPaymentAccountEnrollmentSuccess (Boolean result);

result- A Boolean response indicating whether the enrollment was deleted.
Failure void onPaymentAccountManagerError (PaydiantException exception);

The failure callback returns an instance of PaydiantException for the CANCEL_PAYMENT_ACCOUNT_ENROLLMENT_EVENT, detailing the nature of the failure identified by relevant error codes.
Core Method cancelPaymentAccountEnrollment(String paydaintCorrelationId);

raw output for the result or relevant exception.

Errors

The following error states are applicable in the PaydiantException instance returned for the CANCEL_PAYMENT_ACCOUNT_ENROLLMENT_EVENT.

Error Description
500 (INTERNAL_SERVER_ERROR) An internal server error has occurred.

Delete Payment Account

Invoke this method to remove a payment account from the wallet application so a user can suspend wallet use of that account. Note that this operation does not cancel the card associated with the payment account.

Item Description
UI Method void deletePaymentAccount(String paymentAccountUri);

paymentAccountUri - Paydiant’s unique identifier of the account.
Success void onDeletePaymentAccountSuccess();

The success callback does not return any additional data other than confirmation that the operation succeeded.
Failure void onPaymentAccountManagerError(PaydiantException exception);

The failure callback returns an instance of PaydiantException for the DELETE_PAYMENT_ACCOUNT_EVENT, detailing the nature of the failure identified by relevant error codes.
Core Method Boolean deletePaymentAccount(String paymentAccountUri);

paymentAccountUri - Paydiant’ s unique identifier for the account.

Returns raw output for the successful completion or relevant exception.

Errors

When deleting a payment account, the following errors are applicable for the DELETE_PAYMENT_ACCOUNT_EVENT:

Error Description
400 One or more parameters in the request is missing or invalid.
403 Access to the server is prohibited because the user is not logged in.
404 The specified payment account could not be located.
500 An unknown error occurred internally in the server.
503 The paymentAccountUri value is not valid.

Verify Payment Account

Invoke this method when a payment account has been added to the wallet that requires double deposit verification in order to submit the deposit values, as provided by the wallet owner, for verification. This verification step is often required for debit accounts and must be completed before the payment account can be activated for use in the wallet.

Item Description
UI Method void verifyPaymentAccount (PaymentAccountVerification paymentAccountVerification);

paymentAccountVerification - The object that contains the payment account identification and the values of the two verification deposits made by the server.
Success void onVerifyPaymentAccountSuccess();

The success callback does not return any additional data other than confirmation that the operation completed.
Failure void onPaymentAccountManagerError(PaydiantException exception);

The failure callback returns an instance of PaydiantException for the VERIFY_PAYMENT_ACCOUNT_EVENT, detailing the nature of the failure identified by relevant error codes.
Core Method PaymentAccountSuccess verifyPaymentAccount (PaymentAccountVerification paymentAccountVerification);

paymentAccountVerification - The object that contains the payment account identification and the values of the two verification deposits made by the server.

Returns raw output for the successful completion or relevant exception.

Errors

When verifying a payment account, the following errors are applicable for the VERIFY_PAYMENT_ACCOUNT_EVENT:

Error Description
400 One or more parameters in the request is missing or invalid.
403 Access to the server is prohibited because the user is not logged in.
404 The specified payment account could not be located.
500 An unknown error occurred internally in the server.
503 The paymentAccountUri value is not valid.

Update Payment Account

Implements the function to invoke this method to apply property edits (for example, account nickname) made to a payment account by the wallet owner from within the app.

Note: When IIN resolution is enabled by the issuer (an onboarding configuration), the app should NOT pass values related to account type and account network type attributes. Provided values will override the automatic resolution and be submitted, which, if not correct, could result in card verification failure.

Item Description
UI Method void updatePaymentAccount(PaymentAccountData paymentAccountData);

paymentAccountData - set of metadata property values to edit in the specified payment account.
Success void onUpdatePaymentAccountSuccess(DetailedPaymentAccount detailedPaymentAccount);

The success callback returns an instance of the DetailedPaymentAccount instance showing the updated values.
Failure void onPaymentAccountManagerError(PaydiantException exception);

The failure callback returns an instance of PaydiantException for the UPDATE_PAYMENT_ACCOUNT_METADATA_EVENT, detailing the nature of the failure identified by relevant error codes.
Core Method DetailedPaymentAccount updatePaymentAccount (paymentAccountData PaymentAccountData);

paymentAccountData - The set of set of metadata property values to edit in the specified payment account.

Returns raw output for the updated payment account properties or relevant exception.

Errors

When adding a payment account, the following errors are applicable for the UPDATE_PAYMENT_ACCOUNT_MAETADATA_EVENT:

Error Description
400 One or more parameters in the request is invalid or missing.
403 Access to the server is prohibited because the user is not logged in.
404 The specified payment account could not be located.
406 The expiration date specified for the account is not valid.
410 The specified payment account already exists in the wallet.
414 The specified account contains insufficient funds for validation.
417 One or more arguments included in the request is not valid.
500 An unknown error occurred internally in the server.
503 The paymentAccountUri provided is not valid.

Gift Account Management Services

The following methods deal specifically with GIFT-type payment accounts and are exposed through separate services to manage the unique nature of gift accounts.

Service Description
Gift UI Service com.paydiant.android.ui.service.giftaccount.GiftAccountManagerService
Gift Core Service com.paydiant.android.core.facade.GiftAccountManagerFacade

Set UI package gift account service listeners

In order to invoke the callback methods returned by the Paydiant service in response to the methods invoked by the Gift Account services, the developer must set an implementation of the applicable listener interfaces in the UI Service class.

Item Description
Set Gift Listener void setGiftAccountManagementListener (IGiftAccountManagementListener listener);

Listener Interfaces:com.paydiant.android.ui.service.giftaccount.IGiftAccountManagementListener

or an overridden instance of com.paydiant.android.ui.service.giftaccount.GiftAccountManagementListenerAdapter
Remove Listener void removeListener();

Call this method from within the corresponding service class in order to remove the associated listener and set it to null.

Get account load configuration

Invoke this method to obtain the specifications relevant to loading or reloading the balance of a gift account of the account and networks types specified. This method should be called prior to the Load a New Payment Account method so the configuration values returned can be applied to the load options presented in the app.

Item Description
UI Method void retrieveLoadConfiguration(String paymentAccountTypeUri, String paymentAccountNetworkTypeUri);

paymentAccountTypeUri - Paydiant’s unique code that identifies an account type such as gift, credit, debit, etc.
paymentAccountNetworkTypeUri- Paydiant’s unique code that identifies a payment network such as Visa, Nyce, Amex, etc.
Success void onRetrieveLoadConfigurationSuccess (List < LoadConfiguration > loadConfiguration);

The success callback returns the LoadConfiguration definition for the specified tender type or, if not specified, the list of definitions for each supported tender type in the wallet.
Failure void onGiftAccountManagementError (PaydiantException exception);

The failure callback returns an instance of PaydiantException for the RETRIEVE_LOAD_CONFIGURATION_EVENT, detailing the nature of the failure identified by relevant error codes.
Core Method PaymentAccountFilters retrievePaymentAccountConfigurations();
No paramters.

Returns raw output for the load configuration details.

Note: If parameter values are not specified, the service will return all load configurations supported for the wallet.

Errors

When retrieving load configurations, the following errors are applicable for the RETRIEVE_LOAD_CONFIGURATION_EVENT:

Error Description
400 One or more of the input parameters is invalid.
403 Access to the server is prohibited because the user is not logged in.
500 An unknown error occurred internally in the server.

Load a new payment account

Invoke this method to specify a starting balance for a newly provisioned payment account (a GIFT account), the tender for which is procured from another existing payment account.

Item Description
UI Method void loadPaymentInstrument(LoadPaymentAccountParameters loadPaymentAccountParameters);

loadPaymentAccountParameters - The object instance that specifies the details for the loading event, such as the payment account from which the load funds will be transfered and the amount and currency type.

|Success|void onLoadPaymentInstrumentSuccess (loadPaymentAccountResponse LoadPaymentAccountResponse);

The success callback returns the response object that details the results of the load operation.| |Failure|void onGiftAccountManagementError (PaydiantException exception);

The failure callback returns an instance of PaydiantException for the LOAD_PAYMENT_INSTRUMENT_EVENT, detailing the nature of the failure identified by relevant error codes.| |Core Method|loadPaymentAccountResponse loadPaymentInstrument (LoadPaymentAccountParameters loadPaymentAccountParameters);

loadPaymentAccountParameters - The object instance that specifies the details for the loading event, such as the payment account from which the load funds will be transfered and the amount and currency type.

Returns raw output for the account load results or relevant exception.|

Errors

When retrieving load configurations, the following errors are applicable for the LOAD_PAYMENT_INSTRUMENT_EVENT:

Error Description
400 One or more of the input parameters is invalid.
403 Access to the server is prohibited because the user is not logged in.
409 The card provisioning load limit has been exceeded.
410 The load amount specified is not valid.
414 The request URI is too long - operation failed.
420 The maximum balance for the card has been exceeded.
421 The maximum load amount has been exceeded.
426 The operation is not supported.
500 An unknown error occurred internally in the server.
501 An error has occurred during processing.

Other Resources

javadocs

Feedback