Implementación
Se requiere la versión Newtonsoft.Json: 13.0.1 o superior
Al momento de realizar la venta se deberá enviar el dato de enable cashback, en caso de que este no se enviado por default estará en 0, se puede implementar de la siguiente manera con el uso de un check box.
...
connectorPAX.setEnableCashback(checkBox3.Checked ? 1 : 0);
...
private void button1_Click(object sender, EventArgs e)
timer1.Enabled = true;
button1.Enabled = false;
responseDataC = false;
string result = "";
string msiValue = ((KeyValuePair<string,string>)comboBox1.SelectedItem).Value;
try
{
connectorPAX.SetCustomeCOMM(portCom);
//seteamos los valores
connectorPAX.SetAmount(Convert.ToDouble(textBox1.Text));
if (textBox5.Text == "")
{
connectorPAX.SetTip(0.0);
}
else
{
connectorPAX.SetTip(Convert.ToDouble(textBox5.Text));
}
connectorPAX.SetFolio(textBox2.Text);
connectorPAX.SetMSI(Convert.ToInt32(msiValue));
connectorPAX.setDisablePrintAnimation(checkBox1.Checked);
connectorPAX.setBankOnly(checkBox2.Checked ? 1 : 0);
connectorPAX.setEnableCashback(checkBox3.Checked ? 1 : 0);
//enviamos la transacción y la almacenamos en la variable result
connectorPAX.sendData();
}
catch (Exception ec)
{
Console.WriteLine(ec.Message);
}
}Esto permitirá que el dispositivo POS evalúe lo siguiente:
- Se verifica que el comercio tenga la operativa activa de retiro de efectivo (cashback)
- Se valida que el bin participa para retiro de efectivo (cashback)
En caso de que se cumplan estas condiciones se enviarán los siguientes datos al momento de obtener el objeto Response
| Campo | Tipo | Descripción |
|---|---|---|
| applyCashback | bool | Indica que el bin de la tarjeta usada para la transacción es candidata para retiro de efectivo (cashback) |
| commission | string | Comisión cobrado al comercio para la operativa de retiro de efectivo |
| minAmount | string | Monto mínimo de venta para aplicar un retiro en efectivo |
| minAvailable | string | Monto mínimo de retiro de efectivo permitido |
| maxAvailable | string | Monto máximo de retiro de efectivo permitido |
| amount | string | Monto original de la venta original |
Para obtener estos datos puede ser de dos maneras distintas:
Forma 1 de recibir la respuesta: Usando el objeto getResponse() se obtendrá lo siguiente:
Forma 2 de recibir la respuesta: Extraer información del objeto de forma manual
{
"data": null,
"idReport": 0,
"applyCashback": true,
"commision": "1.1",
"minAmount": "1000.0",
"minAvailable": "100.0",
"maxAvailable": "5000.0",
"amount": "1000.0"
}textBox4.Text += System.Environment.NewLine + "ApplyCashback: " + connectorPAX.getApplyCashback();
textBox4.Text += System.Environment.NewLine + "Commission: " + connectorPAX.getCommission();
textBox4.Text += System.Environment.NewLine + "MinAmount: " + connectorPAX.getMinAmount();
textBox4.Text += System.Environment.NewLine + "MinAvailable: " + connectorPAX.getMinAvailable();
textBox4.Text += System.Environment.NewLine + "MaxAvailable: " + connectorPAX.getMaxAvailable();
textBox4.Text += System.Environment.NewLine + "Amount: " + connectorPAX.getAmount();Ejemplo de recepción de respuesta:
ApplyCashback: true
Commission: "1.1"
MinAmount: "1000.0"
MinAvailable: "100.0"
MaxAvailable: "5000.0"
Amount: "1000.0"Posteriormente debemos de validar los datos recibidos y verificar si la transacción y confirmar en dado caso si el cliente acepta retiro de efectivo. Ejemplo de implementación de validaciones y obtención de confirmación y monto del retiro de efectivo (cashback):
Datos que recibe el método sendCashback:
| Campo | Tipo | Descripción |
|---|---|---|
| confirmCashback | int | Indica que se confirma el retiro de efectivo de parte del tarjetahabiente, tiene un valor default de 0 |
| cashbackAmount | double | Monto del retiro de efectivo solicitado por el tarjetahabiente, tiene un valor default de 0.00 |
| cashbackFee | double | Monto de comisión a cobrar al tarjetahabiente por el comercio para el retiro de efectivo, tiene un valor default de 0.00 |
private void getResponseData()
connectorPAX.ReceiveData();
if (connectorPAX.getResponse() != null) {
// En caso de que aplique para retiro de efectivo
if (connectorPAX.getApplyCashback()) {
timer1.Enabled = false;
// Se actualizan parametros de validación para cashback
updateCashbackConfig();
// Valores default
double cashbackAmount = 0;
int confirmCashback = 0;
double commission = 0;
// Se validan los montos minimos y maximos configurados del lado
operativo
if {
del monto de cashback {
(validCashbackSaleAmount(Convert.ToDouble(connectorPAX.getAmount())))
// Se levanta pantalla modal para la confirmación y obtención
string cashbackAmountStrg = getCashbackAmountModal();
if (!string.IsNullOrEmpty(cashbackAmountStrg))
cashbackAmount = Convert.ToDouble(cashbackAmountStrg);
// En caso de que el cliente no requiera cashback este se
enviara en 0
confirmCashback = cashbackAmount > 0 ? 1 : 0;
commission = cashbackConfig.getCommission();
}
}
timer1.Enabled = true;
// Se envia confirmación y monto de cashback
connectorPAX.sendCashBack(confirmCashback, cashbackAmount,
commission);
} else {}
// Flujo de venta sin cashback
} else {}
button1.Enabled = true;
}Posterior a esto el pos recibirá la petición y en caso de haber enviado monto para el retiro de efectivo se procesa la venta con retiro de efectivo , de caso contrario la venta sera procesada como una venta normal.
Updated 6 months ago
