Cobrar a tarjeta inscrita
¿Te has fijado que servicios como Uber, Netflix o Spotify piden ingresar los datos de la tarjeta sólo una vez, y luego generan cobros automáticos por servicio?
Con QVO tus clientes podrán inscribir sus tarjetas de crédito y recibir cobros sin necesidad de re-ingresar sus datos.
Antes de empezar debes crear un cliente e inscribirle una tarjeta. Visita estos links para ver como hacerlo.
Con lo anterior, ya puedes generar cobros de inmediato o en el futuro haciendo una llamada a POST /customers/{customer_id}/cards/{card_id}/charge
, en la URL debes especificar el customer_id y card_id, estos identificadores son proporcionados en la creación de cliente e inscripción de tarjeta respectivamente. En el body de tu consulta debes declarar los siguientes parámetros:
- Monto a cobrar
amount
. - Descripción o razón de cobro
description
.
No te olvides de declarar tu API token en el header de la consulta a nuestra API. Como en el ejemplo, donde debes reemplazar <COPIA TU API TOKEN AQUÍ> por tu credencial.
ℹ Sí requieres forzar el cobro a una tarjeta inscrita en una de las cuentas de tu plataforma marketplace, debes especificar dentro del header de la consulta a nuestra API la variable QVO-account (el ID de la cuenta que será forzada), adicional al API Token de tu cuenta.
curl -X POST "https://playground.qvo.cl/customers/cus_qos_6r3-4I4zIiou2BVMHg/cards/woc_bMz2iAH1mJ8M4cvv0b7IMA/charge" \
-H "Authorization: Bearer <COPIA TU TOKEN AQUÍ>" \
-d amount=3000 \
-d description="For the watch"
<?php
require 'guzzle.phar';
$client = new GuzzleHttp\Client();
$body = $client->request('POST', 'https://playground.qvo.cl/customers/cus_qos_6r3-4I4zIiou2BVMHg/cards/woc_bMz2iAH1mJ8M4cvv0b7IMA/charge', [
'json' => [
'amount' => 3000,
'description' => 'For the watch'
],
'headers' => [
'Authorization' => 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiVGVzdCBjb21tZXJjZSIsImFwaV90b2tlbiI6dHJ1ZX0.AXt3ep_r23w9rSPTv-AnK42s2m-1O0okMYrYYDlRyXA'
]
])->getBody();
$response = json_decode($body);
var_dump($response);
?>
require 'rest-client'
require 'json'
result =
RestClient.post 'https://playground.qvo.cl/customers/cus_qos_6r3-4I4zIiou2BVMHg/cards/woc_bMz2iAH1mJ8M4cvv0b7IMA/charge', {
amount: 3000,
description: 'For the watch'
}, {
Authorization: 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiVGVzdCBjb21tZXJjZSIsImFwaV90b2tlbiI6dHJ1ZX0.AXt3ep_r23w9rSPTv-AnK42s2m-1O0okMYrYYDlRyXA'
}
p JSON.parse(result)
const fetch = require('node-fetch-json');
fetch('https://playground.qvo.cl/customers/cus_qos_6r3-4I4zIiou2BVMHg/cards/woc_bMz2iAH1mJ8M4cvv0b7IMA/charge', {
method: 'POST',
headers: {
'Authorization': 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiVGVzdCBjb21tZXJjZSIsImFwaV90b2tlbiI6dHJ1ZX0.AXt3ep_r23w9rSPTv-AnK42s2m-1O0okMYrYYDlRyXA'
},
body: {
amount: 3000,
description: 'For the watch'
}
}).then(function(resposne) {
console.log(resposne);
});
import requests
r = requests.post('https://playground.qvo.cl/customers/cus_qos_6r3-4I4zIiou2BVMHg/cards/woc_bMz2iAH1mJ8M4cvv0b7IMA/charge', params={
'amount': 3000,
'description': 'For the watch'
}, headers={
'Authorization': 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiVGVzdCBjb21tZXJjZSIsImFwaV90b2tlbiI6dHJ1ZX0.AXt3ep_r23w9rSPTv-AnK42s2m-1O0okMYrYYDlRyXA'
})
print r.json()
Si el cobro es exitoso la llamada retornará la información de la transacción con el estado status
exitoso successful
.
{
"id": "trx_Vk7WJYL-wYi4bjXmAaLyaw",
"created_at": "2017-05-17T19:12:57.759Z",
"amount": 3000,
"currency": "CLP",
"description": "For the watch",
"gateway": "webpay_oneclick",
"fee": 372,
"credits": 0,
"status": "successful",
"customer": {
"id": "cus_qos_6r3-4I4zIiou2BVMHg",
"name": "Jon Snow",
"email": "dabastard@winterfell.com"
},
"payment": {
"amount": 3000,
"gateway": "webpay_oneclick",
"payment_type": "credit",
"installments": 0,
"payment_method": {
"id": "woc_bMz2iAH1mJ8M4cvv0b7IMA",
"last_4_digits": "6623",
"card_type": "Visa",
"payment_type": "CD"
}
},
"refund": null,
"gateway_response": {
"status": "success",
"message": "successful transaction"
}
}
ℹ Las llamadas de este tutorial usan la URL de prueba https://playground.qvo.cl. Sin embargo cuando tengas tu cuenta real (de producción) debes usar la URL https://api.qvo.cl
También te invitamos visitar la referencia completa, desata toda la potencia de nuestra API explorando.