コード例 #1
0
ファイル: HelcimPaymentService.cs プロジェクト: tczhd/SMLYS
        public PaymentResultModel ProcessRefund(BasicRequestModel requestModel)
        {
            var result = new PaymentResultModel
            {
                Message = "Process refund failed. "
            };

            var paymentData = (HelcimBasicRequestModel)requestModel;

            var values = GetBasicData(paymentData);

            values["transactionType"] = "refund";
            values["terminalId"]      = paymentData.TerminalId;
            values["test"]            = paymentData.Test ? "1" : "0";
            values["amount"]          = paymentData.Amount.ToString("0.00");

            if (paymentData.CreditCard != null)
            {
                var creditCard = (HelcimCreditCardRequestModel)paymentData.CreditCard;
                values["cardHolderName"] = creditCard.CardHolderName;
                values["cardNumber"]     = creditCard.cardNumber;
                values["cardExpiry"]     = creditCard.cardExpiry;
                values["cardCVV"]        = creditCard.cardCVV;

                var data = BasicRequest(values);
                if (data != null)
                {
                    result.Success = true;
                    result.Message = "Process refund success. ";
                    result.Data    = data;
                }
            }

            return(result);
        }
コード例 #2
0
ファイル: HelcimPaymentService.cs プロジェクト: tczhd/SMLYS
        public PaymentResultModel ProcessVoid(BasicRequestModel requestModel)
        {
            var result = new PaymentResultModel();

            var paymentData = (HelcimBasicRequestModel)requestModel;

            var values = GetBasicData(paymentData);

            values["transactionType"] = "void";

            values["transactionId"] = paymentData.TransactionId;

            var data = BasicRequest(values);

            if (data != null)
            {
                result.Success = true;
                result.Message = "Process void success. ";
                result.Data    = data;
            }
            else
            {
                result.Message = "Process void failed. ";
            }

            return(result);
        }
コード例 #3
0
        public IActionResult Result(PaymentResultModel paymentReceiver)
        {
            if (!TryValidateModel(paymentReceiver))
            {
                return(BadRequest("ошибка ответа от платежной системы"));
            }

            ViewBag.Result = paymentReceiver.GetResultVerification();
            return(View("Result"));
        }
コード例 #4
0
        public IActionResult Paid()
        {
            Square.Environment environment = this.appSettings.Environment == "sandbox" ?
                                             Square.Environment.Sandbox : Square.Environment.Production;

            // Build base client
            SquareClient client = new SquareClient.Builder()
                                  .Environment(environment)
                                  .AccessToken(this.appSettings.AccessToken)
                                  .Build();


            string       nonce       = Request.Form["nonce"];
            IPaymentsApi PaymentsApi = client.PaymentsApi;
            // Every payment you process with the SDK must have a unique idempotency key.
            // If you're unsure whether a particular payment succeeded, you can reattempt
            // it with the same idempotency key without worrying about double charging
            // the buyer.
            string uuid = this.NewIdempotencyKey();

            // Monetary amounts are specified in the smallest unit of the applicable currency.
            // This amount is in cents. It's also hard-coded for $1.00,
            // which isn't very useful.
            Money amount = new Money.Builder()
                           .Amount(500L)
                           .Currency("USD")
                           .Build();

            // To learn more about splitting payments with additional recipients,
            // see the Payments API documentation on our [developer site]
            // (https://developer.squareup.com/docs/payments-api/overview).
            CreatePaymentRequest createPaymentRequest = new CreatePaymentRequest.Builder(nonce, uuid, amount)
                                                        .Note("From Square Visit Cart App")
                                                        .Build();

            try
            {
                CreatePaymentResponse response = PaymentsApi.CreatePayment(createPaymentRequest);
                PaymentResultModel    model    = new PaymentResultModel
                {
                    ResultMessage = "Payment complete! " + response.Payment.Note
                };

                return(View(model));
            }
            catch (ApiException ex)
            {
                return(View("PaymentError", new ErrorViewModel {
                    Message = ex.Message
                }));
            }
        }
コード例 #5
0
        public PaymentResultModel ProcessPayment(BasicRequestModel requestModel)
        {
            var result = new PaymentResultModel();

            var paymentData = (StripeBasicRequestModel)requestModel;
            var tokenId     = paymentData.TokenId;

            if (string.IsNullOrWhiteSpace(tokenId))
            {
                var card = new CreditCardOptions
                {
                    Number   = paymentData.CreditCard.cardNumber,
                    ExpYear  = paymentData.CreditCard.ExpiryYear,
                    ExpMonth = paymentData.CreditCard.ExpiryMonth,
                    Cvc      = paymentData.CreditCard.cardCVV
                };

                tokenId = GetTokenId(null, card).Result;
            }

            var options = new RequestOptions
            {
                ApiKey = Keys.PrivateKey
            };

            var myCharge = new ChargeCreateOptions
            {
                Amount      = (long)(paymentData.Amount * 100),
                Currency    = paymentData.Currency.ToString().ToLower(),
                Description = paymentData.Description,
                Source      = tokenId
            };

            var chargeService = new ChargeService();
            var stripeCharge  = chargeService.Create(myCharge, options);

            result = new PaymentResultModel
            {
                Success        = true,
                Message        = "Payment success. ",
                Approved       = stripeCharge.Status == "succeeded",
                AuthCode       = stripeCharge.AuthorizationCode,
                CardToken      = tokenId,
                FailureCode    = stripeCharge.FailureCode,
                FailureMessage = stripeCharge.FailureMessage,
                TransactionId  = stripeCharge.Id,
                Data           = stripeCharge
            };

            return(result);
        }
コード例 #6
0
ファイル: HelcimPaymentService.cs プロジェクト: tczhd/SMLYS
        public PaymentResultModel ProcessPayment(BasicRequestModel requestModel)
        {
            PaymentResultModel result = new PaymentResultModel();

            var paymentData = (HelcimBasicRequestModel)requestModel;

            var values = GetBasicData(paymentData);

            values["transactionType"] = "purchase";
            values["terminalId"]      = paymentData.TerminalId;
            values["test"]            = paymentData.Test ? "1" : "0";
            values["amount"]          = paymentData.Amount.ToString("0.00");

            if (paymentData.CreditCard != null)
            {
                var creditCard = (HelcimCreditCardRequestModel)paymentData.CreditCard;
                values["cardHolderName"]       = creditCard.CardHolderName;
                values["cardNumber"]           = creditCard.cardNumber;
                values["cardExpiry"]           = creditCard.cardExpiry;
                values["cardCVV"]              = creditCard.cardCVV;
                values["cardHolderAddress"]    = creditCard.cardHolderAddress;
                values["cardHolderPostalCode"] = creditCard.cardHolderPostalCode;
            }
            else
            {
                values["cardToken"] = paymentData.CardToken;
                values["cardF4L4"]  = paymentData.CardF4L4;
                values["comments"]  = paymentData.Comments;
            }


            var data = BasicRequest(values);

            if (data != null)
            {
                result.Success = true;
                result.Message = "Process success. ";
                result.Data    = data;
            }
            else
            {
                result.Message = "Process failed ";
            }

            return(result);
        }
コード例 #7
0
        public async Task <IActionResult> GetResult(string billcode, string cust_msisdn, string error_code, string merchant_code, string order_id, string payment_status, string trans_amount, string vt_transaction_id, string check_sum)
        {
            var paymentResult = new PaymentResultModel()
            {
                error_code        = "00",
                merchant_code     = merchant_code,
                order_id          = order_id,
                return_url        = Url.Action(action: nameof(AccountController.MyWallet), controller: "Account", values: null, protocol: Request.Scheme),
                return_bill_code  = billcode,
                return_other_info = "",
                check_sum         = Helpers.CreateCheckSum(_configuration.GetValue <string>("PaymentSecurity:AccessCode"), _configuration.GetValue <string>("PaymentSecurity:SecretKey"),
                                                           "00", merchant_code, order_id)
            };

            var logger = NLog.Web.NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();

            logger.Info("Investment with ViettelPay: billcode = " + billcode + ", cust_msisdn = " + cust_msisdn + ", error_code = " + error_code + ", merchant_code = " + merchant_code + ", order_id = " + order_id + ", payment_status = " + payment_status + ", trans_amount = " + trans_amount + ", vt_transaction_id = " + vt_transaction_id + ", check_sum = " + check_sum);

            var orderId = 0;
            var config  = await _globalConfigurationService.GetValueConfig(Constants.Configuration.ProgramLocked);

            if (string.IsNullOrWhiteSpace(error_code) || string.IsNullOrWhiteSpace(cust_msisdn) || string.IsNullOrWhiteSpace(merchant_code) || string.IsNullOrWhiteSpace(order_id) || !Int32.TryParse(order_id, out orderId) || string.IsNullOrWhiteSpace(payment_status) || string.IsNullOrWhiteSpace(check_sum) || config.Contains("true"))
            {
                logger.Error("Investment with ViettelPay: Param Invalid");

                paymentResult.error_code = "01";
                paymentResult.check_sum  = Helpers.CreateCheckSum(_configuration.GetValue <string>("PaymentSecurity:AccessCode"), _configuration.GetValue <string>("PaymentSecurity:SecretKey"),
                                                                  "01", merchant_code, order_id);

                return(Json(paymentResult));
            }

            var phone       = cust_msisdn;
            var userName    = "******" + phone.Remove(0, 2);
            var currentUser = await _userService.GetUserByName(userName);

            if (currentUser == null || currentUser.KVRR == null)
            {
                logger.Error("Investment with ViettelPay: Error: User Not Found: " + userName);

                paymentResult.error_code = "01";
                paymentResult.check_sum  = Helpers.CreateCheckSum(_configuration.GetValue <string>("PaymentSecurity:AccessCode"), _configuration.GetValue <string>("PaymentSecurity:SecretKey"),
                                                                  "01", merchant_code, order_id);

                return(Json(paymentResult));
            }

            if (error_code == "00" && (Int32.Parse(payment_status) == 0 || Int32.Parse(payment_status) == 1 || Int32.Parse(payment_status) == 3))
            {
                var order = await _orderService.GetOrder(orderId);

                if (order == null || order.IsSuccess)
                {
                    logger.Error("Investment with ViettelPay: Error: Order Not Found ");
                    paymentResult.error_code = "01";
                    paymentResult.check_sum  = Helpers.CreateCheckSum(_configuration.GetValue <string>("PaymentSecurity:AccessCode"), _configuration.GetValue <string>("PaymentSecurity:SecretKey"),
                                                                      "01", merchant_code, order_id);
                    return(Json(paymentResult));
                }

                var checkSum = Helpers.CreateCheckSum(_configuration.GetValue <string>("PaymentSecurity:AccessCode"), _configuration.GetValue <string>("PaymentSecurity:SecretKey"),
                                                      order.Id.ToString(), cust_msisdn, error_code, order.MerchantCode, order.Id.ToString(), payment_status, order.TransAmount, vt_transaction_id);
                if (check_sum.Replace(" ", "+").Replace("=", "%3D").Replace("+", "%2B") != checkSum)
                {
                    order.IsSuccess = true;
                    await _orderService.UpdateOrder(order);

                    logger.Error("Investment with ViettelPay: Error: check_sum invalid");

                    paymentResult.error_code = "01";
                    paymentResult.check_sum  = Helpers.CreateCheckSum(_configuration.GetValue <string>("PaymentSecurity:AccessCode"), _configuration.GetValue <string>("PaymentSecurity:SecretKey"),
                                                                      "01", merchant_code, order_id);
                    return(Json(paymentResult));
                }

                await _fundTransactionHistoryService.Investment(decimal.Parse(order.TransAmount), currentUser.UserName, order_id);

                if (order.IsInvestmentTarget)
                {
                    var investmentTarget = await _investmentTargetService.GetInvestmentTarget(currentUser.Id);

                    investmentTarget.Status = Common.EditStatus.Success;
                    await _investmentTargetService.UpdateInvestmentTarget(investmentTarget);

                    //if(investmentTarget.InvestmentMethod == Common.InvestmentMethod.Manually)
                    //{
                    //    var smsConfig = SetSMSConfig(currentUser.UserName, _configuration.GetValue<string>("SMSMessage:InvestmentTarget"));
                    //    if (investmentTarget.Frequency == Common.Frequency.OneMonth)
                    //    {
                    //        RecurringJob.AddOrUpdate<InvestmentTargetService>("InvestmentTargetSend" + currentUser.UserName, s => s.AutoSendSMSRemind(currentUser.UserName, smsConfig), Cron.Monthly(DateTime.Now.Day));
                    //    }
                    //    else if (investmentTarget.Frequency == Common.Frequency.OneWeek)
                    //    {
                    //        RecurringJob.AddOrUpdate<InvestmentTargetService>("InvestmentTargetSend" + currentUser.UserName, s => s.AutoSendSMSRemind(currentUser.UserName, smsConfig), Cron.Weekly(DateTime.Now.DayOfWeek));
                    //    }
                    //    else if (investmentTarget.Frequency == Common.Frequency.TwoWeek)
                    //    {
                    //        RecurringJob.AddOrUpdate<InvestmentTargetService>("InvestmentTargetSend" + currentUser.UserName, s => s.AutoSendSMSRemind(currentUser.UserName, smsConfig), Cron.DayInterval(14));
                    //    }
                    //}
                    //else
                    //{
                    //
                    //}
                }

                order.IsSuccess = true;
                await _orderService.UpdateOrder(order);

                return(Json(paymentResult));
            }
            else
            {
                logger.Error("Investment with ViettelPay: Error Code: " + error_code);

                paymentResult.error_code = "01";
                paymentResult.check_sum  = Helpers.CreateCheckSum(_configuration.GetValue <string>("PaymentSecurity:AccessCode"), _configuration.GetValue <string>("PaymentSecurity:SecretKey"),
                                                                  "01", merchant_code, order_id);
                return(Json(paymentResult));
            }
        }
コード例 #8
0
ファイル: PaymentService.cs プロジェクト: tczhd/DoraApf
        public PaymentResultModel DoPayment(PaymentModel paymentModel)
        {
            var result = new PaymentResultModel();

            try
            {
                var createDate = DateTime.UtcNow;

                var billingInfo = new BillingInfo()
                {
                    FirstName  = paymentModel.FirstName,
                    Email      = paymentModel.Email,
                    CreatedOn  = createDate,
                    Country    = paymentModel.Country,
                    Active     = false,
                    Address1   = paymentModel.Address1,
                    Address2   = paymentModel.Address2,
                    City       = paymentModel.City,
                    LastName   = paymentModel.LastName,
                    Phone      = paymentModel.Phone,
                    PostalCode = paymentModel.PostalCode,
                    State      = paymentModel.State,
                    Title      = paymentModel.Title,
                    Payment    = new List <Payment> {
                    }
                };

                var payment = new Payment
                {
                    Active         = false,
                    TransactionId  = string.Empty,
                    AuthCode       = string.Empty,
                    AmountPaid     = decimal.Parse(paymentModel.PaymentAmount),
                    CardHolderName = paymentModel.CardHolderName,
                    CardF4L4       = paymentModel.CardNumber.Substring(0, 4) + paymentModel.CardNumber.Substring(paymentModel.CardNumber.Length - 4, 4),
                    CurrencyId     = (int)Currency.CAD,
                    PaymentDate    = createDate,
                    PaymentType    = (int)PaymentType.Purchase
                };

                billingInfo.Payment.Add(payment);

                var data = _billingRepository.Add(billingInfo);

                var request = new HelcimBasicRequestModel()
                {
                    OrderNumber = "Dora-" + DateTime.Now.ToString("yyyyMMddhhmmss"),
                    Amount      = decimal.Parse(paymentModel.PaymentAmount),
                    CreditCard  = new HelcimCreditCardRequestModel()
                    {
                        CardHolderName       = paymentModel.CardHolderName,
                        CardNumber           = paymentModel.CardNumber,
                        CardExpiry           = paymentModel.CardExpiry,
                        CardCVV              = paymentModel.CardCVV,
                        CardHolderAddress    = paymentModel.Address1,
                        CardHolderPostalCode = paymentModel.PostalCode
                    }
                };

                result = (PaymentResultModel)_helcimPaymentService.ProcessPayment(request);

                if (result.Success && result.Approved)
                {
                    billingInfo.Active    = true;
                    payment.Active        = true;
                    payment.TransactionId = result.TransactionId;
                    payment.AuthCode      = result.AuthCode;

                    _billingRepository.Update(billingInfo);

                    result.PaymentId = payment.Id;
                }
            }
            catch (Exception ex)
            {
                result.Success = false;
                result.Message = ex.Message;
            }

            return(result);
        }
コード例 #9
0
        public PaymentResultModel ApplyPayment(PaymentDataModel requestMdoel)
        {
            var result = new PaymentResultModel();

            var userContext = _userHandler.GetUserContext();
            var invoiceDetailSpecification = new InvoiceSpecification(_clinicId);

            invoiceDetailSpecification.AddInvoiceId(requestMdoel.InvoiceId);
            var invoice = _invoiceRepository.GetSingleBySpec(invoiceDetailSpecification);

            if (invoice != null)
            {
                var payementResult = _stripePaymentService.ProcessPayment((StripeBasicRequestModel)requestMdoel);
                result = payementResult;
                var cardLast4 = requestMdoel.CreditCard.GetCardF4L4();
                result.CardLast4 = cardLast4;

                if (payementResult.Success && payementResult.Approved)
                {
                    var payment = new Payment
                    {
                        ClinicId            = _clinicId,
                        Description         = requestMdoel.Note,
                        PaymentDate         = DateTime.UtcNow,
                        PaymentMethodTypeId = (int)PaymentMethodType.Visa,
                        PaymentStatusTypeId = (int)requestMdoel.PaymentStatusType,
                        PaymentTypeId       = (int)requestMdoel.PaymentType,
                        UpdatedBy           = userContext.SiteUserId,
                        UpdatedDateUtc      = DateTime.UtcNow,
                        Amount            = requestMdoel.PaymentAmount,
                        TransactionId     = payementResult.TransactionId,
                        AuthorizationCode = payementResult.AuthCode,
                        CardToken         = payementResult.CardToken,
                        CardF4L4          = cardLast4
                    };

                    var invoicePayment = new InvoicePayment
                    {
                        AmountPaid = requestMdoel.PaymentAmount,
                        InvoiceId  = requestMdoel.InvoiceId,
                        Payment    = payment,
                        Note       = requestMdoel.Note
                    };

                    _invoicePaymentRepository.AddOnly(invoicePayment);

                    var patientCardOnFile = new PatientCardOnFile {
                        Active         = true,
                        CardF4L4       = requestMdoel.CreditCard.GetCardF4L4(),
                        CardToken      = payementResult.CardToken,
                        UpdatedDateUtc = DateTime.UtcNow,
                        PatientId      = invoice.PatientId,
                        UpdatedBy      = userContext.SiteUserId
                    };

                    _patientCardOnFileRepository.AddOnly(patientCardOnFile);

                    invoice.AmountPaid += requestMdoel.PaymentAmount;

                    _invoicePaymentRepository.SaveAll();

                    result.AmountPaidTotal = invoice.AmountPaid;
                }
                else
                {
                    result.Message = "Process payment failed. ";
                }
            }
            else
            {
                result.Message = "Invalid invoice Id, Please choose right one and try again. ";
            }

            return(result);
        }