Suscribir al cliente a un plan
Para crear una suscripción se debe llamar al recurso /subscription/create
mediante un método POST. El esquema de recurso es del tipo application/x-www-form-urlencoded
, que debe ser indicado en el header Content-Type.
Para crear una nueva suscripción, basta con enviar los parámetros planId y customerId.
En caso que existiera un cupón de descuento, puede agregarse aquí mediante su couponId. Para mas informacion sobre como crear un cupón, consulte la seccion Crear cupón.
apiKey required | string apiKey del comercio |
planId required | string Identificador del Plan |
customerId required | string Identificador del cliente |
subscription_start | string <yyyy-mm-dd> La fecha de inicio de la suscripción |
couponId | number Si quiere aplicarle un descuento, el identificador del cupón de descuento. |
trial_period_days | number Número de días de Trial. Si el Plan tiene días de Trial, este valor modificará los días para esta suscripción. |
periods_number | number Número de períodos de duración de la subscripción. Si null, entonces tomará el periods_number del plan. |
s required | string la firma de los parámetros efectuada con su secretKey |
{- "apiKey": "string",
- "planId": "string",
- "customerId": "string",
- "subscription_start": "string",
- "couponId": 0,
- "trial_period_days": 0,
- "periods_number": 0,
- "s": "string"
}
Firma de parámetros
Ejemplos de firmado de parámetros en diferentes lenguajes de programación
- PHP
- NodeJS
- Phyton
$secretKey = 'my secret'
$params = array(
'apiKey' => '1F90971E-8276-4715-97FF-2BLG5030EE3B',
'token' => 'AJ089FF5467367'
);
$keys = array_keys($params);
sort($keys);
$toSign = '';
foreach($keys as $key) {
$toSign .= $key . $params[$key];
};
$signature = hash_hmac('sha256', $toSign , $secretKey);
const {createHmac} = require("node:crypto")
const secretKey = "my secret";
const params = {
apiKey: "1F90971E-8276-4715-97FF-2BLG5030EE3B",
token: "AJ089FF5467367",
};
const keys = Object.keys(params);
keys.sort();
let toSign = "";
for (let i = 0; i < keys.length; i++) {
let key = keys[i];
toSign += key + params[key];
}
const signature = createHmac("sha256",secretKey).update(toSign).digest("hex")
import hmac
import hashlib
secret_key
params = {
'apiKey': '1F90971E-8276-4715-97FF-2BLG5030EE3B',
'token': 'AJ089FF5467367'
}
keys = list(params.keys())
keys.sort()
to_sign = ''
for key in keys:
to_sign += key + params[key]
signature = hmac.new(secret_key.encode(), to_sign.encode(), hashlib.sha256).hexdigest()
El servicio retorna el objeto suscripcion creada.
subscriptionId | string Identificador de la suscripción |
planId | string Identificador del plan |
plan_name | string Nombre del plan |
customerId | string Identificador del cliente |
created | string <yyyy-mm-dd hh:mm.ss> Fecha de creación de la suscripción |
subscription_start | string <yyyy-mm-dd hh:mm.ss> Fecha de inicio de la suscripción |
subscription_end | string <yyyy-mm-dd hh:mm:ss> Fecha de término de la suscripción, si la suscripción no tiene término mostrará valor null. |
period_start | string <yyyy-mm-dd hh:mm.ss> Fecha de inicio del período actual. |
period_end | string <yyyy-mm-dd hh:mm.ss> Fecha de término del período actual. |
next_invoice_date | string <yyyy-mm-dd hh:mm.ss> Fecha del siguiente cobro |
trial_period_days | number Número de días de Trial |
trial_start | string <yyyy-mm-dd hh:mm.ss> Fecha de inicio del trial |
trial_end | string <yyyy-mm-dd hh:mm.ss> Fecha de término del trial. |
cancel_at_period_end | number Si la suscripción será cancelada automáticamente al finalizar el período actual:
|
cancel_at | string Fecha de cancelación de la suscripción |
periods_number | number Número de períodos de vigencia de la suscripción |
days_until_due | number Número de días pasados, después de generar un importe, para considerar el importe vencido. |
status | number Estado de la suscripción:
|
morose | number Si la subscripción está morosa:
|
object (Discount) Descuento aplicado a una Suscripción | |
Array of objects (Invoice) Lista de los importe efectuados a la suscripción. |
{- "subscriptionId": "sus_azcyjj9ycd",
- "planId": "MiPlanMensual",
- "plan_name": "Plan mensual",
- "customerId": "cus_eblcbsua2g",
- "created": "2018-06-26 17:29:06",
- "subscription_start": "2018-06-26 17:29:06",
- "subscription_end": "2019-06-25 00:00:00",
- "period_start": "2018-06-26 00:00:00",
- "period_end": "2018-06-26 00:00:00",
- "next_invoice_date": "2018-06-27 00:00:00",
- "trial_period_days": 1,
- "trial_start": "2018-06-26 00:00:00",
- "trial_end": "2018-06-26 00:00:00",
- "cancel_at_period_end": 0,
- "cancel_at": null,
- "periods_number": 12,
- "days_until_due": 3,
- "status": 1,
- "morose": 0,
- "discount": {
- "id": 181,
- "type": "Subscription discount",
- "created": "2019-12-01 00:00:00",
- "start": "2019-12-01 00:00:00",
- "end": "2019-12-31 00:00:00",
- "deleted": "2019-12-25 00:00:00",
- "status": 1,
- "coupon": {
- "id": 166,
- "name": 166,
- "percent_off": 10,
- "currency": "CLP",
- "amount": 2000,
- "created": "2018-07-13 09:57:53",
- "duration": 1,
- "times": 1,
- "max_redemptions": 50,
- "expires": "2018-12-31 00:00:00",
- "status": 1,
- "redemtions": 21
}
}, - "invoices": [
- {
- "id": 1034,
- "subscriptionId": "sus_azcyjj9ycd",
- "customerId": "cus_eblcbsua2g",
- "created": "2018-06-26 17:29:06",
- "subject": "PlanPesos - período 2018-06-27 / 2018-06-27",
- "currency": "CLP",
- "amount": 20000,
- "period_start": "2018-06-27 00:00:00",
- "period_end": "2018-07-26 00:00:00",
- "attemp_count": 0,
- "attemped": 1,
- "next_attemp_date": "2018-07-27 00:00:00",
- "due_date": "2018-06-30 00:00:00",
- "status": 0,
- "error": 0,
- "errorDate": "2018-06-30 00:00:00",
- "errorDescription": "The minimum amount is 350 CLP",
- "items": [
- {
- "id": 567,
- "subject": "PlanPesos - período 2018-06-27 / 2018-06-27",
- "type": 1,
- "currency": "CLP",
- "amount": 20000
}
], - "payment": {
- "flowOrder": 3567899,
- "commerceOrder": "sf12377",
- "requestDate": "2017-07-21 12:32:11",
- "status": 1,
- "subject": "game console",
- "currency": "CLP",
- "amount": 12000,
- "payer": "pperez@gamil.com",
- "optional": {
- "RUT": "7025521-9",
- "ID": "899564778"
}, - "pending_info": {
- "media": "Multicaja",
- "date": "2017-07-21 10:30:12"
}, - "paymentData": {
- "date": "2017-07-21 12:32:11",
- "media": "webpay",
- "conversionDate": "2017-07-21",
- "conversionRate": 1.1,
- "amount": 12000,
- "currency": "CLP",
- "fee": 551,
- "balance": 11499,
- "transferDate": "2017-07-24"
}, - "merchantId": "string"
}, - "outsidePayment": {
- "date": "2021-03-08 00:00:00",
- "comment": "Pago por caja"
}, - "chargeAttemps": [
- {
- "id": 901,
- "date": "2018-12-06 15:03:33",
- "customerId": "cus_1uqfm95dch",
- "invoiceId": 1234,
- "commerceOrder": "1883",
- "currency": "CLP",
- "amount": 90000,
- "errorCode": 1605,
- "errorDescription": "This commerceOrder 1883 has been previously paid"
}
]
}
]
}
Una vez creada la suscripcion la misma generara los importes, para mas informacion sobre como obtenerlos consulte la sección Importes