Ejemplo n.º 1
0
        private ActionResult ProcessingResult_Uniteller(ProcessingResultModel model)
        {
            if (model == null)
            {
                throw new ArgumentNullException("model");
            }
            PaymentResultContext context = new PaymentResultContext();

            if (model.success == true)
            {
                context.Success = true;
            }
            else
            {
                context.Errors.Add(PaymentStrings.PaymentCancelled);
            }
            return(base.View("_ProcessingResult", context));
        }
Ejemplo n.º 2
0
        private ActionResult ProcessingResult_PayU(ProcessingResultModel model)
        {
            if (model == null)
            {
                throw new System.ArgumentNullException("model");
            }
            PaymentResultContext context = new PaymentResultContext();

            if (model.success == true)
            {
                context.Success = true;
                context.Order   = model.order;
                ConfirmInvoiceResult invoiceResult = BookingProvider.ConfirmInvoice(model.invoice);

                Tracing.DataTrace.TraceEvent(TraceEventType.Information, 0, "PAYU transaction: invoice: '{0}', invoice confirmation: '{1}'", new object[]
                {
                    model.invoice,
                    invoiceResult.IsSuccess ? "SUCCESS" : "FAILED"
                });

                if (!invoiceResult.IsSuccess)
                {
                    context.Errors.Add(string.Format("invoice confirmation error: {0}", invoiceResult.ErrorMessage));
                }
                else
                {
                    context.Success = true;
                    BookingProvider.AcceptInvoice(Convert.ToInt32(context.Order));
                }
            }
            else
            {
                context.Errors.Add(PaymentStrings.PaymentCancelled);
            }
            return(base.View("_ProcessingResult", context));
        }
Ejemplo n.º 3
0
 private void onPaymentFinished(PaymentResultContext result)
 {
     log(string.Format("PAYMENT FINISHED : " + Environment.NewLine
         + " ID : {0}" + Environment.NewLine
         + " Invoice : {1}" + Environment.NewLine
         + " ApprovalCode : {2}" + Environment.NewLine
         + " Amount : {3}" + Environment.NewLine
         + " DateTime : {4}" + Environment.NewLine
         + " PAN : {5}" + Environment.NewLine
         + " Terminal : {6}" + Environment.NewLine
         + " EMVdata : {7}" + Environment.NewLine
         + " RequiresSignature : {8}",
         result.TransactionItem.ID,
         result.TransactionItem.Invoice,
         result.TransactionItem.AcquirerApprovalCode,
         result.TransactionItem.Amount,
         result.TransactionItem.Date,
         result.TransactionItem.Card != null ? result.TransactionItem.Card.PANMasked : "null",
         result.TerminalName, result.EmvData,
         result.RequiresSignature));
     log(divider);
 }
Ejemplo n.º 4
0
        private void onPaymentFinished(PaymentResultContext result)
        {
            try
            {
                if (result.ScheduleItem != null)
                {
                    log("PAYMENT FINISHED :");
                    log(JsonConvert.SerializeObject(result.ScheduleItem, Formatting.Indented));
                }
                else if (result.TransactionItem != null)
                {
                    Transaction resultTran = result.TransactionItem;

                    if (cb_TestServerFisc.Checked)
                    {
                        resultTran = Task.Factory.StartNew <Transaction>(() =>
                        {
                            var transaction = result.TransactionItem;
                            var uptime      = DateTime.Now;
                            var timeout     = new TimeSpan(0, 1, 0);
                            int i           = 0;
                            while (transaction.FiscalInfo == null || (transaction.FiscalInfo.FiscalStatus != FiscalStatus.Success && transaction.FiscalInfo.FiscalStatus != FiscalStatus.Failure))
                            {
                                if (DateTime.Now - uptime > timeout)
                                {
                                    log("Cancelling fiscal data request by timeout");
                                    break;
                                }
                                Thread.Sleep(5000);
                                var statusRequestResult = PaymentController.Instance.TryGetFiscalInfo(transaction.ID);
                                log("Get fiscal data attempt " + ++i);
                                if (statusRequestResult != null && statusRequestResult.ErrorCode == 0)
                                {
                                    if (statusRequestResult.Transaction != null)
                                    {
                                        transaction = statusRequestResult.Transaction;
                                        log(JsonConvert.SerializeObject(transaction.FiscalInfo, Formatting.Indented));
                                    }
                                    else
                                    {
                                        log("Failed : transaction not found or not unique");
                                    }
                                }
                                else
                                {
                                    log("Failed : " + statusRequestResult == null ? "null" : statusRequestResult.ErrorMessage);
                                }
                            }
                            return(transaction ?? result.TransactionItem);
                        }
                                                                         ).GetAwaiter().GetResult();
                    }
                    string emvdata = string.Empty;
                    if (resultTran.EMVData != null)
                    {
                        foreach (String key in resultTran.EMVData.Keys)
                        {
                            emvdata += string.Format("{0}: {1}\n", key, resultTran.EMVData[key]);
                        }
                    }

                    log("PAYMENT FINISHED : " + Environment.NewLine + JsonConvert.SerializeObject(resultTran, Formatting.Indented));
                    log(DIVIDER);

                    if (cb_TestServerFisc.Checked)
                    {
                        log(Utils.BuildInvoice(m_AuthResult.Account, resultTran));
                    }
                    StringBuilder slipBuilder = new StringBuilder();
                    slipBuilder.Append("___________SLIP___________\n");
                    if (m_AuthResult != null && m_AuthResult.ErrorCode == 0)
                    {
                        slipBuilder.AppendLine(m_AuthResult.Account.BankName);
                        slipBuilder.AppendLine(m_AuthResult.Account.ClientName);
                        slipBuilder.AppendLine(m_AuthResult.Account.ClientLegalName);
                        slipBuilder.AppendLine(m_AuthResult.Account.ClientPhone);
                        slipBuilder.AppendLine(m_AuthResult.Account.ClientWeb);
                    }
                    slipBuilder.AppendFormat("Дата и время операции: {0}\n", resultTran.Date);
                    slipBuilder.AppendFormat("Терминал: {0}\n", resultTran.TerminalName);
                    slipBuilder.AppendFormat("Чек: {0}\n", resultTran.Invoice);
                    slipBuilder.AppendFormat("Код подтверждения: {0}\n", resultTran.AcquirerApprovalCode);
                    slipBuilder.AppendFormat("Карта: {0} {1}\n", resultTran.Card.IIN, resultTran.Card.PANMasked.Replace("*", " **** "));

                    if (resultTran.EMVData != null)
                    {
                        foreach (String key in resultTran.EMVData.Keys)
                        {
                            slipBuilder.AppendFormat("{0}: {1}\n", key, resultTran.EMVData[key]);
                        }
                    }

                    slipBuilder.AppendFormat("Имя: {0}\n", resultTran.CardholderName);
                    slipBuilder.AppendFormat("Операция: {0}\n", resultTran.Operation);

                    slipBuilder.AppendFormat("Итого: {0} р\n", resultTran.Amount);
                    slipBuilder.Append("Комиссия: 0.00 р\n");
                    slipBuilder.Append("Статус: Успешно\n");

                    if (resultTran.SignatureRequired)
                    {
                        slipBuilder.Append("Подпись клиента____________________\n");
                    }
                    else
                    {
                        if (resultTran.InputType == Ibox.Pro.SDK.External.Entry.InputType.Chip || resultTran.InputType == Ibox.Pro.SDK.External.Entry.InputType.NFC)
                        {
                            slipBuilder.Append("Подтверждено вводом PIN\n");
                        }
                    }

                    log(slipBuilder.ToString());
                }
                else if (result.AttachedCard != null)
                {
                    log("ATTACH FINISHED :" + Environment.NewLine + JsonConvert.SerializeObject(result, Formatting.Indented));
                    getLinkedCards();
                }
                else
                {
                    log("PAYMENT FINISHED");
                }

                log(DIVIDER);
            }
            catch (Exception ex)
            {
            }
        }
Ejemplo n.º 5
0
        private ActionResult ProcessingResult_PayPal(ProcessingResultModel model)
        {
            if (model == null)
            {
                throw new System.ArgumentNullException("model");
            }
            PaymentResultContext context = new PaymentResultContext();

            context.Order = model.order;
            if (model.success == true)
            {
                if (model.token == null)
                {
                    throw new System.ArgumentNullException("token");
                }
                if (model.payerID == null)
                {
                    throw new System.ArgumentNullException("payerID");
                }
                GetExpressCheckoutDetailsRequestType request = new GetExpressCheckoutDetailsRequestType();
                request.Version = "104.0";
                request.Token   = model.token;
                GetExpressCheckoutDetailsReq wrapper = new GetExpressCheckoutDetailsReq();
                wrapper.GetExpressCheckoutDetailsRequest = request;
                System.Collections.Generic.Dictionary <string, string> config = PaymentController.PayPal_CreateConfig();
                PayPalAPIInterfaceServiceService      service    = new PayPalAPIInterfaceServiceService(config);
                GetExpressCheckoutDetailsResponseType ecResponse = service.GetExpressCheckoutDetails(wrapper);
                if (ecResponse == null)
                {
                    throw new System.Exception("checkout details result is null");
                }
                if (ecResponse.Errors != null && ecResponse.Errors.Count > 0)
                {
                    ecResponse.Errors.ForEach(delegate(ErrorType m)
                    {
                        context.Errors.Add(m.LongMessage);
                    });
                }
                if (ecResponse.Ack == AckCodeType.SUCCESS || ecResponse.Ack == AckCodeType.SUCCESSWITHWARNING)
                {
                    GetExpressCheckoutDetailsResponseDetailsType details = ecResponse.GetExpressCheckoutDetailsResponseDetails;
                    if (details == null)
                    {
                        throw new System.Exception("details object is null");
                    }
                    if (string.IsNullOrEmpty(details.InvoiceID))
                    {
                        throw new System.Exception("invoiceID not found");
                    }
                    if (details.PaymentDetails == null)
                    {
                        throw new System.Exception("payment details is null");
                    }
                    System.Collections.Generic.List <PaymentDetailsType> paymentDetails = new System.Collections.Generic.List <PaymentDetailsType>();
                    foreach (PaymentDetailsType payment in details.PaymentDetails)
                    {
                        paymentDetails.Add(new PaymentDetailsType
                        {
                            NotifyURL     = null,
                            PaymentAction = payment.PaymentAction,
                            OrderTotal    = payment.OrderTotal
                        });
                    }
                    DoExpressCheckoutPaymentRequestType paymentRequest = new DoExpressCheckoutPaymentRequestType();
                    paymentRequest.Version = "104.0";
                    paymentRequest.DoExpressCheckoutPaymentRequestDetails = new DoExpressCheckoutPaymentRequestDetailsType
                    {
                        PaymentDetails = paymentDetails,
                        Token          = model.token,
                        PayerID        = model.payerID
                    };
                    DoExpressCheckoutPaymentResponseType doECResponse = service.DoExpressCheckoutPayment(new DoExpressCheckoutPaymentReq
                    {
                        DoExpressCheckoutPaymentRequest = paymentRequest
                    });
                    if (doECResponse == null)
                    {
                        throw new System.Exception("payment result is null");
                    }
                    if (doECResponse.Errors != null && doECResponse.Errors.Count > 0)
                    {
                        doECResponse.Errors.ForEach(delegate(ErrorType m)
                        {
                            context.Errors.Add(m.LongMessage);
                        });
                    }
                    if (doECResponse.Ack == AckCodeType.SUCCESS || doECResponse.Ack == AckCodeType.SUCCESSWITHWARNING)
                    {
                        ConfirmInvoiceResult invoiceResult = BookingProvider.ConfirmInvoice(details.InvoiceID.Trim());
                        Tracing.DataTrace.TraceEvent(TraceEventType.Information, 0, "PAYPAL transaction: invoice: '{0}', invoice confirmation: '{1}'", new object[]
                        {
                            details.InvoiceID,
                            invoiceResult.IsSuccess ? "SUCCESS" : "FAILED"
                        });
                        if (!invoiceResult.IsSuccess)
                        {
                            context.Errors.Add(string.Format("invoice confirmation error: {0}", invoiceResult.ErrorMessage));
                        }
                        else
                        {
                            context.Success = true;

                            BookingProvider.AcceptInvoice(Convert.ToInt32(context.Order));
                        }
                    }
                }
            }
            else
            {
                context.Errors.Add(PaymentStrings.PaymentCancelled);
            }
            return(base.View("_ProcessingResult", context));
        }