5.1 Autorización
La solicitud de autorización se utiliza para confirmar la disponibilidad de fondos en la cuenta del tarjetahabiente. Este tipo de transacciones ponen una retención temporal o una autorización pendiente en la cuenta del tarjetahabiente y no garantiza el pago. Para este tipo de transacción, los comercios deben enviar la Solicitud de Servicio, “CCAUTHORIZE”, en la solicitud de transacción.
La Solicitud de Autenticación es la primera de dos partes en el proceso de “autorización” y “captura” de fondos. Este proceso de dos pasos es comúnmente utilizado por comercios que tienen que realizar el procesamiento parcial de órdenes. Para capturar la Solicitud de Autenticación, utilice la Solicitud de Servicio, “CCCAPTURE”.
5.1.1 Parámetros de autorización
La tabla a continuación solo incluye parámetros típicamente enviados en una Solicitud de Autenticación Simple. Nótese que los comercios pueden enviar parámetros adicionales listados en la sección 4 de esta especificación.
Nombre del campo | Descripción | Tipo de Datos | Requerimiento |
---|---|---|---|
request_action | Acción de solicitud de servicio (Envía "CCAUTHORIZE"). | Service Request Types | Requerido |
req_username | Nombre de usuario de solicitud de servicio | Alfanumérico | Requerido |
req_password | Contraseña de solicitud de servicio | Alfanumérico y caracteres especiales | Requerido |
request_response_format | Formato de respuesta de servicio | Valores aceptados: “XML”, “PIPES” y ”JSON” | Opcional (default: XML) |
request_api_version | Versión de API | Numérico | Requerido |
site_id | ID de sitio web del comercio | Numérico | Requerido |
cust_fname | Nombres del tarjetahabiente | Alfanumérico y caracteres especiales | Opcional |
cust_lname | Apellidos del tarjetahabiente | Alfanumérico y caracteres especiales | Opcional |
cust_email | Correo del tarjetahabiente | Alfanumérico | Opcional |
li_count_1 | Contador de líneas de artículos Valor máximo “99”. | Numérico | Requerido |
li_prod_id_1 | ID de línea de artículo 1 | Numérico | Requerido |
li_value_1 | Cantidad de transacción de línea de artículo 1 | Numérico | Requerido |
xtl_order_id | ID de orden del comercio | Alfanumérico | Opcional |
bill_addr | Calle de la dirección de facturación del tarjetahabiente | Alfanumérico | Opcional (los campos de dirección pueden ser requeridos por el banco) |
bill_addr_city | Ciudad de la dirección de facturación del tarjetahabiente | Alfanumérico | Opcional (los campos de dirección pueden ser requeridos por el banco) |
bill_addr_state | Estado de la dirección de facturación del tarjetahabiente | Código de 2 letras del estado | Opcional (los campos de dirección pueden ser requeridos por el banco) |
bill_addr_zip | Código postal de la dirección de facturación del tarjetahabiente | Alfanumérico | Opcional (los campos de dirección pueden ser requeridos por el banco) |
bill_addr_country | País de la dirección de facturación del tarjetahabiente | Código de 2 letras del país ISO 3166-1 alpha-2 | Opcional (los campos de dirección pueden ser requeridos por el banco) |
pmt_numb | Número de tarjeta de Numérico Requerido crédito | Numérico | Requerido |
token_guid | ID de token | Alfanumérico | ID de token utilizado en lugar de pmt_numb. Ver Tokenización. |
pmt_key | Código CVV2 o CVC2 de la tarjeta | Numérico (4) | Requerido |
pmt_expiry | Fecha de expiración de Numérico Requerido la tarjeta | Numérico MMAAAA | |
Ejemplo: “122014” | Requerido | ||
cust_login | Nombre de usuario del tarjetahabiente | Alfanumérico y caracteres especiales | Opcional |
cust_password | Contraseña del tarjetahabiente (debe contener una mayúscula, una minúscula y un número) de al menos 10 caracteres. | Alfanumérico | Opcional |
merch_acct_id | ID de cuenta de comercio | Numérico | Requerido |
request_currency | Código de 3 letras de la divisa | Ejemplo: USD | Requerido |
pmt_descriptor | Descriptor dinámico | Alfanumérico | Opcional |
pmt_descriptor_phone | Número dinámico de Soporte al cliente del banco | Numérico | Opcional |
cust_phone | Teléfono del tarjetahabiente | Numérico | Opcional |
request_aff_id | ID externo de afiliado | Alfanumérico | Opcional |
request_aff_id_sub | ID externo de subafiliado | Alfanumérico | Opcional |
unique_xtl_order_id | Fuerza la unicidad del ID de orden. | Valores posibles: “0” – desactiva la bandera “1” – Solicitud de declinación “2” – Retorna respuesta de aprobación | Opcional |
pmt_id_xtl | CalIdentificador único de pago externole | Alfanumérico (longitud máxima: 64) | Opcional |
mbshp_id_xtl | ID externo de membresía | Alfanumérico | Opcional (Esto será requerido si el tipo de TRANS_REBILL_TYPE no es NONE) |
trans_rebill_type | Tipo de cargo recurrente | Uno de los siguientes valores NONE, TRIAL, | |
INITIAL, REBILL | Requerido | ||
card_on_file_flag | Bandera para indicar si COF (tarjeta guardada) o Nueva tarjeta | Los valores posibles son 0 o 1 | Requerido |
5.1.2 Ejemplo de solicitud de autorización
POST /payment/pmt_service.cfm HTTP/1.0
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*
Accept-Encoding: identity Accept-Language: en-us,en
Host: API.PLGW.com
Accept-Charset: iso-8859-1,*,utf-8
Content-Type: application/x-www-form-urlencoded Content-Length: 531
req_password=Test1234567&site_id=0&cust_fname=Daenarys&bill_addr_city=Los%20Angeles&bill_addr_state=CA&pmt_expiry=10%2F2020&xtl_cust_id=testcust11&pmt_key=123&request_response_format=XML&pmt_numb=4111111111111111&cust_lname=Targaryen&request_api_version=4.4&cust_email=useremail%40tests.com&li_value_1=1.25&req_username=merchant100%40example.com&li_prod_id_1=1001&request_currency=USD&xtl_order_id=testorder117&bill_addr_zip=90401&request_action=CCAUTHORIZE&merch_acct_id=100&bill_addr=1%20Main%20St&bill_addr_country=US&pmt_id_xtl=ABCD12345&mbship_id_xtl=888920&card_on-file_bandera=0&trans_rebill_type=rebill
5.1.3 Ejemplo de respuesta de autorización
<RESPONSE>
<REQUEST_ACTION>CCAUTHCAP</REQUEST_ACTION>
<TRANS_STATUS_NAME>APPROVED</TRANS_STATUS_NAME>
<TRANS_VALUE>1.25</TRANS_VALUE>
<TRANS_VALUE_SETTLED>1.25</TRANS_VALUE_SETTLED>
<CURR_CODE_ALPHA_SETTLED>USD</CURR_CODE_ALPHA_SETTLED>
<TRANS_EXCH_RATE/>
<TRANS_ID>989898</TRANS_ID>
<CUST_ID>212121</CUST_ID>
<XTL_CUST_ID/>
<PO_ID>17171717</PO_ID>
<XTL_ORDER_ID/>
<BATCH_ID>3114</BATCH_ID>
<PROC_NAME>Test Processor</PROC_NAME>
<MERCH_ACCT_ID>100</MERCH_ACCT_ID>
<CARD_BRAND_NAME>Visa</CARD_BRAND_NAME>
<CARD_TYPE>VISA CREDIT CARD</CARD_TYPE>
<PMT_AAU_UPDATE_DT>16-NOV-2018</PMT_AAU_UPDATE_DT>
<CARD_PREPAID>1</CARD_PREPAID>
<CARD_BANK>BANK OF EUROPE</CARD_BANK>
<CARD_BALANCE/>
<PMT_L4>1111</PMT_L4>
<PMT_ID>101011</PMT_ID>
<PMT_ID_XTL/>
<PROC_UDF01/>
<PROC_UDF02/>
<PROC_AUTH_RESPONSE>72682</PROC_AUTH_RESPONSE>
<PROC_RETRIEVAL_NUM>74C8C7C8-5652-48BB-A68BGRACE46A2D1</PROC_RETRIEVAL_NUM>
<PROC_REFERENCE_NUM/>
<PROC_REDIRECT_URL/>
<AVS_RESPONSE>M</AVS_RESPONSE>
<CVV_RESPONSE>M</CVV_RESPONSE>
<REQUEST_API_VERSION>4.4</REQUEST_API_VERSION>
<PO_LI_ID_1>8509920</PO_LI_ID_1>
<PO_LI_COUNT_1>1</PO_LI_COUNT_1>
<PO_LI_AMOUNT_1>1.25</PO_LI_AMOUNT_1>
<PO_LI_PROD_ID_1>1001</PO_LI_PROD_ID_1>
<MBSHP_ID_1/>
</RESPONSE>
5.1.4 Ejemplo de respuesta de intento fallido de autorización
<RESPONSE>
<REQUEST_ACTION>CCAUTHORIZE</REQUEST_ACTION>
<TRANS_STATUS_NAME>DECLINED</TRANS_STATUS_NAME>
<TRANS_VALUE>5.01</TRANS_VALUE>
<TRANS_ID>20005</TRANS_ID>
<CUST_ID>2</CUST_ID>
<XTL_CUST_ID>c777777777</XTL_CUST_ID>
<MERCH_ACCT_ID>100</MERCH_ACCT_ID>
<CARD_BRAND_NAME>Mastercard</CARD_BRAND_NAME>
<PMT_L4>5100</PMT_L4>
<PMT_ID/>
<PMT_ID_XTL/>
<API_RESPONSE>0</API_RESPONSE>
<API_ADVICE> </API_ADVICE>
<SERVICE_RESPONSE>640</SERVICE_RESPONSE>
<SERVICE_ADVICE>Retry</SERVICE_ADVICE>
<PROCESSOR_RESPONSE>501</PROCESSOR_RESPONSE>
<PROCESSOR_ADVICE>Retry</PROCESSOR_ADVICE>
<INDUSTRY_RESPONSE>0</INDUSTRY_RESPONSE>
<INDUSTRY_ADVICE> </INDUSTRY_ADVICE>
<REF_FIELD/>
<PROC_NAME>Test Processor</PROC_NAME>
<AVS_RESPONSE/>
<CVV_RESPONSE/>
<REQUEST_API_VERSION>4.4</REQUEST_API_VERSION>
</RESPONSE>
5.1.5 Ejemplo de respuesta de servicio declinado
<RESPONSE>
<REQUEST_ACTION>CCAUTHORIZE</REQUEST_ACTION>
<TRANS_STATUS_NAME/>
<CUST_ID/>
<XTL_CUST_ID>c777777777</XTL_CUST_ID>
<MERCH_ACCT_ID>100</MERCH_ACCT_ID>
<CARD_BRAND_NAME/>
<PMT_L4/>
<PMT_ID/>
<PMT_ID_XTL/>
<API_RESPONSE>113</API_RESPONSE>
<API_ADVICE>Invalid Data</API_ADVICE>
<SERVICE_RESPONSE>0</SERVICE_RESPONSE>
<SERVICE_ADVICE>Declined</SERVICE_ADVICE>
<PROCESSOR_RESPONSE>0</PROCESSOR_RESPONSE>
<PROCESSOR_ADVICE> </PROCESSOR_ADVICE>
<INDUSTRY_RESPONSE>0</INDUSTRY_RESPONSE>
<INDUSTRY_ADVICE> </INDUSTRY_ADVICE>
<REF_FIELD>cust_password</REF_FIELD>
<PROC_NAME/>
<AVS_RESPONSE/>
<CVV_RESPONSE/>
<REQUEST_API_VERSION>4.4</REQUEST_API_VERSION>
</RESPONSE>
El ejemplo anterior fuie declinado por el API debido a datos inválidos en el campo CUST_PASSWORD
(ver los parámetros API_ADVICE y REF_FIELD). Solicitudes declinadas por el servicio también tendrán el mensaje “Declined” en el campo SERVICE_ADVICE.