Para este servicio se debe consumir el siguiente endpoint:
A continuación, se muestra el paso a paso para actualizar el monto de una suscripción en nuestro API de forma exitosa:
1. Crear el objeto JSON a enviar
El objeto JSON debe tener la siguiente estructura:
A continuación, se muestra la descripción de los parámetros:
- subscriptionId: Es el identificador que se recibe en la respuesta cuando se crea una suscripción
- secret: secret provisto por GreenPay.
- merchant: merchantId provisto por GreenPay.
- user: Usuario que actualizará la suscripción.
- amount: Monto por el que se actualizará la suscripción.

Consideraciones
El parámetro “user” se utiliza para llevar la auditoría de los usuarios que cambian el método de pago.
2. Enviar la solicitud de actualización del monto
Se debe enviar una solicitud HTTP de tipo POST al endpoint para cambiar el monto con el objeto JSON que contiene los datos de la suscripción.
Una vez que se ha enviado la solicitud de actualización del monto y ésta se haya realizado con éxito, se obtiene un objeto de tipo JSON como respuesta.
Al recibir esta respuesta, el parámetro que se debe obtener del objeto JSON es el “body”, ya que este contiene el resultado del cambio del monto de la suscripción. En la siguiente imagen se muestra un ejemplo de la respuesta que se recibe:
{
"status": "SUCCESS",
"code": 200,
"result": {
"id": "3",
"merchant_id": "143b28c9-32ad-4635-8ed8-d6abfb6863a0",
"status": "ACTIVE",
"user_id": "Aaron",
"user_type": 1,
"card_tokens": [
"bf0bd94a-a4e7-4ef6-96c6-2350f3963f93"
],
"purchase_order": {
"secret": "QUY5MzBEMkRDMzVCMDFCRDc2NzEwRjZCQjE3NjhFNkE0NjhEQ0MxRjkxQzkzMjAwNzVDNUVGNkY5RTc0N0M0NzkzNUEyQUZFQjczMEYyODEyRjJEMDc5Q0ExNTk1NTA0NjdCMkNBODg1N0Q4MzY2MjI0NEREMUVGQjk4NTcwMzg=",
"currency": "CRC",
"optional": {
"key": "value",
"key1": "value1"
},
"terminal": "deKokoTest-eb29-BNCR-CRC",
"description": "subscription description",
"subscription": [
{
"amount": 5500.99,
"cadence": {
"day": 15,
"mode": "EVERY",
"unit": "MONTH",
"every": 1
},
"endDate": 1544853600000,
"startDate": 1536991200000
}
],
"initialPayment": {
"amount": 100,
"description": "some set up description"
}
},
"next_payment": null,
"enabled": true,
"inserted_at": "2018-12-21T20:55:06.299Z",
"updated_at": "2018-12-21T22:01:11.341Z",
"general_info": {
"user": "UserBot"
}
},
"errors": []
}
A continuación, se muestra un ejemplo en javascript del envío de la solicitud al endpoint de suscripciones para actualizar el monto. Esta función también obtiene el “body” del objeto tipo JSON que se recibe como respuesta.
var unirest = require("unirest");
var req = unirest("POST", "https://sandbox-merchant.greenpay.me/subscriptions/update");
req.headers({
"Postman-Token": "bc6f3d94-d5b0-4b76-afc8-4e13b08f576f",
"cache-control": "no-cache",
"Content-Type": "application/json"
});
req.type("json");
req.send({
"subscriptionId": "f39a928e9c1f1fa32f30e1de1df35656",
"secret": "QUY5MzBEMkRDMzVCMDFCRDc2NzEwRjZCQjE3NjhFNkE0NjhEQ0MxRjkxQzkzMjAwNzVDNUVGNkY5RTc0N0M0NzkzNUEyQUZFQjczMEYyODEyRjJEMDc5Q0ExNTk1NTA0NjdCMkNBODg1N0Q4MzY2MjI0NEREMUVGQjk4NTcwMzg=",
"merchantId": "143b28c9-32ad-4635-8ed8-d6abfb6863a0",
"user": "User Bot",
"amount": 5500.99
});
req.end(function (res) {
if (res.error) throw new Error(res.error);
console.log(res.body);
});
3. Posibles errores a recibir
Si se intenta actualizar el monto de una suscripción con credenciales incorrectas, la respuesta retornada será la siguiente.
{
"code": 500,
"status": "FAIL",
"result": [],
"errors": [
""Merchant doesn't exist"."
]
}
- Subscription not found. Impossible to change amount.
Si se intenta actualizar una suscripción inactiva o pendiente de pago, la respuesta retornada será la siguiente.