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); }
public Task Update(Guid id, MerchantPayment payment) { var paymentItem = _dbContext.Payments.Find(id); paymentItem.Status = payment.Status; return(_dbContext.SaveChangesAsync()); }
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)); }
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 = "" })); } }
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")); }
public Task Add(MerchantPayment payment) { _dbContext.Payments.Add(payment); return(_dbContext.SaveChangesAsync()); }
public async Task <BankResponse> SubmitPaymentToBank(MerchantPayment payment) { return(await _initiatePayment.InitiatePaymentWithCardDetails(payment)); }