Exemple #1
0
        public IMerchantPayment FindPayment(string purse, long number,
                                            Contracts.BasicTypes.PaymentNumberKind numberKind)
        {
            if (null == purse)
            {
                throw new ArgumentNullException(nameof(purse));
            }

            var request = new MerchantOperationObtainer(Purse.Parse(purse), number,
                                                        ConvertFrom.ContractTypeToApiType(numberKind))
            {
                Initializer = CreateInitializer(purse)
            };

            MerchantOperation response;

            try
            {
                response = request.Submit();
            }
            catch (WmException exception)
            {
                throw new ExternalServiceException(exception.Message, exception);
            }

            var merchantPayment = new MerchantPayment(response.TransferId, response.InvoiceId,
                                                      response.Amount, response.CreateTime.ToUniversalTime(), response.Description, response.SourceWmId,
                                                      response.SourcePurse.ToString())
            {
                IsCapitaller  = response.CapitallerFlag,
                IsEnum        = response.EnumFlag,
                IPAddress     = response.IpAddress,
                TelepatPhone  = response.TelepatPhone,
                PaymerNumber  = response.PaymerNumber,
                PaymerEmail   = response.PaymerEmail,
                CashierNumber = response.CashierNumber,
                CashierDate   = response.CashierDate?.ToUniversalTime(),
                CashierAmount = response.CashierAmount,
            };


            if (null != response.TelepatMethod)
            {
                merchantPayment.TelepatMethod = ConvertFrom.ApiTypeToContractType(response.TelepatMethod.Value);
            }

            if (XmlInterfaces.BasicObjects.PaymerType.None != response.PaymerType)
            {
                merchantPayment.PaymerType = ConvertFrom.ApiTypeToContractType(response.PaymerType);
            }

            // TODO [L] Расшифровать тип e-invoicing платежа.
            if (null != response.SdpType)
            {
                merchantPayment.InvoicingMethod = (byte)response.SdpType.Value;
            }

            return(merchantPayment);
        }
Exemple #2
0
        public Task Update(Guid id, MerchantPayment payment)
        {
            var paymentItem = _dbContext.Payments.Find(id);

            paymentItem.Status = payment.Status;

            return(_dbContext.SaveChangesAsync());
        }
Exemple #3
0
        public void PublishPaymentSubmitted(MerchantPayment payment)
        {
            var json = JsonConvert.SerializeObject(payment);

            var bytes = Encoding.UTF8.GetBytes(json);

            _channel.BasicPublish(exchange: "", "payment_submitted", true, _channel.CreateBasicProperties(), bytes);
        }
        public async Task <ActionResult> DeleteConfirmed(int id)
        {
            MerchantPayment merchantPayment = await _db.MerchantPayments.FindAsync(id);

            _db.MerchantPayments.Remove(merchantPayment);
            await _db.SaveChangesAsync();

            return(RedirectToAction("Index"));
        }
        public async Task <ActionResult> Edit([Bind(Include = "MerchantPaymentId,MerchantId,AmountPayed,ExpectedAmount,PaymentDateTime,IsPayed,Status")] MerchantPayment merchantPayment)
        {
            if (ModelState.IsValid)
            {
                _db.Entry(merchantPayment).State = EntityState.Modified;
                await _db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }
            ViewBag.MerchantId = new SelectList(_db.Merchants, "MerchantId", "CompanyName", merchantPayment.MerchantId);
            return(View(merchantPayment));
        }
        // GET: MerchantPayments/Details/5
        public async Task <ActionResult> Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            MerchantPayment merchantPayment = await _db.MerchantPayments.FindAsync(id);

            if (merchantPayment == null)
            {
                return(HttpNotFound());
            }
            return(View(merchantPayment));
        }
Exemple #7
0
        public async Task <BankResponse> InitiatePaymentWithCardDetails(MerchantPayment payment)
        {
            var json = JsonConvert.SerializeObject(payment);

            var url      = "http://fakebank:8080/payment-initiation"; //ToDo - add to config
            var content  = new StringContent(json, Encoding.UTF8, "application/json");
            var response = await Client.PostAsync(url, content);

            var responseString = await response.Content.ReadAsStringAsync();

            var responseJson = JsonConvert.DeserializeObject <BankResponse>(responseString);

            return(responseJson);
        }
        // GET: MerchantPayments/Edit/5
        public async Task <ActionResult> Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            MerchantPayment merchantPayment = await _db.MerchantPayments.FindAsync(id);

            if (merchantPayment == null)
            {
                return(HttpNotFound());
            }
            ViewBag.MerchantId = new SelectList(_db.Merchants, "MerchantId", "CompanyName", merchantPayment.MerchantId);
            return(View(merchantPayment));
        }
        public ActionResult ValidateCommand(string pack, string quantity, string coin, string cointotal, string totalPrice)
        {
            if (User.IsInRole("Merchant"))
            {
                bool        useSandbox = Convert.ToBoolean(ConfigurationManager.AppSettings["IsSandbox"]);
                PayPalModel paypal     = new PayPalModel(useSandbox);

                paypal.item_name = "CoinPack " + pack;
                paypal.coin      = coin;
                paypal.cointotal = cointotal;
                paypal.price     = pack;
                paypal.quantity  = quantity;
                paypal.amount    = totalPrice;

                string user_id = User.Identity.GetUserId();
                paypal.merchant = db.Merchants.Include(a => a.AspNetUser).Where(a => a.UserID == user_id).FirstOrDefault();

                //lưu data
                MerchantPayment mp = new MerchantPayment();
                mp.MerchantID   = paypal.merchant.MerchantID;
                mp.QuantityPack = Convert.ToInt32(quantity);
                mp.PriceTotal   = Convert.ToDecimal(totalPrice);
                mp.Created      = DateTime.Now;
                mp.StartusID    = 0;//0: chưa thanh toán
                mp.CoinPackID   = db.CoinPacks.Where(a => a.Coin.ToString() == coin).Select(a => a.CoinPackID).FirstOrDefault();
                db.MerchantPayments.Add(mp);
                db.SaveChanges();


                //lưu vào activitymerchant
                ActivityMerchant am = new ActivityMerchant();
                am.MerchantID   = mp.MerchantID;
                am.Object       = "Order" + mp.PaymentID;
                am.Description  = "Tạo đơn hàng mua Coin";
                am.ActivityDate = mp.Created;
                db.ActivityMerchants.Add(am);

                paypal.paymentID = mp.PaymentID.ToString();
                paypal.date      = mp.Created.ToString();
                db.SaveChanges();

                return(View(paypal));
            }
            else
            {
                return(RedirectToAction("Shop", "Home", new { area = "" }));
            }
        }
Exemple #10
0
        public async Task <MerchantPaymentResponse> Post(MerchantPayment request)
        {
            Log.Info(nameof(MerchantPayment));
            Log.Info(request?.ToJson());
            request.Decrypt();
            if (!Constants.AVAILABLE_PAN_NUMBERS.Contains(request?.EncMerchantPAN))
            {
                throw new PANNotExistException();
            }

            var response = await request.GetResponse <MerchantPaymentResponse>
                               (Constants.PROCESS_REQUEST_URL.PROCESS_POST_MERCHANT_PAYMENT);

            Log.Info(nameof(MerchantPaymentResponse));
            Log.Info(response?.ToJson());

            return(response);
        }
        // GET: MerchantPayments/ConfrimPayment
        public async Task <ActionResult> ConfrimPayment(string reference)
        {
            var testOrLiveSecret = ConfigurationManager.AppSettings["PayStackSecret"];
            var api = new PayStackApi(testOrLiveSecret);
            //Verifying a transaction
            var verifyResponse = api.Transactions.Verify(reference); // auto or supplied when initializing;

            if (verifyResponse.Status)
            {
                var convertedValues = new List <SelectableEnumItem>();
                var valuepair       = verifyResponse.Data.Metadata.Where(x => x.Key.Contains("custom")).Select(s => s.Value);

                foreach (var item in valuepair)
                {
                    convertedValues = ((JArray)item).Select(x => new SelectableEnumItem
                    {
                        key   = (string)x["display_name"],
                        value = (string)x["value"]
                    }).ToList();
                }
                var merchantId      = User.Identity.GetUserId();
                var merchantPayment = new MerchantPayment
                {
                    MerchantId      = convertedValues.Where(x => x.key.Equals("merchantid")).Select(s => s.value).FirstOrDefault(),
                    PaymentDateTime = DateTime.Now,
                    ExpectedAmount  = Convert.ToDecimal(convertedValues.Where(x => x.key.Equals("amount")).Select(s => s.value).FirstOrDefault()),
                    IsPayed         = true,
                    //StudentId = "HAS-201",
                    AmountPayed = _query.ConvertToNaira(verifyResponse.Data.Amount),
                };
                _db.MerchantPayments.Add(merchantPayment);
                var editMerchant = await _db.Merchants.Where(x => x.MerchantId.Equals(merchantId)).FirstOrDefaultAsync();

                editMerchant.ExpiryDate       = DateTime.Now.AddDays(365);
                editMerchant.Haspayed         = true;
                _db.Entry(editMerchant).State = EntityState.Modified;


                await _db.SaveChangesAsync();
            }

            return(RedirectToAction("Index"));
        }
        public void ReturnMaskedCardNumberToMerchant()
        {
            //Arrange
            var paymentRepo      = new Mock <IPaymentRepository>();
            var profile          = new MerchantPaymentProfile();
            var mapperConfig     = new MapperConfiguration(x => x.AddProfile(profile));
            var paymentPublisher = new Mock <IPaymentPublisher>();

            var mapper = new Mapper(mapperConfig);
            var id     = Guid.NewGuid();

            var payment = new MerchantPayment()
            {
                Id            = id,
                Amount        = 9.99,
                Currency      = "USD",
                MerchantId    = "1",
                PaymentMethod = new PaymentMethod
                {
                    Cvv             = "123",
                    ExpirationMonth = "05",
                    ExpirationYear  = "2021",
                    Number          = "4319487612345678",
                    PaymentMethodId = new Guid(),
                    Type            = "Visa"
                },
                Status = Status.Submitted
            };

            //Act
            paymentRepo.Setup(x => x.GetById(id)).Returns(Task.FromResult(payment));
            var controller = new PaymentController(paymentRepo.Object, mapper, paymentPublisher.Object);

            var result = controller.GetPayment(id);
            var value  = ((OkObjectResult)result.Result).Value as MerchantPaymentResponse;

            //Assert
            Assert.That(value.Number, Is.EqualTo("XXXXXXXXXXXX5678"));
        }
Exemple #13
0
 public Task Add(MerchantPayment payment)
 {
     _dbContext.Payments.Add(payment);
     return(_dbContext.SaveChangesAsync());
 }
Exemple #14
0
 public async Task <BankResponse> SubmitPaymentToBank(MerchantPayment payment)
 {
     return(await _initiatePayment.InitiatePaymentWithCardDetails(payment));
 }