Greenpay ios sdk

Uso del SDK para IOS

Inicializar el SDK

Primero, debe crear un objeto GreenPay GreenPayConfig para configurar el SDK con la información de su cuenta. Esta información será proporcionada por el equipo de GreenPay cuando cree su cuenta GreenPay.
En segundo lugar, llame al método initGreenPaySDK para inicializar el SDK.
import GreenPaySDK

let greenPaySecret = ""; //Secret provide by Greenpay
let greenPayMerchantId = ""; //MerchantId provided by Greenpay
let greenPayTerminal = ""; //Terminal provided by Greenpay

// The public key must be set as the following example.
let greenPayPublicKey = "-----BEGIN PUBLIC KEY-----\n" +
"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCQGA+x/Z7WMLuQU2gawuJ4u9lP\n" +
"0XBBphHKbmYxnqzfnXGuRWfLred588td37zv95p2dh6fcuII5w3G+KXBNV2DVhwa\n" +
"N3qG9ihoFKaHtFlQApFsLK1DO1G0KZ6rhBn6Bny5aWCS8I1Hq0KuVzGHbjKoLVwO\n" +
"/IBIfLn7lWgVcGzh+QIDAQAB\n" +
"-----END PUBLIC KEY-----";

let config: GreenPayConfig = GreenPayConfig(greenPaySecret: greenPaySecret, greenPayMerchantId: greenPayMerchantId,
greenPayTerminal: greenPayTerminal, greenPayPublickKey: greenPayPublicKey);

GreenPay.shared.initGreenPaySDK(config: config);

Además, puede cambiar entre entornos Sandbox y Producción con esta llamada (de forma predeterminada, el SDK usa el entorno Producción).
GreenPay.shared.enableSandboxMode(sandboxModeEnabled: true);

Tokenizar una tarjeta

Primero, se debe crear un pedido desde su backend a GreenPay. Esto generará un ID de sesión y un Token de transacción. Necesita estos valores para tokenizar una tarjeta. Deberá crear un objeto GreenPayOrderResult para contener estos valores.
GreenPay.shared.createNewTokenizeCardGreenPayOrder(greenPayTokenizeCardOrderInfo: greenPayTokenizeCardOrderInfo).done { (greenPayOrderResult) in
print("createNewTokenizeCardGreenPayOrder Success: Session: " + greenPayOrderResult.securityInfo.session +
" , Token: " + greenPayOrderResult.securityInfo.token);
}.catch { (error) in
let message: String = "Error making the order for tokenizing the card: " + error.localizedDescription
print(message);
}

En segundo lugar, desde su aplicación puede llamar a checkoutExistingTokenizeCardOrder con la tarjeta de crédito para tokenizar y el ID de sesión y el token de transacción obtenidos de su backend.
GreenPay.shared.checkoutExistingTokenizeCardOrder(greenPayCreditCard: self.gpCreditCard,
greenPayOrderResult: greenPayOrderResult).done({ (greenPayTokenizeCardCheckoutOrderResult) in

self.gpTokenizedCreditCard = GreenPayTokenizedCard();
self.gpTokenizedCreditCard!.token = greenPayTokenizeCardCheckoutOrderResult.token;

print("checkoutExistingTokenizeCardOrder Success: Token: " + greenPayTokenizeCardCheckoutOrderResult.token);

}).catch({ (error) in
print("checkoutExistingTokenizeCardOrder Error: ", error.localizedDescription);
})

}.catch { (error) in
print("createNewTokenizeCardGreenPayOrder Error: " , error.localizedDescription);
}
El objeto de devolución GreenPayTokenizeCardCheckoutOrderResult tendrá el Token de la tarjeta que representa la Tarjeta en GreenPay.

Realizar un pago con tarjeta

Primero, se debe crear una orden de pago desde su backend a GreenPay. Esto generará un ID de sesión y un Token de transacción. Necesita estos valores para realizar un pago. Deberá crear un objeto GreenPayOrderResult  para contener estos valores.
Sin embargo, el SDK permite crear la orden de pago ejecutando la función createNewGreenPayOrder.
// Set values
let customerName = "Customer name";
let customerId = "customer identification number";
let amount:Double = 100;
let currency = "CRC | USD";
let pdescription = "Bus ticket - 0001";
let orderReference = "xyz-001";
let product: GreenPayProduct = GreenPayProduct(description: "ticket electronico", skuId: "001", quantity: 1, price: 100, type: "Digital");
var products : [GreenPayProduct] = [GreenPayProduct]();
products.append(product);
let address:GreenPayAddress = GreenPayAddress (country: "CR", street1: "Cartago");
let customerEmail="example@mail.com";

// Creates the order object.
let gpOrderInfo:GreenPayOrderInfo = GreenPayOrderInfo(customerName: customerName, customerEmail: customerEmail,
customerId: customerId,shippingAddress: address, billingAddress: address, amount: amount, currency: currency,
description: pdescription, orderReference: orderReference, products: products)

// Calling the create order service
GreenPay.shared.createNewGreenPayOrder(greenPayOrderInfo: gpOrderInfo).done { (greenPayOrderResult) in
let message: String = "createNewGreenPayOrder Success: Session: " + greenPayOrderResult.securityInfo.session + " , Token: " +
greenPayOrderResult.securityInfo.token;
print(message);
}.catch { (error) in
let message: String = "Error creating the order for making the payment: " + error.localizedDescription
print(message);
}

En segundo lugar, desde su aplicación puede llamar a checkoutExistingOrder  con la tarjeta de crédito para procesar y el ID de sesión y el token de transacción obtenidos de su backend (la cantidad se envió al crear el pedido desde su backend).
// Set card values
let cardHolder:String = "Card holder name";
let cardNumber = "XXXXXXXXXXXXXXXX";
let cvc = "123";
let expirationMonth = 00;
let expirationYear = 00;
let nickname = "nickname";

// Creates the card object
let gpCreditCard:GreenPayCreditCard = GreenPayCreditCard(cardHolder: cardHolder, cardNumber:cardNumber,
expirationMonth:expirationMonth, expirationYear:expirationYear, cvc: cvc, nickname:nickname);

// Calling the chackout service
GreenPay.shared.checkoutExistingOrder(greenPayCreditCard: gpCreditCard,
greenPayOrderResult: greenPayOrderResult).done({ (greenPayCheckoutOrderResult) in
let message: String = "Order paid. Status:" + String(greenPayCheckoutOrderResult.status) + ", Auth: " + greenPayCheckoutOrderResult.authorization;
print(message);
}).catch({ (error) in
let message: String = "Error making the payment: " + error.localizedDescription
print(message);
})

El objeto devuelto GreenPayCheckoutOrderResult tendrá la confirmación de la transacción de GreenPay.

Realizar un pago con token de tarjeta

Al igual que el flujo de pago con datos de tarjeta, primero, se debe crear una orden de pago desde su backend a GreenPay. Esto generará un ID de sesión y un Token de transacción. Necesita estos valores para realizar un pago. Deberá crear un objeto GreenPayOrderResult  para contener estos valores.
En segundo lugar, desde su aplicación puede llamar a checkoutExistingOrder  con el token de tarjeta a procesar y el ID de sesión y el token de transacción obtenidos de su backend (la cantidad se envió al crear el pedido desde su backend).
var gpTokenizedCreditCard : GreenPayTokenizedCard()
self.gpTokenizedCreditCard.token = "";

GreenPay.shared.checkoutExistingOrder(greenPayTokenizedCard: self.gpTokenizedCreditCard,
greenPayOrderResult: greenPayOrderResult).done({ (greenPayCheckoutOrderResult) in
let message: String = "Order paid. Status:" + String(greenPayCheckoutOrderResult.status) + ", Auth: " + greenPayCheckoutOrderResult.authorization;
print(message);
}).catch({ (error) in
print("checkoutExistingOrder Error: ");
})

El objeto devuelto GreenPayCheckoutOrderResult tendrá la confirmación de la transacción de GreenPay.

Recopilación de datos para el servicio de lucha contra el fraude con un id de sesión

La recopilación de datos para identificar comportamientos de fraude está incluida en la funcionalidad de pago de este SDK. Sin embargo, para los casos de aplicaciones implementadas sin usar este SDK, es necesario que se incluya la recopilación de esta información. Por ejemplo:
  1. Aplicaciones híbridas que utilizan el API REST de Greenpay y adaptan el flujo recomendado por Greenpay para aplicaciones web.
  2. Aplicaciones de comercios que hacen los pagos desde el backend manteniendo el cifrado de datos de la tarjeta en frontend.
  3. Aplicaciones de comercios que hacen cifrado y pago en el backend (Requiere certificación de PCI DSS).
Para los casos anteriores, se debe utilizar la siguiente funcionalidad.. 
GreenPay.shared.collectForSession(sessionID: providedSessionID).done({ (sessionID) in
print("Success collecting info for Kount service");
}).catch({ (error) in
print("ERROR collection info for Kount service");
});

Para hacer uso de esta funcionalidad, se puede optar algunos de los siguientes casos:
  1. En el parámetro providedSessionID enviar el valor session de la orden de compra creada. Esto no requeriría algún otro esfuerzo, el API de Greenpay asocia el pago que se quiere procesar al session provisto.
  2. En el parámetro providedSessionID enviar un valor único generado por el comercio. Esto requiere agregar la propiedad kountSession al objeto que contiene los datos o token de la tarjeta antes de ser cifrados (Ver imagen). Donde el kountSession debe ser el mismo que se envíe en el providedSessionID. Además se debe invocar a los siguientes endpoints Sandbox (https://sandbox-checkout.greenpay.me/kount) o Producción (https://checkout.greenpay.me/kount), cuando se va a procesar un pago:

    • Related Articles

    • Consideraciones e instalación del SDk para IOS

      Consideraciones Crear credenciales API. Sandbox: En caso de no tener credenciales del ambiente sandbox (pruebas), puede generarlas aquí. Producción: Para procesar pagos en el ambiente productivo, debe registrarse en este enlace. Se recomienda crear ...
    • Consideraciones e instalación del SDK para android

      Consideraciones Crear credenciales API. Sandbox: En caso de no tener credenciales del ambiente sandbox (pruebas), puede generarlas aquí. Producción: Para procesar pagos en el ambiente productivo, debe registrarse en este enlace. Se recomienda crear ...
    • Uso del SDK para android

      Inicialización del SDK Importe los paquetes de GreenPay SDK con los objetos necesarios. Un ejemplo es: import com.greenpay.sdk.GreenPay; import com.greenpay.sdk.config.GreenPayConfig; import com.greenpay.sdk.exceptions.ConfigurationException; import ...
    • Kount Data Collector para iOS

      Consideraciones Para hacer uso del SDK data collector para iOS se debe considerar los siguiente: El SDK de flujos de pago de Greenpay para iOS ya tiene integrado Kount, por lo tanto, la documentación del presente SDK solo se utiliza cuando la ...
    • Manual para el uso del Dashboard

      El dashboard de GreenPay es una interfaz enfocada en brindar al usuario las herramientas necesarias para administrar todas las transacciones que se realicen por medio de los servicios de GreenPay. Este permite la gestión de suscripciones y ...