/// <summary> /// Add payment method to customer /// </summary> /// <param name="siteUserGuid">Siteuserguid</param> /// <param name="cardtoken">cardtoken from reepay</param> /// <returns>statuscode and carddata</returns> public ApiResponse <Card> AddPaymentMethodToCustomer(int siteUserGuid, string cardtoken) { var myClassname = MethodBase.GetCurrentMethod().Name; var config = this.GetDefaultApiConfiguration(); var api = new CustomerApi(config); for (var i = 0; i <= MaxNoOfRetries; i++) { try { var body = new CardToken(cardtoken); var res = api.AddCardJsonWithHttpInfo(siteUserGuid.ToString(), body); if (res.StatusCode != (int)HttpStatusCode.OK) { this._log.Error($"Unexpected answer from reepay. {myClassname} Errorcode {res.StatusCode}"); } return(res); } catch (ApiException apiException) { this._log.Error($"{myClassname} {apiException.ErrorCode} {apiException.ErrorContent}"); return(new ApiResponse <Card>(apiException.ErrorCode, null, null)); } catch (Exception) when(i < MaxNoOfRetries) { this._log.Debug($"{myClassname} retry attempt {i}"); } } return(new ApiResponse <Card>((int)HttpStatusCode.InternalServerError, null, null)); }
public void Get_Success() { CustomerRequest customerRequest = BuildCustomerCreateRequest(); var customerClient = new CustomerClient(); Customer customer = customerClient.Create(customerRequest); Thread.Sleep(1000); try { CustomerCardCreateRequest cardRequest = BuildCardCreateRequest(); CustomerCard card = customerClient.CreateCard(customer.Id, cardRequest); var request = new CardTokenRequest { CustomerId = customer.Id, CardId = card.Id, SecurityCode = "123", }; CardToken createdCartToken = client.Create(request); Thread.Sleep(1000); CardToken cardToken = client.Get(createdCartToken.Id); Assert.NotNull(cardToken); Assert.Equal(createdCartToken.Id, cardToken.Id); } finally { customerClient.Delete(customer.Id); } }
public IActionResult AddCardCustomer([FromBody] CardToken cardData) { if (cardData == null) { _log.Error(nameof(cardData).ToString() + "Cannot be null."); throw new ArgumentNullException(nameof(cardData), "Cannot be null."); } Card cardCreated = null; try { _log.Information("Adding Card to customer."); var openpayAPI = OpenPayHandler.GetOpenPayInstance(); Card request = new Card(); request.TokenId = cardData.token_id; request.DeviceSessionId = cardData.device_session_id; cardCreated = openpayAPI.CardService.Create(cardData.id, request); } catch (Exception ex) { _log.Error("Exception while adding card." + ex.ToString()); return(NotFound()); } return(Ok(cardCreated)); }
public async Task CreateAsync_Success() { CustomerRequest customerRequest = BuildCustomerCreateRequest(); var customerClient = new CustomerClient(); Customer customer = await customerClient.CreateAsync(customerRequest); await Task.Delay(1000); try { CustomerCardCreateRequest cardRequest = await BuildCardCreateRequestAsync(); CustomerCard card = await customerClient.CreateCardAsync(customer.Id, cardRequest); var request = new CardTokenRequest { CustomerId = customer.Id, CardId = card.Id, SecurityCode = "123", }; CardToken cardToken = await client.CreateAsync(request); Assert.NotNull(cardToken); Assert.NotNull(cardToken.Id); } finally { customerClient.Delete(customer.Id); } }
public async Task <CardToken> CreateCardToken(CardTokenContent cardToken) { CardTokenContent content = new CardTokenContent(cardToken.TokenId) { Owner = new Owner { Collection = cardToken.Owner.Collection, Identifier = cardToken.Owner.Identifier }, Address = cardToken.Address, CardType = cardToken.CardType, CustomerId = cardToken.CustomerId, Email = cardToken.Email, ExpirationMonth = cardToken.ExpirationMonth, ExpirationYear = cardToken.ExpirationYear, IsReadonly = cardToken.IsReadonly, LastFourDigits = cardToken.LastFourDigits, NameOnCard = cardToken.NameOnCard, PlatformIdentifier = _platformIdentifier }; CardToken newEntity = new CardToken { Contents = content }; var entity = await _context.CardToken.AddAsync(newEntity); return(entity); }
public async Task <List <Data.IdCard> > ExecuteAsync(int cchId, Employer employer) { if (cchId < 1) { throw new InvalidOperationException("Invalid member context."); } if (employer == null || string.IsNullOrEmpty(employer.ConnectionString)) { throw new InvalidOperationException("Invalid employer context."); } _repository.Initialize(employer.ConnectionString); List <Data.IdCard> result = new List <Data.IdCard>(); switch (employer.Id) { case 34: result = await _repository.GetIdCardsByCchIdAsyncV2(cchId, employer); break; default: result = await _repository.GetIdCardsByCchIdAsync(cchId); break; } var cardBaseAddress = "CardBaseAddress".GetConfigurationValue(); var timeout = "TimeoutInMinutes".GetConfigurationValue(); result.ForEach(r => { System.Diagnostics.Debug.Write(r.DetailText); //This whole section may have to be rethought depending on new data structures. //May require an interface break/ v2 in media as well. var cardToken = new CardToken() { EmployerId = employer.Id, CardDetail = JsonConvert.DeserializeObject <CardDetail>(r.DetailText), Expires = DateTime.UtcNow.AddMinutes(Convert.ToInt16(timeout)) }; cardToken.CardDetail.CardTypeFileName = r.CardType.FileName; cardToken.CardDetail.CardTypeId = r.TypeId; cardToken.CardDetail.CardViewModeId = r.ViewModeId; var jwt = JwtService.EncryptPayload(JsonConvert.SerializeObject(cardToken)); r.Url = string.Format("{0}/?tkn={1}|{2}", cardBaseAddress, employer.Id, jwt); r.SecurityToken = jwt; r.Detail = JsonConvert.DeserializeObject <CardDetail>(r.DetailText); }); return(result); }
private async Task <CustomerCardCreateRequest> BuildCardCreateRequestAsync() { CardToken cardToken = await cardTokenClient.CreateTestCardToken(User, "approved"); return(new CustomerCardCreateRequest { Token = cardToken.Id, }); }
private CustomerCardCreateRequest BuildCardCreateRequest() { CardToken cardToken = cardTokenClient.CreateTestCardToken(User, "approved") .ConfigureAwait(false).GetAwaiter().GetResult(); return(new CustomerCardCreateRequest { Token = cardToken.Id, }); }
private static CardUrlResult BuildResult(Employer employer, List <dynamic> cardResults) { var result = new CardUrlResult(); result.Results = new List <CardResult>(); var cardBaseAddress = "CardBaseAddress".GetConfigurationValue(); cardResults.ForEach(cr => { var cardMemberData = new CardDetail(); try { cardMemberData = JsonConvert.DeserializeObject <CardDetail>(cr.MemberCard.CardMemberDataText); } catch { } var cardToken = new CardToken() { EmployerId = employer.Id, CardDetail = cardMemberData, Expires = DateTime.UtcNow.AddMinutes(Convert.ToInt16("TimeoutInMinutes".GetConfigurationValue())) }; cardToken.CardDetail.CardTypeFileName = cr.CardType.FileName; cardToken.CardDetail.CardTypeId = cr.MemberCard.CardTypeId; cardToken.CardDetail.CardViewModeId = cr.CardViewMode.Id; var jwt = ClearCost.Security.JwtService.EncryptPayload(JsonConvert.SerializeObject(cardToken)); var cardResult = new CardResult() { CardName = cr.CardTypeTranslation.CardTypeName, ViewMode = cr.CardViewMode.Name, CardUrl = string.Format("{0}/?tkn={1}|{2}", cardBaseAddress, employer.Id, jwt), SecurityToken = jwt }; result.Results.Add(cardResult); }); return(result); }
void UnbundleIntent() { judoPaymentRef = Intent.GetStringExtra(JudoSDKManager.JUDO_PAYMENT_REF); judoAmount = decimal.Parse(Intent.GetStringExtra(JudoSDKManager.JUDO_AMOUNT)); judoId = Intent.GetStringExtra(JudoSDKManager.JUDO_ID); judoCurrency = Intent.GetStringExtra(JudoSDKManager.JUDO_CURRENCY); judoCardToken = JsonConvert.DeserializeObject <CardToken> (Intent.GetStringExtra(JudoSDKManager.JUDO_CARD_DETAILS)); judoConsumer = JsonConvert.DeserializeObject <Consumer> (Intent.GetStringExtra(JudoSDKManager.JUDO_CONSUMER)); if (judoCardToken.CardType != null) { cv2EntryView.CurrentCard = judoCardToken.CardType; } if (judoPaymentRef == null) { throw new ArgumentException("JUDO_PAYMENT_REF must be supplied"); } if (judoConsumer == null) { throw new ArgumentException("JUDO_CONSUMER must be supplied"); } if (judoAmount == null) { throw new ArgumentException("JUDO_AMOUNT must be supplied"); } if (judoId == null) { throw new ArgumentException("JUDO_ID must be supplied"); } if (judoCurrency == null) { throw new ArgumentException("JUDO_CURRENCY must be supplied"); } if (judoCardToken == null) { throw new ArgumentException("JUDO_CARD_DETAILS must be supplied"); } }
private async Task <AdvancedPaymentCreateRequest> BuildCreateRequestAsync( bool capture, string paymentStatus) { CardToken cardToken = await cardTokenClient.CreateTestCardToken(User, paymentStatus); return(new AdvancedPaymentCreateRequest { ApplicationId = "59441713004005", Payments = new List <AdvancedPaymentSplitPaymentRequest> { new AdvancedPaymentSplitPaymentRequest { PaymentMethodId = "master", PaymentTypeId = "credit_card", Token = cardToken.Id, DateOfExpiration = DateTime.UtcNow.Add(TimeSpan.FromDays(120)), TransactionAmount = 1000, Installments = 1, ProcessingMode = "aggregator", Description = "Payment", ExternalReference = "Test" + Guid.NewGuid().ToString(), StatementDescriptor = "ADVPAYTEST", }, }, Disbursements = new List <AdvancedPaymentDisbursementRequest> { new AdvancedPaymentDisbursementRequest { Amount = 400, ExternalReference = "Seller1" + Guid.NewGuid().ToString(), CollectorId = 539673000, ApplicationFee = 1, MoneyReleaseDays = 5, }, new AdvancedPaymentDisbursementRequest { Amount = 600, ExternalReference = "Seller2" + Guid.NewGuid().ToString(), CollectorId = 488656838, ApplicationFee = 0.5m, }, }, Payer = new AdvancedPaymentPayerRequest { Email = Environment.GetEnvironmentVariable("USER_EMAIL"), FirstName = "Test", LastName = "User", Address = new AddressRequest { ZipCode = "06233200", StreetName = "Street", StreetNumber = "120", }, Identification = IdentificationHelper.GetIdentification(User), }, ExternalReference = "ADV" + Guid.NewGuid().ToString(), Description = "Test", BinaryMode = false, Capture = capture, AdditionalInfo = new AdvancedPaymentAdditionalInfoRequest { IpAddress = "127.0.0.1", Payer = new AdvancedPaymentAdditionalInfoPayerRequest { FirstName = "Test", LastName = "User", RegistrationDate = DateTime.UtcNow.AddDays(-10), Address = new AddressRequest { ZipCode = "06233200", StreetName = "Street", StreetNumber = "120", }, Phone = new PhoneRequest { AreaCode = "11", Number = "999999999", }, }, Items = new List <AdvancedPaymentItemRequest> { new AdvancedPaymentItemRequest { Id = "123", Title = "Title", PictureUrl = "https://www.mercadopago.com/logomp3.gif", Description = "Description", CategoryId = "Category", Quantity = 1, UnitPrice = 1000, }, }, Shipments = new AdvancedPaymentShipmentsRequest { ReceiverAddress = new AdvancedPaymentReceiverAddressRequest { ZipCode = "06233200", StreetName = "Street", StreetNumber = "120", Floor = "1", Apartment = "A", }, }, }, Metadata = new Dictionary <string, object> { ["key1"] = "value1", }, }); }
private static AdvancedPayment NewAdvancedPayment(bool capture) { var cardToken = new CardToken { CardId = "8940397939", CustomerId = "649457098-FybpOkG6zH8QRm", SecurityCode = "123", }; cardToken.Save(); return(new AdvancedPayment { ApplicationId = "59441713004005", Payments = new List <AdvPayDS.Payment> { new AdvPayDS.Payment { PaymentMethodId = "master", PaymentTypeId = "credit_card", Token = cardToken.Id, DateOfExpiration = DateTime.UtcNow.Add(TimeSpan.FromDays(120)), TransactionAmount = 1000, Installments = 1, ProcessingMode = "aggregator", Description = "Payment", ExternalReference = "Test" + Guid.NewGuid().ToString(), StatementDescriptor = "ADVPAYTEST" }, }, Disbursements = new List <Disbursement> { new Disbursement { Amount = 400, ExternalReference = "Seller1" + Guid.NewGuid().ToString(), CollectorId = 539673000, ApplicationFee = 1, }, new Disbursement { Amount = 600, ExternalReference = "Seller2" + Guid.NewGuid().ToString(), CollectorId = 488656838, ApplicationFee = 0.5m, }, }, Payer = new AdvPayDS.Payer { Id = "649457098-FybpOkG6zH8QRm", Type = "customer", Email = "*****@*****.**", FirstName = "Test", LastName = "User", Address = new AdvPayDS.Address { ZipCode = "06233200", StreetName = "Street", StreetNumber = "120", }, Identification = new AdvPayDS.Identification { Type = "CPF", Number = "19119119100", }, }, ExternalReference = "ADV" + Guid.NewGuid().ToString(), Description = "Test", BinaryMode = false, Capture = capture, AdditionalInfo = new AdvPayDS.AdditionalInfo { IpAddress = "127.0.0.1", Payer = new AdvPayDS.AdditionalInfoPayer { FirstName = "Test", LastName = "User", RegistrationDate = DateTime.UtcNow.AddDays(-10), }, Items = new List <AdvPayDS.Item> { new AdvPayDS.Item { Id = "123", Title = "Title", PictureUrl = "https://www.mercadopago.com/logomp3.gif", Description = "Description", CategoryId = "Category", Quantity = 1, UnitPrice = 1000 }, }, Shipments = new AdvPayDS.Shipments { ReceiverAddress = new AdvPayDS.ReceiverAddress { ZipCode = "06233200", StreetName = "Street", StreetNumber = "120", Floor = "1", Apartment = "A", }, }, }, }); }
public void SetCardDetails(CardToken cardToken) { SetLast4CCNosText(cardToken.CardLastFour); SetCardType(cardToken.CardType); }
private static Payment NewPayment(bool capture) { var cardToken = new CardToken { CardId = "8940397939", CustomerId = "649457098-FybpOkG6zH8QRm", SecurityCode = "123", }; cardToken.Save(); return(new Payment { Payer = new Payer { Email = "*****@*****.**", Entity_type = EntityType.individual, Type = PayerType.customer, Id = "649457098-FybpOkG6zH8QRm", Identification = new Identification { Type = "CPF", Number = "19119119100", }, FirstName = "Test", LastName = "User", }, BinaryMode = false, Capture = capture, ExternalReference = Guid.NewGuid().ToString(), Description = "Payment description", Metadata = new JObject { { "key1", JToken.FromObject("value1") }, { "key2", JToken.FromObject("value2") }, }, TransactionAmount = 10, //PaymentMethodId = "master", Token = cardToken.Id, Installments = 1, StatementDescriptor = "STAT-DESC", NotificationUrl = "https://seu-site.com.br/webhooks", CallbackUrl = "https://seu-site.com.br/callbackurl", AdditionalInfo = new AdditionalInfo { IpAddress = "127.0.0.1", Items = new List <Item> { new Item { Id = "SKU-1", Title = "Product", PictureUrl = "https://www.mercadopago.com/org-img/MLB/design/2015/m_pago/logos/mp_processado_02.png", Description = "Product description", CategoryId = "cat", Quantity = 1, UnitPrice = 10, }, }, Payer = new AdditionalInfoPayer { FirstName = "Test", LastName = "User", RegistrationDate = DateTime.Now.AddDays(-30), Phone = new Phone { AreaCode = "11", Number = "999999999", }, Address = new Address { ZipCode = "0600000", StreetName = "Street", StreetNumber = 123, }, }, Shipments = new Shipment { ReceiverAddress = new ReceiverAddress { Zip_code = "0600000", StreetName = "Street", StreetNumber = 123, Apartment = "23", Floor = "First", }, }, }, }); }
public ServiceResponse <CardToken> Create(CardToken cardToken) { var request = new CreateCardTokenRequest(Merchant, Environment); return(request.Execute(cardToken)); }
private async void Approve_Click(object sender, RoutedEventArgs e) { if (!IsAllFieldsFilled()) { MessageBox.Show(AppResources.Msg_AllFieldsRequired, AppResources.MsgHdr_AllFieldsRequired, MessageBoxButton.OK); return; } gr_busy.Visibility = Visibility.Visible; var card = new Card { Number = CardNumber.Replace(" ", ""), ExpMonth = ExpMonth, ExpYear = ExpYear, Cvc = CVC, Name = NameOnCard }; if (IsAddressRequired) { card.AddressLine1 = BillingAddress; card.AddressZip = ZipCode; card.AddressState = State; } var api = new PaymentsApi(); try { cardToken = await api.CreateCardToken(card, publicKey); } catch (Exception ex) { RaiseEventHandler(false, ex); return; } //TODO: just for testing, remove befor rls MessageBox.Show(await Task.Factory.StartNew(() => JsonConvert.SerializeObject(cardToken)), "response from simplify", MessageBoxButton.OK); var request = new PayNowRequest { TokenId = cardToken.Id, Amount = Amount, ItemName = ItemName }; var baseLength = callbackUrl.LastIndexOf('/') + 1; var baseAddress = callbackUrl.Substring(0, baseLength); var requestUri = callbackUrl.Substring(baseLength); var settings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }; var requestBody = await Task.Factory.StartNew(() => JsonConvert.SerializeObject(request, settings)); try { using (var client = new HttpClient()) { client.Timeout = new TimeSpan(0, 0, TIMEOUT); client.BaseAddress = new Uri(baseAddress); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); client.DefaultRequestHeaders.UserAgent.Clear(); client.DefaultRequestHeaders.UserAgent.ParseAdd("Simplify-PayNowUC-for-WP"); using (var response = await client.PostAsync(requestUri, new StringContent(requestBody, Encoding.UTF8, "application/json"))) { RaiseEventHandler(true, response); } } } catch (TaskCanceledException) { RaiseEventHandler(false, new TimeoutException()); } catch (Exception ex) { RaiseEventHandler(false, ex); } }
private async Task <PaymentCreateRequest> BuildCreateRequestAsync( bool capture, string paymentStatus) { CardToken cardToken = await cardTokenClient.CreateTestCardToken(User, paymentStatus); return(new PaymentCreateRequest { Payer = new PaymentPayerRequest { Email = Environment.GetEnvironmentVariable("USER_EMAIL"), EntityType = "individual", Type = "customer", Identification = IdentificationHelper.GetIdentification(User), FirstName = "Test", LastName = "User", }, BinaryMode = false, Capture = capture, ExternalReference = Guid.NewGuid().ToString(), Description = "Payment description", Metadata = new Dictionary <string, object> { ["key1"] = "value1", ["key2"] = "value2", }, TransactionAmount = 10, PaymentMethodId = "master", Token = cardToken.Id, Installments = 1, StatementDescriptor = "STAT-DESC", NotificationUrl = "https://seu-site.com.br/webhooks", CallbackUrl = "https://seu-site.com.br/callbackurl", ProcessingMode = "aggregator", DateOfExpiration = DateTime.Now.AddDays(30), AdditionalInfo = new PaymentAdditionalInfoRequest { IpAddress = "127.0.0.1", Items = new List <PaymentItemRequest> { new PaymentItemRequest { Id = "SKU-1", Title = "Product", PictureUrl = "https://www.mercadopago.com/org-img/MLB/design/2015/m_pago/logos/mp_processado_02.png", Description = "Product description", CategoryId = "cat", Quantity = 1, UnitPrice = 10, Warranty = false, EventDate = DateTime.Now, CategoryDescriptor = new PaymentCategoryDescriptorRequest { Passenger = new PaymentPassengerRequest { Identification = IdentificationHelper.GetIdentification(User), FirstName = "Test", LastName = "User", }, Route = new PaymentRouteRequest { ArrivalDateTime = DateTime.Now.AddDays(30), Company = "company", Departure = "derpature", DepartureDateTime = DateTime.Now.AddDays(30), Destination = "destination", }, }, }, }, Payer = new PaymentAdditionalInfoPayerRequest { FirstName = "Test", LastName = "User", RegistrationDate = DateTime.Now.AddDays(-30), Phone = new PhoneRequest { AreaCode = "11", Number = "999999999", }, Address = new AddressRequest { ZipCode = "0600000", StreetName = "Street", StreetNumber = "123", }, AuthenticationType = "None", IsFirstPurchaseOnline = false, IsPrimeUser = false, LastPurchase = DateTime.Now.AddDays(-10), }, Shipments = new PaymentShipmentsRequest { ReceiverAddress = new PaymentReceiverAddressRequest { ZipCode = "0600000", StreetName = "Street", StreetNumber = "123", Apartment = "23", Floor = "First", CityName = "City", StateName = "State", }, ExpressShipment = false, LocalPickup = false, }, }, }); }