Generar Link de Pago
1. Crear link de pago
El siguiente snippet incorpora todas las partes del paso 1.
Copia y pega el siguiente fragmento de código en tu sandbox y corre el código para crear a un objeto checkout y opcionalmente también puedes enviarlo por correo electrónico o SMS.
Para más información sobre las diferentes partes del snippet favor de seguir el resto del tutorial.
curl --request POST \
--url https://api.conekta.io/checkouts \
--header 'accept: application/vnd.conekta-v2.1.0+json' \
-u key_eYvWV7gSDkNYXsmr: \
--header 'content-type: application/json' \
--data '{
"name": "Payment Link Name",
"type": "PaymentLink",
"recurrent": false,
"expires_at": 1590882634,
"allowed_payment_methods": ["cash", "card", "bank_transfer"],
"needs_shipping_contact": true,
"order_template": {
"line_items": [{
"name": "Red Wine",
"unit_price": 1000,//con este valor y quantity se calculará el parámetro amount de la petición
"quantity": 10
}],
"currency": "MXN",
"customer_info": {
"name": "Juan Perez",
"email": "[email protected]",
"phone": "5566982090"
}
}
}'
Fecha de expiración
La fecha de expiración puede ser un timestamp comprendido entre 2 a 365 días (el rango válido se tomará a partir del siguiente día de fecha de creación a las 00:01 hrs)
1.1 Asociar un customer con link de pago
Si quieres crear customers y asociarlos con el link de pago entonces puedes hacer las siguientes dos peticiones.
Crear el customer
curl -H "Accept: application/vnd.conekta-v2.1.0+json"\
-H "Content-type: application/json" \
-u key_XXXXXXXXX: \
-X POST -d '{
"name": "Vicente Mendoza",
"email": "[email protected]",
"phone": "5566982093"
}' https://api.conekta.io/customers
Crear link de pago asociado a ese customer
curl --request POST \
--url https://api.conekta.io/checkouts \
--header 'accept: application/vnd.conekta-v2.1.0+json' \
-u key_XXXXX: \
--header 'content-type: application/json' \
--data '{
"name": "Payment Link Name",
"type": "PaymentLink",
"recurrent": false,
"expired_at": 1597635007,
"allowed_payment_methods": ["cash", "card", "bank_transfer"],
"needs_shipping_contact": false,
"order_template": {
"line_items": [{
"name": "Red Wine",
"unit_price": 1000,
"quantity": 10
}],
"currency": "MXN",
"customer_info": {
"customer_id": "cus_2nYSnP4EDiREgGte9"
}
}
}'
1.2 Compartir la URL del link de pago con el customer
Tienes dos opciones para compartir la url del link de pago, puedes hacerlo a través de sms o correo electrónico.
{
"id": "42a4c95e-0db2-4ae8-9bb3-ea681acc8281",
"object": "checkout",
"name": "Payment Link Name",
"url": "https://pay.conekta.com/link/42a4c95e0db24ae89bb3ea681acc8281",
"slug": "42a4c95e0db24ae89bb3ea681acc8281",
"status": "Issued",
"type": "PaymentLink",
"expired_at": 1590882634,
"allowed_payment_methods": ["cash", "card", "bank_transfer"],
"needs_shipping_contact": true,
"livemode": true
}
2. Compartir el link de pago
Vía SMS
Si lo prefieres puedes enviar un sms con el link de pago a través de nuestros sistemas.
curl --request POST \
--url https://api.conekta.io/checkouts/42a4c95e-0db2-4ae8-9bb3-ea681acc8281/sms \
--header 'accept: application/vnd.conekta-v2.1.0+json' \
-u key_eYvWV7gSDkNYXsmr: \
--header 'content-type: application/json' \
--data '{
"phonenumber": "5566982090"
}'
Vía correo electrónico
Si lo prefieres puedes enviar un email con el link de pago a través de nuestros sistemas.
curl --request POST \
--url https://api.conekta.io/checkouts/42a4c95e-0db2-4ae8-9bb3-ea681acc8281/email \
--header 'accept: application/vnd.conekta-v2.1.0+json' \
-u key_eYvWV7gSDkNYXsmr: \
--header 'content-type: application/json' \
--data '{
"email": "[email protected]"
}'
3. Recibir la notificación de pago (opcional)
Si tienes configurado un webhook tu puedes recibir el evento charge.paid cada que se reciba un pago exitoso.
$body = @file_get_contents('php://input');
$data = json_decode($body);
http_response_code(200); // Return 200 OK
if ($data->type == 'charge.paid'){
$msg = "Tu pago ha sido comprobado.";
mail("[email protected]","Pago confirmado",$msg);
}
class WebhooksController < ApplicationController
skip_before_filter :verify_authenticity_token
def receive
data = JSON.parse(request.body.read)
if data['type'] == 'charge.paid'
msg = 'Tu pago ha sido comprobado'
ExampleMailer.paid_email(data, msg)
end
end
render status: 200
end
end
import json
data = json.loads(HttpRequest.body)
if data.type == 'charge.paid':
msg['Subject'] = 'Pago confirmado'
msg['From'] = me
msg['To'] = you
s = smtplib.SMTP('localhost')
s.sendmail(me, [you], msg.as_string())
s.quit()
end
//Using nodemailer
var data = typeof req.body == 'string' ? JSON.parse(req.body) : req.body;
if (data.type == 'order.paid') {
var mail = {
from: me,
to: you,
subject: 'Pago comprobado',
text: 'Tu pago ha sido confirmado.'
};
transporter.sendMail(mail, function(error, info){
if(error){ return console.log(error); }
});
}
import org.json.JSONObject;
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
BufferedReader get_body = request.getReader();
//Parse JSON
}
using System.Net.Mail;
public class ConektaWebhookController : Controller
{
MailMessage mail = new MailMessage(you, me);
[HttpPost]
public ActionResult Index()
{
Stream req = Request.InputStream;
req.Seek(0, System.IO.SeekOrigin.Begin);
string json = new StreamReader(req).ReadToEnd();
var obj = JObject.Parse(json);
var data = obj.SelectToken("data");
if(data.Type == 'charge.paid'){
mail.Subject = "Pago comprobado";
mail.Body = "Tu pago ha sido confirmado.";
client.Send(mail);
}
return new HttpStatusCodeResult(HttpStatusCode.OK);
}
}
Updated about 1 year ago