Hi,
I'm trying to do a PAN enrollement using the Token Service, but I'm getting an error response (listed below). On this page is given how encPaymentInstrument looks like when is encoded https://developer.visa.com/products/vts/reference#vts__enroll_pan but I'm not able to find an example of encPaymentInstrument before it is encrypted. Any help would be higly appriciated!
{
"errorResponse" : {
"status" : 400,
"message" : "Input for encPaymentInstrument is invalid or inconsistent with the profile.",
"reason" : "invalidParameter",
"details" : [ {
"location" : "encPaymentInstrument"
} ]
}
}
Hi Dushan,
Here is some info:
Encrypted Payment Instrument
Field Description
accountNumber PAN of the card to be enrolled and provisioned
Format: Numeric. Size: 13-19
cvv2 (Optional) CVV2 value associated with the PAN on the card
Format: String. Size: 3-4
name (Optional) The full name on the Visa card associated with the
enrolled payment instrument
Format: String; maximum 256 UTF-8 characters
expirationDate (Optional) Payment instrument's expiration date. Populate based
on the response from getPanData, which indicates whether this
information is printed on the card.
Format: expirationDate structure. (See Expiration Date.)
billingAddress Billing address associated with the payment instrument
Format: billingAddress structure. (See Billing Address.)
provider Information about the provider of the payment instrument and the
context in which it is provided. Required if the panSource is
ISSUER_PUSH_PROVISION.
Format: provider structure. (See Payment Instrument Provider)
Payment Instrument Provider
This object allows the Payment Instrument Provider to specify the intent under which the
PAN should be used for token provisioning. Some of the fields provided here will be
matched with the corresponding fields from the API payload.
Field Description
intent (Required) The intent of the encryptor, which specifies what the
encryptor of the data trying to do.
Format: It is one of the following values:
the purpose of provisioning a token for the consumer on a
particular device for a particular wallet/account.
clientWalletProvider (Required) Client provided consumer ID that identifies the
Wallet Account Holder entity. It must have the same value as
clientWalletAccountID field from the API payload.
Format: String. Size: 50, [0-9,A-Z, a-z,-, _]
clientWalletAccountID (Required) Client provided consumer ID that identifies the
Wallet Account Holder entity. It must have the same value as
clientWalletAccountID field from the API payload.
Format: String. Size: 24, [0-9,A-Z, a-z,-, _]
clientDeviceID Stable and unique identifier set by wallet provider for the
device. Required if intent is PUSH_PROV_MOBILE. This
field must have the same value as clientDeviceID field
provided in the API payload.
Format: String. Size: 24, [0-9,A-Z, a-z,-, _]
clientAppID Unique Identifier for the client application, used to provide
some of the encrypted values. Required if intent is
PUSH_PROV_MOBILE. Example: Issuer’s AppID used to select
the PAN and the wallet.
Format: String. Size: 36, [A-Z][a-z][0-9,-]
isIDnV (Optional) Specifies whether the issuer wants ID&V to be
performed.
Format: Boolean
Does this help?
-Ricardo
What is the format of billingAddress and expirationDate referenced above?