Cargo único
Genera pagos de una sola ocasión con Pago Directo
Flujo
1. Añade tu llave privada y versión del API
Necesitarás tu llave privada de pruebas o de producción. Si aún no cuentas con ella, puedes obtenerla en tu Panel Conekta.
2. Crea una orden
Al crear un order se generará el cargo de tu cliente. Si no deseas crear el cargo inmediato, puedes preparar la orden y después generar el cargo mandando la información del arreglo charges.
Los campos mostrados en el ejemplo son los mínimos requeridos, si deseas saber más sobre el objeto order revisa nuestra REST API.
El campo product_type podrá tener este valor bbva_pay_by_bank
curl --request POST \
--url https://api.conekta.io/orders \
--header 'accept: application/vnd.conekta-v2.2.0+json' \
-u key_eYvWV7gSDkNYXsmr: \
--header 'content-type: application/json' \
--data '{
"line_items": [{
"name": "Tacos",
"unit_price": 1000,
"quantity": 12
}],
"shipping_lines": [{
"amount": 1500,
"carrier": "FEDEX"
}],
"currency": "MXN",
"customer_info": {
"name": "Fulanito Pérez",
"email": "[email protected]",
"phone": "+5218181818181"
},
"shipping_contact":{
"address": {
"street1": "Calle 123, int 2",
"postal_code": "06100",
"country": "MX"
}
},
"charges":[{
"payment_method": {
"type": "pay_by_bank",
"product_type": "bbva_pay_by_bank"
}
}]
}'
using System.Collections.Generic;
using System.Diagnostics;
using Conekta.net.Api;
using Conekta.net.Client;
using Conekta.net.Model;
namespace Example
{
public class CreateOrderExample
{
public static void Main()
{
Configuration config = new Configuration();
config.AccessToken = Environment.GetEnvironmentVariable("CONEKTA_PRIVATE_KEY");
List<Product> products = new()
{
new(
name: "toshiba",
quantity: 1,
unitPrice: 15555
)
};
PaymentMethodPbbRequest request = new(
type: "pay_by_bank",
productType: PaymentMethodPbbRequest.ProductTypeEnum.BbvaPayByBank
);
List<ChargeRequest> charges = new()
{
new(
paymentMethod: new ChargeRequestPaymentMethod(request)
)
};
OrderRequestCustomerInfo customerInfo = new(new CustomerInfo("Fran carrero", email:"[email protected]", phone:"5555555555"));
OrderRequest orderRequest = new(
currency: "MXN",
customerInfo: customerInfo,
lineItems: products,
charges: charges,
preAuthorize: false
);
instance = new OrdersApi(config);
OrderResponse response = instance.CreateOrder(orderRequest, "es"); Console.WriteLine($"Order ID: {response.Id}");
Console.WriteLine($"redirect url: {response.Charges.Data[0].PaymentMethod.GetPaymentMethodPbbPayment().RedirectUrl}");
Console.WriteLine($"deep link: {response.Charges.Data[0].PaymentMethod.GetPaymentMethodPbbPayment().DeepLink}");
Console.WriteLine($"type: {response.Charges.Data[0].PaymentMethod.GetPaymentMethodPbbPayment().Type}");
}
}
}
<?php
require __DIR__ . '/../../vendor/autoload.php';
use Conekta\Api\OrdersApi;
use Conekta\Configuration;
use Conekta\Model\OrderRequest;
$config = Configuration::getDefaultConfiguration()->setAccessToken(getenv("CONEKTA_API_KEY"));
$apiInstance = new OrdersApi(null, $config);
$rq = new OrderRequest([
'line_items' => [
[
'name' => 'Nombre del Producto o Servicio',
'unit_price' => 23000,
'quantity' => 1
]
],
'currency' => 'MXN',
'customer_info' => [
'name' => 'Jorge Martinez',
'email' => '[email protected]',
'phone' => '+5218181818181'
],
'metadata' => [
'datos_extra' => '12334'
],
'shipping_contact' => [
'address' => [
'street1' => 'Calle Falsa 123',
'city' => 'Ciudad de México',
'state' => 'CDMX',
'country' => 'MX',
'postal_code' => '01234'
],
'phone' => '+5218181818181',
'receiver' => 'Jorge Martinez'
],
'shipping_lines' => [
[
'amount' => 1000,
'carrier' => 'Estafeta',
'tracking_number' => '1234567890'
]
],
'charges' => [
[
'payment_method' => [
'type' => 'pay_by_bank',
'product_type' => 'bbva_pay_by_bank'
]
]
]
]);
try {
$order = $apiInstance->createOrder($rq);
$json_string = json_encode( $order, JSON_PRETTY_PRINT);
print_r($json_string);
print("order id " . $order->getId());
print("redirect url " . $order->getCharges()->getData()[0]->getPaymentMethod()->getRedirectUrl());
print("deep link " . $order->getCharges()->getData()[0]->getPaymentMethod()->getDeepLink());
print("type " . $order->getCharges()->getData()[0]->getPaymentMethod()->getType());
} catch (Exception $e) {
echo 'Exception when calling OrdersApi->createOrder: ', $e->getMessage(), PHP_EOL;
}
# Load the gem
require 'conekta'
class OneTimeChargePbb
Conekta.configure do |config|
config.access_token = ENV['CONEKTA_API_KEY']
end
api_instance = Conekta::OrdersApi.new
order_request = Conekta::OrderRequest.new(
:currency => 'MXN',
:line_items => [
{
:name => 'Box of Cohiba S1s',
:unit_price => 35000,
:quantity => 1,
:description => 'Imported From Mex',
}
],
:customer_info => {
:name => 'Mario Hernandez',
:email => '[email protected]',
:phone => '5555555555'
},
:shipping_lines =>[
{
:amount => 0,
:carrier => 'FEDEX',
:method => 'FEDEX_GROUND',
}
],
:shipping_contact => {
:address => {
:street1 => 'Calle 123',
:city => 'Mexico DF',
:state => 'DF',
:country => 'MX',
:postal_code => '00000'
},
:receiver => 'Mario Hernandez'
},
:charges => [
{
:payment_method => Conekta::PaymentMethodPbbRequest.new(
:product_type => 'bbva_pay_by_bank',
:type => 'pay_by_bank',
)
}
]
)
opts = {
accept_language: 'es' # String | Use for knowing which language to use
}
begin
result = api_instance.create_order(order_request, opts)
p result
p result.id
p result.charges.data[0].payment_method.redirect_url
p result.charges.data[0].payment_method.deep_link
p result.charges.data[0].payment_method.type
rescue Conekta::ApiError => e
puts "Exception when calling create order #{e}"
end
end
import time
import os
import conekta
from conekta.rest import ApiException
from pprint import pprint
# The client must configure the authentication and authorization parameters
# in accordance with the API server security policy.
# Examples for each auth method are provided below, use the example that
# satisfies your auth use case.
# Configure Bearer authorization: bearerAuth
configuration = conekta.Configuration(
access_token = os.environ["CONEKTA_PRIVATE_KEY"]
)
# Enter a context with an instance of the API client
with conekta.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = conekta.OrdersApi(api_client)
order = conekta.OrderRequest(
line_items=[
conekta.Product(
name='Test Product',
quantity=1,
unit_price=10000
)
],
customer_info=conekta.OrderRequestCustomerInfo(
conekta.CustomerInfo(
name='John Doe',
email='[email protected]',
phone='555-555-5555'
)
),
currency='MXN',
shipping_lines= [
conekta.ShippingRequest(
amount= 500,
carrier= "fedex",
method= "phisical",
tracking_number= "aaxxx-xxx"
),
],
shipping_contact= conekta.CustomerShippingContacts(
address= conekta.CustomerShippingContactsAddress(
street1= "av viva mex",
postal_code= "01600",
city="cdmx",
country= "mx",
state= "cdmx"
),
receiver= "fran carrero"
),
charges=[
conekta.ChargeRequest(
payment_method=conekta.ChargeRequestPaymentMethod(
conekta.PaymentMethodPbbRequest(
product_type='bbva_pay_by_bank',
type= 'pay_by_bank'
),
)
)
]
)
accept_language = 'es' # str | Use for knowing which language to use (optional) (default to 'es')
try:
# Create order
response = api_instance.create_order(order, accept_language=accept_language)
print("The response of OrdersApi->create_order:\n")
pprint(response)
pprint(f"order id: {response.id}")
print("redirect_url", response.charges.data[0].payment_method.actual_instance.redirect_url)
print("redirect_url", response.charges.data[0].payment_method.actual_instance.deep_link)
print("type", response.charges.data[0].payment_method.actual_instance.type)
except ApiException as e:
print("Exception when calling OrdersApi->create_order: %s\n" % e)
ApiClient defaultClient = Configuration.getDefaultApiClient();
// Configure HTTP bearer authorization: bearerAuth
HttpBearerAuth bearerAuth = (HttpBearerAuth) defaultClient.getAuthentication("bearerAuth");
bearerAuth.setBearerToken(System.getenv("CONEKTA_PRIVATE_KEY"));
final OrdersApi api = new OrdersApi(defaultClient);
OrderRequest orderRequest = new OrderRequest();
ChargeRequest chargeRequest = new ChargeRequest();
PaymentMethodPbbRequest paymentMethodPbbRequest = new PaymentMethodPbbRequest()
.type("pay_by_bank")
.productType(PaymentMethodPbbRequest.ProductTypeEnum.BBVA_PAY_BY_BANK);
ChargeRequestPaymentMethod chargeRequestPaymentMethod = new ChargeRequestPaymentMethod();
chargeRequestPaymentMethod.setActualInstance(paymentMethodPbbRequest);
chargeRequest.setPaymentMethod(chargeRequestPaymentMethod);
List<ChargeRequest> charges = new ArrayList<>();
charges.add(chargeRequest);
orderRequest.setCharges(charges);
orderRequest.currency("MXN");
List<Product> products = new ArrayList<>();
products.add(new Product()
.name("test")
.tags(new ArrayList<>(List.of("valor1", "valor2", "valor3")))
.quantity(1)
.unitPrice(500000));
orderRequest.lineItems(products);
OrderRequestCustomerInfo customer = new OrderRequestCustomerInfo();
customer.setActualInstance(new CustomerInfo()
.name("test")
.email("[email protected]")
.phone("3143159054"));
orderRequest.setCustomerInfo(customer);
List<ShippingRequest> shippingLines = new ArrayList<>();
shippingLines.add(new ShippingRequest()
.amount(550L)
.method("Standard")
.carrier("Conekta")
.trackingNumber("1234567890"));
orderRequest.shippingLines(shippingLines);
orderRequest.shippingContact(new CustomerShippingContacts()
.phone("3143159054")
.receiver("fran carrero")
.address(new CustomerShippingContactsAddress()
.city("cdmx")
.country("mx")
.postalCode("06100")
.state("cdmx")
.street1("calle 123")));
OrderResponse response = api.createOrder(orderRequest, "es", null);
System.out.println(response);
configuration := conekta.NewConfiguration()
ctx := context.WithValue(context.TODO(), conekta.ContextAccessToken, os.Getenv("CONEKTA_PRIVATE_KEY"))
apiClient := conekta.NewAPIClient(configuration)
phone := "31431590545"
name := "fran carrero"
OrderRequest := conekta.OrderRequest{
Charges: []conekta.ChargeRequest{
{
PaymentMethod: conekta.ChargeRequestPaymentMethod{PaymentMethodPbbRequest: &conekta.PaymentMethodPbbRequest{
Type: "pay_by_bank",
ProductType: "bbva_pay_by_bank",
}},
},
},
Currency: "MXN",
CustomerInfo: conekta.OrderRequestCustomerInfo{
CustomerInfo: conekta.NewCustomerInfo("fran carrer", "[email protected]", "31431590545"),
},
LineItems: []conekta.Product{
{
UnitPrice: 5000,
Quantity: 1,
Name: "Test Product",
Tags: []string{"test", "product"},
},
},
ShippingContact: &conekta.CustomerShippingContacts{
Phone: &phone,
Receiver: &name,
Address: conekta.CustomerShippingContactsAddress{
Street1: conekta.PtrString("123 Main St"),
Street2: conekta.PtrString("Apt 4B"),
City: conekta.PtrString("Mexico City"),
State: conekta.PtrString("CDMX"),
PostalCode: conekta.PtrString("01234"),
Country: conekta.PtrString("MX"),
},
},
ShippingLines: []conekta.ShippingRequest{
{
Carrier: conekta.PtrString("DHL"),
TrackingNumber: conekta.PtrString("123456789"),
Amount: 1000,
},
},
}
resp, _, _ := apiClient.OrdersAPI.CreateOrder(ctx).OrderRequest(OrderRequest).AcceptLanguage("es").Execute()
fmt.Println(resp)
fmt.Println("order id:", resp.Id)
fmt.Println("redirect_url:", resp.Charges.Data[0].PaymentMethod.PaymentMethodPbbPayment.RedirectUrl)
fmt.Println("redirect_url:", resp.Charges.Data[0].PaymentMethod.PaymentMethodPbbPayment.GetDeepLink())
fmt.Println("type:", resp.Charges.Data[0].PaymentMethod.PaymentMethodPbbPayment.Type)
3. Procesar respuesta
Una vez creada la orden y el cargo, deberás procesar la respuesta y compartir el redirect_url
o deep_link
(dependerá de la plataforma del cliente) al cliente final .
Recuerda que la respuesta de una orden es formato _JSON_.
Console.WriteLine($"Order ID: {response.Id}");
Console.WriteLine($"redirect url: {response.Charges.Data[0].PaymentMethod.GetPaymentMethodPbbPayment().RedirectUrl}");
Console.WriteLine($"deep link: {response.Charges.Data[0].PaymentMethod.GetPaymentMethodPbbPayment().DeepLink}");
Console.WriteLine($"type: {response.Charges.Data[0].PaymentMethod.GetPaymentMethodPbbPayment().Type}");
//Response
//ID: ord_2nCsbdLXvdAgDVcKr
//direct_url: https://provider.mx/main/3d5ec65b-f33d-4111-9ba2-ce0dd973321e
//deep_link: https://mgm.mx/WA3b/pbb?AGREEMENT=002484374&AMOUNT=60&CONCEPT=PagoDirecto&CURRENCY=MXN&REFERENCE=02763589364330826232
//type: pay_by_bank
System.out.println(response);
System.out.println("order id " + response.getId());
System.out.println("redirect url " + response.getCharges().getData().get(0).getPaymentMethod().getPaymentMethodBnplPayment().getRedirectUrl());
System.out.println("deep link " + response.getCharges().getData().get(0).getPaymentMethod().getPaymentMethodBnplPayment().getDeepLink());
System.out.println("type " + response.getCharges().getData().get(0).getPaymentMethod().getPaymentMethodBnplPayment().getType());
//Response
//ID: ord_2nCsbdLXvdAgDVcKr
//direct_url: https://provider.mx/main/3d5ec65b-f33d-4111-9ba2-ce0dd973321e
//deep_link: https://mgm.mx/WA3b/pbb?AGREEMENT=002484374&AMOUNT=60&CONCEPT=PagoDirecto&CURRENCY=MXN&REFERENCE=02763589364330826232
//type: pay_by_bank
$json_string = json_encode( $order, JSON_PRETTY_PRINT);
print("order id " . $order->getId());
print("redirect url " . $order->getCharges()->getData()[0]->getPaymentMethod()->getRedirectUrl());
print("deep link " . $order->getCharges()->getData()[0]->getPaymentMethod()->getDeepLink());
print("type " . $order->getCharges()->getData()[0]->getPaymentMethod()->getType());
//Response
//ID: ord_2nCsbdLXvdAgDVcKr
//direct_url: https://provider.mx/main/3d5ec65b-f33d-4111-9ba2-ce0dd973321e
//deep_link: https://mgm.mx/WA3b/pbb?AGREEMENT=002484374&AMOUNT=60&CONCEPT=PagoDirecto&CURRENCY=MXN&REFERENCE=02763589364330826232
//type: pay_by_bank
p result
p result.id
p result.charges.data[0].payment_method.redirect_url
p result.charges.data[0].payment_method.deep_link
p result.charges.data[0].payment_method.type
//Response
//ID: ord_2nCsbdLXvdAgDVcKr
//direct_url: https://provider.mx/main/3d5ec65b-f33d-4111-9ba2-ce0dd973321e
//deep_link: https://mgm.mx/WA3b/pbb?AGREEMENT=002484374&AMOUNT=60&CONCEPT=PagoDirecto&CURRENCY=MXN&REFERENCE=02763589364330826232
//type: pay_by_bank
pprint("order id", response.id)
pprint("redirect_url", response.charges.data[0].payment_method.actual_instance.redirect_url)
pprint("redirect_url", response.charges.data[0].payment_method.actual_instance.deep_link)
pprint("type", response.charges.data[0].payment_method.actual_instance.type)
//Response
//ID: ord_2nCsbdLXvdAgDVcKr
//direct_url: https://provider.mx/main/3d5ec65b-f33d-4111-9ba2-ce0dd973321e
//deep_link: https://mgm.mx/WA3b/pbb?AGREEMENT=002484374&AMOUNT=60&CONCEPT=PagoDirecto&CURRENCY=MXN&REFERENCE=02763589364330826232
//type: pay_by_bank
fmt.Println(resp)
fmt.Println("order id:", resp.Id)
fmt.Println("redirect_url:", resp.Charges.Data[0].PaymentMethod.PaymentMethodBnplPayment.RedirectUrl)
fmt.Println("deep_link:", resp.Charges.Data[0].PaymentMethod.PaymentMethodBnplPayment.DeepLink)
fmt.Println("type:", resp.Charges.Data[0].PaymentMethod.PaymentMethodBnplPayment.Type)
//Response
//ID: ord_2nCsbdLXvdAgDVcKr
//direct_url: https://provider.mx/main/3d5ec65b-f33d-4111-9ba2-ce0dd973321e
//deep_link: https://mgm.mx/WA3b/pbb?AGREEMENT=002484374&AMOUNT=60&CONCEPT=PagoDirecto&CURRENCY=MXN&REFERENCE=02763589364330826232
//type: pay_by_bank
Notificaciones vía webhook
Todos los eventos que ocurran antes, durante y después de una transacción pueden ser notificados a través de webhooks, justo en el momento en que ocurren. Te en listamos todos los eventos que intervienen en esta modalidad, accediendo al siguiente enlace para revisar el detalle del payload correspondiente a cada uno de ellos, y mapearlos para llevar a cabo los procesos internos de tu negocio requeridos.
Te recomendamos capturar los siguientes eventos:
Evento | Descripción |
---|---|
order.paid | Enviado cuando el cliente completa un pago de forma exitosa |
order.pending_payment | Enviado cuando una orden es creada pero está pendiente de pago |
order.expired | Enviado cuando el pago de una orden es expirado. |
Updated about 1 hour ago