Bienvenido al Conekta Developer's Hub. Aquí encontrarás la más robusta documentación del API Conekta y todos los tutoriales que te ayudarán a comenzar a recibir pagos de la manera más rápida, sencilla y segura.
Por motivos de seguridad, se requiere tokenizar la información sensible de la tarjeta en el frontend de tu sitio.
Primeros pasos
- Es necesario contar con conocimiento de APIs.
- Instalar e incluir una de las librerías disponibles de Conekta.
- Contar con tus API Keys (llave personal) de pruebas.
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript" src="https://cdn.conekta.io/js/latest/conekta.js"></script>
Recuerda que...
Si estás construyendo una app, en lugar de ConektaJS usarás los SDKs de Android, iOS o Xamarin.
Objetos que regresa ConektaJS
// Token
{
"id": "tok_a4Ff0dD2xYZZq82d9",
"object": "token",
"used": false,
"livemode": true
}
// Error
{
"type": "parameter_validation_error",
"message": "Something went wrong on Conekta's end",
"message_to_purchaser": "Your code could not be processed, please try again later",
"error_code": "invalid_expiry_month",
"param": "card[exp_month]"
}
Definiciones
El token sólo puede ser utilizado una vez y tiene un tiempo de expiración de una hora.
<script type="text/javascript" >
Conekta.setPublicKey('key_KJysdbf6PotS2ut2');
var conektaSuccessResponseHandler = function(token) {
var $form = $("#card-form");
//Inserta el token_id en la forma para que se envíe al servidor
$form.append($('<input type="hidden" name="conektaTokenId" id="conektaTokenId">').val(token.id));
$form.get(0).submit(); //Hace submit
};
var conektaErrorResponseHandler = function(response) {
var $form = $("#card-form");
$form.find(".card-errors").text(response.message_to_purchaser);
$form.find("button").prop("disabled", false);
};
//jQuery para que genere el token después de dar click en submit
$(function () {
$("#card-form").submit(function(event) {
var $form = $(this);
// Previene hacer submit más de una vez
$form.find("button").prop("disabled", true);
Conekta.Token.create($form, conektaSuccessResponseHandler, conektaErrorResponseHandler);
return false;
});
});
</script>
ConektaJS recopila la información de la tarjeta usando data-attributes pero si lo deseas puedes crear un objeto token.
<form action="" method="POST" id="card-form">
<span class="card-errors"></span>
<div>
<label>
<span>Nombre del tarjetahabiente</span>
<input type="text" size="20" data-conekta="card[name]">
</label>
</div>
<div>
<label>
<span>Número de tarjeta de crédito</span>
<input type="text" size="20" data-conekta="card[number]">
</label>
</div>
<div>
<label>
<span>CVC</span>
<input type="text" size="4" data-conekta="card[cvc]">
</label>
</div>
<div>
<label>
<span>Fecha de expiración (MM/AAAA)</span>
<input type="text" size="2" data-conekta="card[exp_month]">
</label>
<span>/</span>
<input type="text" size="4" data-conekta="card[exp_year]">
</div>
<button type="submit">Crear token</button>
</form>
Para este paso necesitarás tu llave privada de pruebas. Puedes encontrarla dando clic aquí.
# N/A
require_once("/path/to/lib/Conekta.php");
\Conekta\Conekta::setApiKey("key_eYvWV7gSDkNYXsmr");
\Conekta\Conekta::setApiVersion("2.0.0");
require "conekta"
Conekta.api_key = "key_eYvWV7gSDkNYXsmr"
Conekta.api_version = "2.0.0"
import conekta
conekta.api_key = "key_eYvWV7gSDkNYXsmr"
conekta.api_version = "2.0.0"
var conekta = require('conekta');
conekta.api_key = 'key_eYvWV7gSDkNYXsmr';
conekta.api_version = '2.0.0';
import com.conekta;
Conekta.setApiKey("key_eYvWV7gSDkNYXsmr");
com.conekta.Conekta.apiVersion = "2.0.0"
using conekta;
conekta.Api.apiKey = "key_eYvWV7gSDkNYXsmr";
conekta.Api.version = "2.0.0";
import (
conekta "github.com/conekta/conekta-go"
)
conekta.APIKey = "key_pMcnDF4zFyWKyLG15LuqwA"
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.
La información que debes enviar tiene que ser real ya que nuestro sistema de antifraude la necesita para revisar la veracidad de la transacción.
Los campos mostrados en el ejemplo son los mínimos requeridos, si deseas mejorar la veracidad de tus transacciones necesitas saber más sobre el objeto order, para ello, revisa nuestra REST API.
Meses Sin Intereses (Opcional)
En el ejemplo de arriba incluimos un campo optional de monthly_installments, es es una opción común para compras de montos altas, sobre todo para productos físicos en e-commerce. Esta opción permite al comprador pagar la cantidad total durante varias meses, permitiendo acceso a productos más caros sin endeudarse en el proceso. Como negocio recibirás el monto total de la compra con el calendario normal de cualquier otro método de pago pero tendrás que pagar una comisión más alta para que el banco puede financiarlo. El valor de monthly_installment va dividir los pagos entre el mismo número de meses, y acepta valores de 3, 6, 9, 12 and 18 (18 solo con Banamex).
Hay algunas restricciones para este método de pago:
curl -H "Accept: application/vnd.conekta-v2.0.0+json" \
-H "Content-type: application/json" \
-u key_eYvWV7gSDkNYXsmr: \
--header 'content-type: application/json' \
--data '{
"line_items": [{
"name": "Tacos",
"unit_price": 1000,
"quantity": 120
}],
"shipping_lines": [{
"amount": 1500,
"carrier": "FEDEX"
}],
"currency": "MXN",
"customer_info": {
"name": "Arnulfo Quimare",
"email": "[email protected]",
"phone": "+52181818181"
},
"shipping_contact":{
"address": {
"street1": "Calle 123, int 2",
"postal_code": "06100",
"country": "MX"
}
},
"metadata": {"reference": "12987324097", "more_info": "lalalalala"},
"charges":[{
"payment_method": {
"monthly_installments": 3,
"type": "card",
"token_id": "tok_test_visa_4242"
}
}]
}' https://api.conekta.io/orders
try{
$order = \Conekta\Order::create(
[
"line_items" => [
[
"name" => "Tacos",
"unit_price" => 1000,
"quantity" => 120
]
],
"shipping_lines" => [
[
"amount" => 1500,
"carrier" => "FEDEX"
]
], //optional - shipping_lines are only required for physical goods
"currency" => "MXN",
"customer_info" => [
"name" => "nombre",
"email" => "[email protected]",
"phone" => "5512345678"
),
"shipping_contact" => [
"address" => [
"street1" => "Calle 123, int 2",
"postal_code" => "06100",
"country" => "MX"
]
], //optional - shipping_contact is only required for physical goods
"metadata" => ["reference" => "12987324097", "more_info" => "lalalalala"],
"charges" => [
[
"payment_method" => [
"monthly_installments" => 3, //optional
"type" => "card",
"token_id" => "tok_test_visa_4242"
] //payment_method - use customer's default - a card
//to charge a card, different from the default,
//you can indicate the card's source_id as shown in the Retry Card Section
]
]
]
);
} catch (\Conekta\ProcessingError $error){
echo $error->getMessage();
} catch (\Conekta\ParameterValidationError $error){
echo $error->getMessage();
} catch (\Conekta\Handler $error){
echo $error->getMessage();
}
begin
order = Conekta::Order.create({
line_items: [{
name: "Tacos",
unit_price: 1000,
quantity: 120
}],
shipping_lines: [{
amount: 1500,
carrier: "FEDEX"
}], #optional - shipping_lines are only required for physical goods
currency: "MXN",
customer_info: {
name: 'Fulanito Pérez',
email: '[email protected]',
phone: '+52181818181'
},
shipping_contact: {
address: {
street1: "Calle 123, int 2",
postal_code: "06100",
country: "MX"
}
}, #optional - shipping_contact is only required for physical goods
charges: [{
payment_method: {
monthly_installments: 3, #optional
type: 'card',
token_id: 'tok_test_visa_4242'
} #payment_method - use the customer's default - a card
#to charge a card, different from the default,
#you can indicate the card's source_id as shown in the Retry Card Section
}],
metadata: {"reference" => "12987324097", "more_info" => "lalalalala"}
})
rescue Conekta::Error => error
for error_detail in error.details do
puts error_detail.message
end
end
try:
order = conekta.Order.create({
"line_items": [{
"name": "Tacos",
"unit_price": 1000,
"quantity": 120
}],
"shipping_lines": [{
"amount": 1500,
"carrier": "FEDEX"
}], #optional - shipping_lines are only required for physical goods
"currency": "MXN",
"customer_info": {
"name": "John Constantine",
"phone": "+525533445566",
"email": "[email protected]",
"corporate": False, },
"shipping_contact":{
"address": {
"street1": "Calle 123, int 2",
"postal_code": "06100",
"country": "MX"
} #optional - shipping_contact is only required for physical goods
},
"metadata": { "description": "Compra de creditos: 300(MXN)", "reference": "1334523452345" },
"charges":[{
"payment_method": {
"monthly_installments": 3, #optional
"type": "card",
"token_id": "tok_test_visa_4242"
} #payment_method - use the customer's default - a card
#to charge a card, different from the default,
#you can indicate the card's source_id as shown in the Retry Card Section
}]
})
except conekta.ConektaError as e:
print e.message
order = conekta.Order.create({
"line_items": [{
"name": "Tacos",
"unit_price": 1000,
"quantity": 120
}],
"shipping_lines": [{
"amount": 1500,
"carrier": "FEDEX"
}], //optional - shipping_lines are only required for physical goods
"currency": "MXN",
"customer_info": {
'name': 'Fulanito Pérez',
'email': '[email protected]',
'phone': '+52181818181'
},
"shipping_contact":{
"address": {
"street1": "Calle 123, int 2",
"postal_code": "06100",
"country": "MX"
}
}, //optional - shipping_contact is only required for physical goods
"metadata": { "description": "Compra de creditos: 300(MXN)", "reference": "1334523452345" },
"charges":[{
"payment_method": {
'monthly_installments': 3, //optional
'type': 'card',
'token_id': 'tok_test_visa_4242'
} //payment_methods - use the customer's default - a card
//to charge a card, different from the default,
//you can indicate the card's source_id as shown in the Retry Card Section
}]
}, function(err, res) {
if(err){
console.log(err);
return;
}
console.log(res.toObject());
});
try{
Order order = Order.create(
new JSONObject("{"
+ "'line_items': [{"
+ "'name': 'Tacos',"
+ "'unit_price': 1000,"
+ "'quantity': 120"
+ "}]," //line_items
+ "'shipping_lines': [{"
+ "'amount': 1500,"
+ "'carrier': 'FEDEX'"
+ "}]," //optional - shipping_lines are only required for physical goods
+ "'currency': 'MXN',"
+ "'customer_info': {"
+ "'name': 'Rene', "
+ "'email': '[email protected]',"
+ "'phone': '+52181818181'"
+ "}," //customer_info
+ "'shipping_contact':{"
+ "'address': {"
+ "'street1': 'Calle 123, int 2',"
+ "'postal_code': '06100',"
+ "'country': 'MX'"
+ "}"
+ "}," //optional - shipping_contact is only required for physical goods
+"'metadata': {'description': 'Compra de creditos: 300(MXN)' , 'reference' : '1334523452345'},"
+ "'charges':[{"
+ "'payment_method': {"
+ "'monthly_installments': 3," //optional
+ "'type': 'card',"
+ "'token_id: 'tok_test_visa_4242"
+ "}" //payment_method - use the customer's default - a card
//to charge a card, different from the default,
//you can indicate the card's source_id as shown in the Retry Card Section
+ "}]"
+ "}"
)
);
}catch (Conekta::Error e) {
System.out.println(e.details.get(0).message);
}
try{
conekta.Order order = new conekta.Order().create(@"{
""line_items"": [{
""name"": ""Tacos"",
""unit_price"": 1000,
""quantity"": 120
}],
""shipping_lines"": [{
""amount"": 1500,
""carrier"": ""FEDEX""
}]," + //optional - shipping_lines are only required for physical goods
@"""currency"": ""MXN"",
""customer_info"": {
""name"":""Bruce Wayne"",
""email"":""[email protected]"",
""phone"":""+52181818181""
},
""shipping_contact"":{
""address"": {
""street1"": ""Calle 123, int 2"",
""postal_code"": ""06100"",
""country"": ""MX""
}
}," + //optional - shipping_contact is only required for physical goods
@"""metadata"":{""description"" : ""Compra de creditos: 300(MXN)"", ""reference"" : ""1334523452345""},
""charges"":[{
""payment_method"": {
""monthly_installments"": 12," + //optional
@"""type"": ""card"",
""token_id"":""tok_test_visa_4242""
}" + //payment_method - use the customer's default - a card
//to charge a card, different from the default,
//you can indicate the card's source_id as shown in the Retry Card Section
@"}]
}");
} catch (ConektaException e) {
foreach (JObject obj in e.details) {
System.Console.WriteLine("\n [ERROR]:\n");
System.Console.WriteLine("message:\t" + obj.GetValue("message"));
System.Console.WriteLine("debug:\t" + obj.GetValue("debug_message"));
System.Console.WriteLine("code:\t" + obj.GetValue("code"));
}
}
Address := &conekta.Address{
Street1: "Street1",
Street2: "Street2",
City: "City",
State: "State",
Country: "Country",
PostalCode: "PostalCode",
}
customerParams := &conekta.CustomerParams{
Name: "Fulanito Perez",
Phone: "5512345678",
Email: "[email protected]",
}
lineItemParams := &conekta.LineItemsParams{
Name: "Naranjas Robadas",
UnitPrice:10000,
Quantity: 2,
}
shippingParams := &conekta.ShippingLinesParams{
Amount: 200,
TrackingNumber: "123",
Carrier: "Test Carrier",
Method: "method",
}//optional - shipping_lines are only required for physical goods
shippingContactParams := &conekta.ShippingContactParams{
Phone: "55-5555-5555",
Receiver: "Miguel",
BetweenStreets: "BetweenStreets",
Address: Address,
}//optional - shipping_contact is only required for physical goods
chargeParams := &conekta.ChargeParams{
PaymentMethod: &conekta.PaymentMethodParams{
MonthlyIstalments: 3, //optional
Type: "card",
TokenID: "tok_test_visa_4242",
},//payment_method - use customer's default - a card
//to charge a card, different from the default,
//you can indicate the card's source_id as shown in the Retry Card Section
}
orderParams := &conekta.OrderParams{}
orderParams.Currency = "MXN"
orderParams.CustomerInfo = customerParams
orderParams.LineItems = append(orderParams.LineItems, lineItemParams)
orderParams.ShippingLines = append(orderParams.ShippingLines, shippingParams)
orderParams.ShippingContact = shippingContactParams
orderParams.Charges = append(orderParams.Charges, chargeParams)
ord, err := order.Create(orderParams)
if err != nil {
code := err.(conekta.Error).Details[0].Code
//do something
fmt.Printf(code)
} else {
//Check if payment was successful
if ord.payment_status == "paid" {
fmt.Println(ord)
} else {
fmt.Println(" - ", ord.Charges.Data[0].FailureMessage)
fmt.Println(" - ", ord.Charges.Data[0].FailureCode)
}
}
Recibirás un objeto JSON con mucha información, puedes mostrar los campos que creas necesarios.
Una buena práctica es notificar a tu usuario vía email.
# N/A
echo "ID: ". $order->id;
echo "Status: ". $order->payment_status;
echo "$". $order->amount/100 . $order->currency;
echo "Order";
echo $order->line_items[0]->quantity .
"-". $order->line_items[0]->name .
"- $". $order->line_items[0]->unit_price/100;
echo "Payment info";
echo "CODE:". $order->charges[0]->payment_method->auth_code;
echo "Card info:".
"- ". $order->charges[0]->payment_method->name .
"- ". $order->charges[0]->payment_method->last4 .
"- ". $order->charges[0]->payment_method->brand .
"- ". $order->charges[0]->payment_method->type;
// Response
// ID: ord_2fsQdMUmsFNP2WjqS
// $ 1215.0 MXN
// Order
// 120 - Tacos - $10.0
// Payment info
// CODE: 035315
// Card info: 4242 - visa - banco - credit
puts "ID: #{order.id}"
puts "Status: #{order.payment_status}"
puts "$ #{(order.amount/100).to_f} #{order.currency}"
puts "Order"
puts "#{order.line_items[0].quantity}
- #{order.line_items[0].name}
- $ #{(order.line_items[0].unit_price/100).to_f}"
puts "Payment info"
puts "CODE: #{order.charges[0].payment_method.auth_code}"
puts "Card info:
- #{order.charges[0].payment_method.name}
- #{order.charges[0].payment_method.last4}
- #{order.charges[0].payment_method.brand}
- #{order.charges[0].payment_method.type}"
# Response
# ID: ord_2fsQdMUmsFNP2WjqS
# $ 1215.0 MXN
# Order
# 120 - Tacos - $10.0
# Payment info
# CODE: 035315
# Card info: 4242 - visa - banco - credit
print("ID: " + order.id)
print("Status: " + order.payment_status)
print("$" + str((order.amount/100)) + order.currency)
print("Order")
print(str(order.line_items[0].quantity) + " - "
+ order.line_items[0].name + " - "
+ str((order.line_items[0].unit_price/100)))
print("Payment info");
print("Code: " + order.charges[0].payment_method.auth_code)
print("Card info: "
+ order.charges[0].payment_method.name + " - "
+ order.charges[0].payment_method.last4 + " - "
+ order.charges[0].payment_method.brand + " - "
+ order.charges[0].payment_method.type)
# Response
# ID: ord_2fsQdMUmsFNP2WjqS
# $ 1215.0 MXN
# Order
# 120 - Tacos - $10.0
# Payment info
# CODE: 035315
# Card info: 4242 - visa - banco - credit
console.log("ID: " + res.toObject().id);
console.log("Status: " + res.toObject().payment_status);
console.log("$" + (res.toObject().amount/100) + res.toObject().currency);
console.log("Order");
console.log(res.toObject().line_items.data[0].quantity + " - "
+ res.toObject().line_items.data[0].name + " - "
+ (res.toObject().line_items.data[0].unit_price/100));
console.log("Payment info");
console.log("Code: " + res.toObject().charges.data[0].payment_method.auth_code);
console.log("Card info: "
+ res.toObject().charges.data[0].payment_method.name + " - "
+ res.toObject().charges.data[0].payment_method.last4 + " - "
+ res.toObject().charges.data[0].payment_method.brand + " - "
+ res.toObject().charges.data[0].payment_method.type);
// Response
// ID: ord_2fsQdMUmsFNP2WjqS
// $ 1215.0 MXN
// Order
// 120 - Tacos - $10.0
// Payment info
// CODE: 035315
// Card info: 4242 - visa - banco - credit
LineItems line_item = (LineItems)order.line_items.get(0);
Charge charge = (Charge) order.charges.get(0);
PaymentMethod payment_method = (PaymentMethod) charge.payment_method;
System.out.println("ID: " + order.id);
System.out.println("Status: " + order.payment_status);
System.out.println("$" + (order.amount/100) + order.currency);
System.out.println("Order");
System.out.println(line_item.quantity + " - "
+ line_item.name + " - "
+ (line_item.unit_price/100));
System.out.println("Payment info");
System.out.println("Code: " + payment_method.getVal("auth_code"));
System.out.println("Card info: "
+ payment_method.getVal("name") + " - "
+ payment_method.getVal("last4") + " - "
+ payment_method.getVal("brand") + " - "
+ payment_method.getVal("type"));
// Response
// ID: ord_2fsQdMUmsFNP2WjqS
// $ 1215.0 MXN
// Order
// 120 - Tacos - $10.0
// Payment info
// CODE: 035315
// Card info: 4242 - visa - banco - credit
Console.WriteLine("ID: " + order.id);
Console.WriteLine("Status: " + order.payment_status);
Console.WriteLine("Amount: $" + (order.amount / 100) + order.currency);
Console.WriteLine("Order:");
LineItem line_item = (LineItem)order.line_items.at(0);
Console.WriteLine(line_item.quantity + " - "
+ line_item.name + " - "
+ (line_item.unit_price / 100));
Charge charge = (Charge)order.charges.at(0);
Console.WriteLine("Code: " + charge.payment_method.auth_code);
Console.WriteLine("Card info: "
+ charge.payment_method.name + " - "
+ charge.payment_method.last4 + " - "
+ charge.payment_method.brand + " - "
+ charge.payment_method.type);
// Response
// ID: ord_2fsQdMUmsFNP2WjqS
// $ 1215.0 MXN
// Order
// 120 - Tacos - $10.0
// Payment info
// CODE: 035315
// Card info: 4242 - visa - banco - credit
//Procesar respuesta
fmt.Println("ID: ", ord.ID)
fmt.Println("Status: ", ord.PaymentStatus)
fmt.Println("$", ord.Amount/100, ord.Currency)
fmt.Println("--------Order--------")
fmt.Println(ord.LineItems.Data[0].Quantity)
fmt.Println(ord.LineItems.Data[0].Name)
fmt.Println(ord.LineItems.Data[0].UnitPrice/100)
fmt.Println("--------Payment info--------")
fmt.Println("code: ", ord.Charges.Data[0].PaymentMethod.AuthCode)
fmt.Println("Card Info: ")
fmt.Println(" - ", ord.Charges.Data[0].PaymentMethod.Name)
fmt.Println(" - ", ord.Charges.Data[0].PaymentMethod.Last4)
fmt.Println(" - ", ord.Charges.Data[0].PaymentMethod.Brand)
fmt.Println(" - ", ord.Charges.Data[0].PaymentMethod.Type)
//Response
//ord_2nDAbSc2qY23Yk72s
//paid
//202 MXN
//2
//Naranjas Robadas
//100
//--------Payment info--------
//code: 0
//Card Info:
// - Jorge Lopez
// - 4242
// - visa
// - credit
¡Listo!
Recuerda cambiar tus llaves pública y privada después de realizar pruebas.
Existirán casos en los que el cargo no será exitoso, puedes ofrecer a tu cliente utilizar otro método de pago. En estos casos puedes probar alguna de estas opciones:
Para hacer un cargo con un método de pago diferente al default solo necesitas su payment_source_id, el cual podrás obtener dentro del objeto payment source.
curl --request POST \
--url https://api.conekta.io/orders/ord_2fsQdMUmsFNP2WjqS/charges \
--header 'accept: application/vnd.conekta-v2.0.0+json' \
-u key_eYvWV7gSDkNYXsmr: \
--header 'content-type: application/json' \
--data '{
"payment_method": {
"type": "card",
"payment_source_id": "src_2fkJPFjQKABcmiZWy"
}
}'
$charge = \Conekta\Order::createCharge(
[
"payment_method" => [
"type" => "card",
"payment_source_id" => "src_2fkJPFjQKABcmiZWy"
]
]
);
charge = order.create_charge({
payment_method: {
type: "card",
payment_source_id: "src_2fkJPFjQKABcmiZWy"
}
})
charge = order.createCharge({
"payment_method": {
"type": "card",
"payment_source_id": "src_2fkJPFjQKABcmiZWy"
}
})
charge = conekta.Order.create_charge({
"payment_method": {
"type": "card",
"payment_source_id": "src_2fkJPFjQKABcmiZWy"
}
}, function(err, res) {
console.log(res.toObject());
});
Charge charge = order.createCharge("{"
+ "'payment_method': {"
+ "'type': 'card',"
+ "'payment_source_id': 'src_2fkJPFjQKABcmiZWy'"
+ "}"
+"}");
order.createCharge (@"{
""type"":""card"",
""payment_source_id"":""src_2fkJPFjQKABcmiZWy""
}");
paymentMethodParams := &conekta.PaymentMethodParams{
Type: "card",
PaymentSourceID: "src_2fkJPFjQKABcmiZWy",
}
charge := &conekta.ChargeParams{
PaymentMethod: paymentMethodParams,
}
charge.Create("ord_2nDAbSc2qY23Yk72s", charge)
Te recomendamos sugerir otro método de pago como OXXO Pay o SPEI cuando los reintentos fallidos de tarjeta fueron más de 2.
curl --request POST \
--url https://api.conekta.io/orders/ord_2fsQdMUmsFNP2WjqS/charges \
--header 'accept: application/vnd.conekta-v2.0.0+json' \
-u key_eYvWV7gSDkNYXsmr: \
--header 'content-type: application/json' \
--data '{
"payment_method": {
"type": "oxxo_cash"
}
}'
curl --request POST \
--url https://api.conekta.io/orders/ord_2fsQdMUmsFNP2WjqS/charges \
--header 'accept: application/vnd.conekta-v2.0.0+json' \
-u key_eYvWV7gSDkNYXsmr: \
--header 'content-type: application/json' \
--data '{
"payment_method": {
"type": "spei"
}
}'
// OxxoPay
$charge = \Conekta\Order::createCharge(
[
"payment_method" => [
"type" => "oxxo_cash"
]
]
);
// SPEI
$charge = \Conekta\Order::createCharge(
[
"payment_method" => [
"type" => "spei"
]
]
);
# OxxoPay
charge = order.create_charge({
payment_method: {
type: "oxxo_cash"
}
})
# SPEI
charge = order.create_charge({
payment_method: {
type: "spei"
}
})
# OxxoPay
charge = order.createCharge({
"payment_method": {
"type": "oxxo_cash"
}
})
# SPEI
charge = order.createCharge({
"payment_method": {
"type": "spei"
}
})
// OxxoPay
charge = conekta.Order.create_charge({
"payment_method": {
"type": "oxxo_cash"
}
}, function(err, res) {
console.log(res.toObject());
});
// SPEI
charge = conekta.Order.create_charge({
"payment_method": {
"type": "spei"
}
}, function(err, res) {
console.log(res.toObject());
});
// OxxoPay
Charge charge = order.createCharge("{"
+ "'payment_method': {"
+ "'type': 'oxxo_cash'"
+ "}"
+"}");
// SPEI
Charge charge = order.createCharge("{"
+ "'payment_method': {"
+ "'type': 'spei'"
+ "}"
+"}");
// OxxoPay
order.createCharge (@"{
""type"":""oxxo_cash""
}");
// SPEI
order.createCharge (@"{
""type"":""spei""
}");
//OxxoPay
paymentMethodParams := &conekta.PaymentMethodParams{
Type: "oxxo_cash",
ExpiresAt: time.Now().AddDate(0, 0, 30).Unix(),
}
charge := &conekta.ChargeParams{
PaymentMethod: paymentMethodParams,
}
charge.Create("ord_2nDAbSc2qY23Yk72s", charge)
//SPEI
paymentMethodParams := &conekta.PaymentMethodParams{
Type: "spei",
ExpiresAt: time.Now().AddDate(0, 0, 90).Unix(),
}
charge := &conekta.ChargeParams{
PaymentMethod: paymentMethodParams,
}
charge.Create("ord_2nDAbSc2qY23Yk72s", charge)