PSE a través de API directa
En esta página
Esta página incluye los pasos necesarios para integrar PSE utilizando la API DEUNA.
Usa la Punto final V2 para integraciones API directas.
compra V2#
Las compras V2 realizan los dos pasos en un único punto final agregando la información del pedido en la solicitud.
El proceso de compra de V2 es el siguiente:
- Llamadas de usuario POST v2/merchants/order/purchase con la información del pedido en la solicitud CURL.
- DEUNA crea el pedido y realiza la operación de compra.
Integrar PSE por API#
Las integraciones API directas siguen el proceso V2.
1. Consigue bancos disponibles
Como requisito previo para realizar una Compra, el usuario debe seleccionar el banco desde donde realizar la transacción.
Realizar una solicitud al Punto final de métodos de pago del comerciante para obtener la información.
El objeto de respuesta resultante tendrá la siguiente estructura:
{
"@type": "type.googleapis.com/external_merchant_api.v1.GetPaymentMethodsResponse",
"data": [
{
"enabled": true,
"method_type": "bank_transfer",
"processor_name": "payu_pse",
"specific_fields": {
"financial_institutions": [
{
"id": "1081",
"description": "BANCO AGRARIO DESARROLLO",
"url": ""
},
{
"id": "1813",
"description": "SANTANDER CONSUMER COLOMBIA",
"url": ""
}
]
},
"input_schema": [],
"labels": {
"es": ""
},
"exclude_cvv": false,
"excluded_franchises": [],
"extra_params": {},
"installments": [],
"credentials": {
"public_api_key": "",
"external_merchant_id": "",
"customer_token": ""
},
"google_pay_credential": null,
"stored_payment_methods": [],
"id": "00000000-0000-0000-0000-000000000000",
"payment_centers": [],
"payment_provider": ""
}
]
}Dentro del specific_fields objeto, hay un objeto llamado financial_institutions que contiene una matriz de objetos con la siguiente estructura:
{
"id": "1813",
"description": "SANTANDER CONSUMER COLOMBIA",
"url": ""
}¿Cómo enviar la información al usuario?
Asegúrese de generar la matriz de objetos utilizando el description campo como etiqueta. Una vez que el usuario selecciona una opción, asegúrese de id y description campos para completar la información bancaria requerida para la Compra.
2. Realice una compra de PSE V2
Realizar una solicitud al Compra V2 endpoint.
Para realizar una compra de PSE con Deuna, la carga útil V2 debe contener lo siguiente:
- Los datos del pedido deben incluir la información del pedido.
- nombre completo
- Número de documento
- Tipo de documento
- Número de teléfono
- Tipo de persona (natural o jurídica)
- banco
- URL de devolución de llamada para redirigir al usuario a su página
Esta tabla muestra los campos necesarios para realizar una transacción PSE:
| Campo | Descripción | Ejemplo |
|---|---|---|
payer_infor.person_type | Tipo de persona, ya sea natural o jurídica. | LEGAL_PERSON |
pse.financial_institution | Código del banco seleccionado. | 1022 |
pse.financial_institution_name | Nombre del banco. | BANCO UNION COLOMBIANO |
callback_urls.on_success | URL de redirección después de completar la transacción PSE. | https://example.com/ |
browser_details.ip_address | Dirección IP del navegador utilizado por el usuario. | 155.95.122.206 |
billing_address.identification_type | Tipo de documento de identidad. Los documentos disponibles son: CC,CE, TI, PP, NIT, RCyDE. | CC |
billing_address.identification | Número de identificación del usuario. | 1234567890 |
billing_address.first_name | Nombre del usuario. | juan |
billing_address.last_name | Apellido del usuario. | Pérez |
billing_address.phone | Número de teléfono en E.164format. | +14155552671 |
billing_address.city | Ciudad de facturación al usuario. | Bogotá |
billing_address.street1 | Información de dirección principal para facturar al usuario. | Avenida Carrera 72 80 |
billing_address.street2 | Información de apartamentos y suites para facturación al usuario. | 94 |
{
"order_type": "DEUNA_CHECKOUT",
"payer_info": {
"email": "jrodriguez@gmail.com",
"person_type": "NATURAL_PERSON" // Obtained from PSE form filled by the user
},
"callback_urls": {
"on_success": "https://example.com/" // Redirection after completing PSE transaction
},
"payment_source": {
"method_type": "bank_transfer",
"processor": "payu_pse",
"method_type_specific_fields": {
"pse": {
"financial_institution": "1022", // Code of selected bank, obtained from PSE form
"financial_institution_name": "BANCO UNION COLOMBIANO" // Name of bank, obtained from PSE form
}
}
},
"order": {
"order_id": "d81fe7bf-748b-4a7a-bc8f-7be98c8ae748",
"store_code": "all",
"currency": "COP",
"total_tax_amount": 200000,
"items_total_amount": 1900000,
"sub_total": 1900000,
"total_amount": 2100000,
"items": [
{
"id": "79",
"name": "10 ALITAS VOLANTE",
"description": "10 alitas picantes",
"options": "string option",
"total_amount": {
"amount": 1900000,
"currency": "COP",
"currency_symbol": "$"
},
"unit_price": {
"amount": 850000,
"currency": "COP",
"currency_symbol": "$"
},
"tax_amount": {
"amount": 100000,
"currency": "COP",
"currency_symbol": "$"
},
"quantity": 2,
"uom": "string",
"upc": "string",
"sku": "SKU-11021",
"isbn": "12-345-678-90123",
"brand": "Bolt Swagstore",
"manufacturer": "Bolt Factory",
"category": "hats",
"color": "Red",
"size": "XXL",
"weight": {
"weight": 22,
"unit": "kg"
},
"image_url": "https://boltswagstore.com/inventory/hats/red-hat.png",
"details_url": "https://boltswagstore.com/inventory/hats/red-hat.png",
"type": "physical",
"taxable": true
}
],
"billing_address": {
"first_name": "Juan",
"last_name": "Rodríguez",
"email": "jrodriguez@gmail.com",
"identification": "1234567890", // Document number obtained from PSE form
"identification_type": "CC", // Document type obtained from PSE form
"phone": "+578315263363",
"address1": "Avenida Carrera 72 80",
"address2": "94",
"zipcode": "110110",
"city": "Bogota",
"state_name": "Bogota",
"country": "CO"
},
"shipping_address": {
"first_name": "Juan",
"last_name": "Rodríguez",
"email": "jrodriguez@gmail.com",
"identification": "14201225",
"identification_type": "CC",
"phone": "+578315263363",
"address1": "Avenida Carrera 72 80",
"address2": "94",
"zipcode": "110110",
"city": "Bogota",
"state_name": "Bogota",
"country": "CO"
},
"browser_details": {
"ip_address": "155.95.122.206"
}
}
}3. Redirigir al usuario
Después de realizar la compra, la API responde con una URL de redirección en el authorization_bank_transfer node.
- Tome la URL del
authorization_bank_transfernode. - Redirigir al usuario a la URL.
- Espere a que el usuario complete el pago.
El Usuario completa el pago en PSE
- Escucha los webhooks de PayU para confirmar el pago.
Respuesta
{
"order_type": "DEUNA_CHECKOUT",
"order_token": "db3fc147-2a4e-460f-a874-f6f79b1e651c",
"order": {
"order_id": "d81fe7bf-748b-4a7a-bc8f-7be98c8ae748",
"store_code": "all",
"currency": "COP",
"tax_amount": 0,
"display_tax_amount": "",
"shipping_amount": 0,
"display_shipping_amount": "COP 0,00",
"items_total_amount": 1900000,
"display_items_total_amount": "COP 19.000,00",
"sub_total": 1900000,
"display_sub_total": "COP 19.000,00",
"total_amount": 2100000,
"display_total_amount": "COP 21.000,00",
"items": [
{
"id": "79",
"name": "10 ALITAS VOLANTE",
"description": "10 alitas picantes",
"options": "string option",
"total_amount": {
"amount": 1900000,
"original_amount": 0,
"display_amount": "COP 19.000,00",
"display_original_amount": "COP 0,00",
"currency": "COP",
"currency_symbol": "$",
"total_discount": 0,
"display_total_discount": "COP 0,00"
},
"unit_price": {
"amount": 850000,
"display_amount": "COP 8.500,00",
"currency": "COP",
"currency_symbol": "$"
},
"tax_amount": {
"amount": 100000,
"display_amount": "COP 1.000,00",
"currency": "COP",
"currency_symbol": "$"
},
"quantity": 2,
"uom": "string",
"upc": "string",
"sku": "SKU-11021",
"isbn": "12-345-678-90123",
"brand": "Bolt Swagstore",
"manufacturer": "Bolt Factory",
"category": "hats",
"color": "Red",
"size": "XXL",
"weight": {
"weight": 22,
"unit": "kg"
},
"image_url": "https://boltswagstore.com/inventory/hats/red-hat.png",
"details_url": "https://boltswagstore.com/inventory/hats/red-hat.png",
"type": "physical",
"taxable": true,
"discounts": [],
"included_in_subscription": false,
"subscription_id": "00000000-0000-0000-0000-000000000000",
"item_details": []
}
],
"discounts": [],
"shipping_address": {
"id": 0,
"user_id": "",
"first_name": "Juan",
"last_name": "Rodríguez",
"phone": "+578315263363",
"identity_document": "",
"lat": 0,
"lng": 0,
"address1": "Avenida Carrera 72 80",
"address2": "94",
"city": "Bogota",
"zipcode": "110110",
"state_name": "Bogota",
"country_code": "CO",
"additional_description": "",
"address_type": "",
"is_default": false,
"created_at": "2025-01-20T16:49:38Z",
"updated_at": "2025-01-20T16:49:38Z",
"identity_document_type": "",
"email": "jrodriguez@gmail.com",
"state_code": "",
"country": "CO"
},
"shipping_options": null,
"user_instructions": "",
"metadata": {},
"status": "pending",
"payment": {
"data": {
"amount": {
"amount": 2100000,
"currency": "COP"
},
"metadata": {
"authorization_code": "",
"reference_transaction_id": ""
},
"from_card": {
"card_brand": "",
"first_six": "",
"last_four": "",
"bank_name": "",
"country_iso": "",
"credential_source": ""
},
"updated_at": "2025-01-20 16:49:38.673262908 +0000 UTC",
"method_type": "bank_transfer",
"merchant": {
"store_code": "all",
"id": "2fe8d31e-f434-4628-869e-e894c13de929"
},
"created_at": "2025-01-20 16:49:38.67239479 +0000 UTC",
"id": "d81fe7bf-748b-4a7a-bc8f-7be98c8ae748",
"processor": "payu_pse",
"customer": {
"email": "Benny.Reynolds55@yahoo.com",
"id": "56c3241c-5a7d-4f1b-99b6-b78cb78286a4",
"first_name": "",
"last_name": ""
},
"status": "pending",
"reason": "",
"external_transaction_id": "29e58cbf-051c-487a-8e3b-c37cb22be349",
"authorization_bank_transfer": {
"qr": "",
"token": "",
"expiration_date": "",
"redirect_url": "",
"reference": "4537041",
"description": "Bank transfer transaction",
"bank_name": "BANCO UNION COLOMBIANO",
"external_transaction_status": "PENDING"
},
"merchant_payment_processor_name": "",
"authorization_code": "",
"installment_interest_calculations": null,
"next_action": {
"action": "authorization_bank_transfer",
"authorization_bank_transfer": {
"qr": "",
"token": "",
"expiration_date": "",
"redirect_url": "https://sandbox.api.payulatam.com/payments-api/pse-caller?enc=aHR0cHM6Ly9yZWdpc3Ryby5kZXNhcnJvbGxvLnBzZS5jb20uY28vUFNFVXNlclJlZ2lzdGVyL1N0YXJ0VHJhbnNhY3Rpb24uYXNweD9lbmM9dG5QY0pITUtsU25tUnBITThmQWJ1em5HaEgySlNDcjQ5V1Y4YUttOGQ0eUJ4d0RvSmlrRGEwNFBjZE9Ca0JxSiMjanJvZHJpZ3VlekBnbWFpbC5jb20jIyMj",
"reference": "",
"description": "",
"bank_name": "",
"external_transaction_status": ""
},
"url": ""
}
}
},
"gift_card": [],
"redirect_url": "",
"webhook_urls": null,
"total_discount": 0,
"display_total_discount": "COP 0,00",
"shipping": null,
"cash_change": 0,
"shipping_method": null,
"shipping_methods": [],
"timezone": "",
"scheduled_at": "",
"billing_address": {
"id": 0,
"user_id": "",
"first_name": "Juan",
"last_name": "Rodríguez",
"phone": "+578315263363",
"identity_document": "",
"lat": 0,
"lng": 0,
"address1": "Avenida Carrera 72 80",
"address2": "94",
"city": "Bogota",
"zipcode": "110110",
"state_name": "Bogota",
"country_code": "CO",
"additional_description": "",
"address_type": "",
"is_default": false,
"created_at": "2025-01-20T16:49:38Z",
"updated_at": "2025-01-20T16:49:38Z",
"email": "jrodriguez@gmail.com",
"identity_document_type": "",
"external_number": "",
"internal_number": "",
"country": ""
},
"payment_link": "",
"display_shipping_tax_amount": "COP 0,00",
"display_total_tax_amount": "COP 2.000,00",
"shipping_tax_amount": 0,
"total_tax_amount": 200000,
"user_id": "",
"include_payment_options": [],
"redirect_urls": {
"success": "",
"pending": "",
"error": "",
"fallback": "",
"close": ""
},
"created_at": "",
"updated_at": "",
"payer_info": null,
"discount_amount": 0,
"shipping_discount_amount": 0,
"device_fingerprint": "",
"expired_at": "",
"version": "0",
"fraud": null,
"display_total_interest_amount": "",
"payment_method": "",
"token": "",
"statement_descriptor": "",
"browser_details": {
"screen_height": 0,
"screen_width": 0,
"user_agent": "Mozilla/5.0 (Windows; U; Windows NT 6.3) AppleWebKit/532.0.1 (KHTML, like Gecko) Chrome/19.0.871.0 Safari/532.0.1",
"ip_address": "41.3.66.146",
"color_depth": 0,
"java_enabled": false,
"java_script_enabled": false,
"language": "",
"time_zone_offset": 0,
"accept_header": ""
}
}
}