Crear un plan de suscripción
En primer lugar, el comercio debe crear uno o varios planes que desee poner a disposición de sus clientes. Estos planes pueden configurarse de manera sencilla a través del portal de Flow o mediante la API, llamando al recurso /plans/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.
Además, Flow permite personalizar cada plan según las necesidades del negocio, definiendo aspectos como la duración, los montos de cobro, la frecuencia de pago y la inclusión de descuentos o períodos de prueba.
apiKey required | string apiKey del comercio |
planId required | string Identificador del Plan. Un texto identificador del Plan, sin espacios, ejemplo: PlanMensual |
name required | string Nombre del Plan |
currency | string Moneda del Plan, por omisión CLP |
amount required | number Monto del Plan |
interval required | number Especifica la frecuencia de cobros (generación de importe)
|
interval_count | number Número de intervalos de frecuencia de cobros, por ejemplo:
|
trial_period_days | number Número de días de Trial. El valor por omisón es 0. |
days_until_due | number Número de días pasados, después de generar un importe, para considerar el importe vencido. Si no se especifica el valor será 3. |
periods_number | number Número de períodos de duración del plan. Si el plan tiene vencimiento, entonces ingrese aquí el número de periodos de duración del plan |
urlCallback | string URL donde Flow notificará al comercio los pagos efectuados por este plan. |
charges_retries_number | number El número de reintentos de cargo, por omisión Flow utilizará 3 |
currency_convert_option | any Si hay conversión de moneda, en qué momento hará la conversión:
|
s required | string la firma de los parámetros efectuada con su secretKey |
{- "apiKey": "string",
- "planId": "string",
- "name": "string",
- "currency": "string",
- "amount": 0,
- "interval": 0,
- "interval_count": 0,
- "trial_period_days": 0,
- "days_until_due": 0,
- "periods_number": 0,
- "urlCallback": "string",
- "charges_retries_number": 0,
- "currency_convert_option": null,
- "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 plan creado.
planId | string Identificador del plan |
name | string Nombre del plan |
currency | string Moneda del plan |
amount | number Monto del plan |
interval | number Define la frecuencia de cobro del plan:
|
interval_count | number Número de intervalos de la frecuencia de cobro del plan, ejemplo: interal = 2 y interval_count = 2 significaría un plan quincenal. |
created | string <yyyy-mm-dd hh:mm.ss> Fecha de creación del plan |
trial_period_days | number Número de días de Trial |
days_until_due | number Número de días pasados, después de generar un importe, para considerar el importe vencido. |
periods_number | number Número de períodos de duración del plan. Si el plan es de término indefinido el valor de periods_number sera 0 (cero) |
urlCallback | string <uri> URL donde Flow notificará al comercio los pagos efectuados por este plan. |
charges_retries_number | number Número de reintentos de cargo, por omisión Flow utilizará 3 reintentos. |
currency_convert_option | number Si hay conversión de moneda, en qué momento hará la conversión:
|
status | number El estado del plan:
|
public | number Si el Plan es de visibilidad pública, es decir, expuestos a otras aplicaciones:
|
{- "planId": "myPlan01",
- "name": "Plan junior",
- "currency": "CLP",
- "amount": 20000,
- "interval": 3,
- "interval_count": 1,
- "created": "2017-07-21 12:33:15",
- "trial_period_days": 15,
- "days_until_due": 3,
- "periods_number": 12,
- "charges_retries_number": 3,
- "currency_convert_option": 0,
- "status": 1,
- "public": 1
}
Creado el plan lo siguiente es crear al cliente. Crear cliente.