public async Task DoDirectPaymentAsync_throws_ValidationException( decimal amount, string transactionId, string cardNumber, string expiry, string authentication, string partialPassword) { // arrange var aRequest = new DirectPaymentRequest { Amount = amount, TransactionId = transactionId, AuthenticationNumber = authentication, CardNumber = cardNumber, Expiry = expiry, PartialPassword = partialPassword, }; var client = Mock.Of <IIamportClient>(); var sut = new SubscribeApi(client); // act/assert await Assert.ThrowsAsync <ValidationException>( () => sut.DoDirectPaymentAsync(aRequest)); }
/// <summary> /// [POST] /subscribe/payments/onetime /// iamport: 구매자로부터 별도의 인증과정을 거치지 않고, 카드정보만으로 결제를 진행하는 API입니다(아임포트 javascript가 필요없습니다). /// customer_uid를 전달해주시면 결제 후 다음 번 결제를 위해 성공된 결제에 사용된 빌링키를 저장해두게되고, customer_uid가 없는 경우 저장되지 않습니다. /// 동일한 merchant_uid는 재사용이 불가능하며 고유한 값을 전달해주셔야 합니다. /// </summary> /// <param name="request">간편 결제 정보</param> /// <returns>결제 결과</returns> public async Task <Payment> DoDirectPaymentAsync(DirectPaymentRequest request) { if (request == null) { throw new ArgumentNullException(nameof(request)); } ValidateObject(request); var iamportRequest = new IamportRequest <DirectPaymentRequest> { ApiPathAndQueryString = GetPaymentsPathAndQuerystring("onetime"), Content = request, Method = HttpMethod.Post }; return(await SendRequestAsync <DirectPaymentRequest, Payment>(iamportRequest)); }
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET: //ORIGINAL LINE: public MessageList paymentRequest(DirectPaymentRequest directPaymentRequest, EasypayConfig config) throws java.net.MalformedURLException public virtual MessageList paymentRequest(DirectPaymentRequest directPaymentRequest, EasypayConfig config) { URL url = new URL("https://" + config.Host); string httpRequestMethod = "POST"; string contentHash = "xxx"; string contentType = "??"; string date = ""; string path = ""; HttpURLConnection urlConnection = null; try { urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.RequestMethod = httpRequestMethod; urlConnection.setRequestProperty("Content-Type", contentType); // urlConnection.setRequestProperty("Content-Length", "" + Integer.toString(postData.getBytes().length)); urlConnection.UseCaches = false; urlConnection.DoInput = true; urlConnection.DoOutput = true; System.IO.Stream @out = new BufferedOutputStream(urlConnection.OutputStream); // writeStream(out); System.IO.Stream @in = new BufferedInputStream(urlConnection.InputStream); // readStream(in); } catch (IOException e) { Console.WriteLine(e.ToString()); Console.Write(e.StackTrace); } finally { if (urlConnection != null) { urlConnection.disconnect(); } } return new MessageList(); }
public void CreateCustomer_Direct_InvokeDirectPayment_MethodCreateTokenCustomer() { var mockRapidApiClient = new Mock <IRapidService>(); var rapidSdkClient = new RapidClient(mockRapidApiClient.Object); DirectPaymentRequest assertRequest = null; //Arrange var customer = TestUtil.CreateCustomer(); mockRapidApiClient.Setup(x => x.IsValid()).Returns(true); mockRapidApiClient.Setup(x => x.DirectPayment(It.IsAny <DirectPaymentRequest>())) .Callback <DirectPaymentRequest>(i => assertRequest = i) .Returns(new DirectPaymentResponse()).Verifiable(); //Act rapidSdkClient.Create(PaymentMethod.Direct, customer); //Assert mockRapidApiClient.Verify(); Assert.IsNotNull(assertRequest); Assert.AreEqual(assertRequest.Method, Method.CreateTokenCustomer); }
public void CreateTransaction_Direct_CaptureFalse_InvokeDirectPayment_MethodAuthorise() { var mockRapidApiClient = new Mock <IRapidService>(); var rapidSdkClient = new RapidClient(mockRapidApiClient.Object); DirectPaymentRequest assertRequest = null; //Arrange var transaction = TestUtil.CreateTransaction(false); mockRapidApiClient.Setup(x => x.IsValid()).Returns(true); mockRapidApiClient.Setup(x => x.DirectPayment(It.IsAny <DirectPaymentRequest>())) .Callback <DirectPaymentRequest>(i => assertRequest = i) .Returns(new DirectPaymentResponse()).Verifiable(); //Act rapidSdkClient.Create(PaymentMethod.Direct, transaction); //Assert mockRapidApiClient.Verify(); Assert.IsNotNull(assertRequest); Assert.AreEqual(assertRequest.Method, Method.Authorise); }
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET: //ORIGINAL LINE: public MessageList paymentRequest(DirectPaymentRequest directPaymentRequest, EasypayConfig config) throws java.net.MalformedURLException public virtual MessageList paymentRequest(DirectPaymentRequest directPaymentRequest, EasypayConfig config) { URL url = new URL("https://" + config.Host); string httpRequestMethod = "POST"; string contentHash = "xxx"; string contentType = "??"; string date = ""; string path = ""; HttpURLConnection urlConnection = null; try { urlConnection = (HttpURLConnection)url.openConnection(); urlConnection.RequestMethod = httpRequestMethod; urlConnection.setRequestProperty("Content-Type", contentType); // urlConnection.setRequestProperty("Content-Length", "" + Integer.toString(postData.getBytes().length)); urlConnection.UseCaches = false; urlConnection.DoInput = true; urlConnection.DoOutput = true; System.IO.Stream @out = new BufferedOutputStream(urlConnection.OutputStream); // writeStream(out); System.IO.Stream @in = new BufferedInputStream(urlConnection.InputStream); // readStream(in); } catch (IOException e) { Console.WriteLine(e.ToString()); Console.Write(e.StackTrace); } finally { if (urlConnection != null) { urlConnection.disconnect(); } } return(new MessageList()); }
public void CreateCustomer_Direct_InvokeSecureFields_MethodCreateTokenCustomer() { var mockRapidApiClient = new Mock <IRapidService>(); var rapidSdkClient = new RapidClient(mockRapidApiClient.Object); DirectPaymentRequest assertRequest = null; //Arrange var customer = TestUtil.CreateCustomer(); customer.SecuredCardData = "44DD7jYYyRgaQnVibOAsYbbFIYmSXbS6hmTxosAhG6CK1biw="; mockRapidApiClient.Setup(x => x.IsValid()).Returns(true); mockRapidApiClient.Setup(x => x.DirectPayment(It.IsAny <DirectPaymentRequest>())) .Callback <DirectPaymentRequest>(i => assertRequest = i) .Returns(new DirectPaymentResponse()).Verifiable(); //Act rapidSdkClient.Create(PaymentMethod.Direct, customer); //Assert mockRapidApiClient.Verify(); Assert.IsNotNull(assertRequest); Assert.AreEqual(assertRequest.Method, Method.CreateTokenCustomer); Assert.AreEqual(assertRequest.SecuredCardData, customer.SecuredCardData); }
public async Task DoDirectPaymentAsync_requests_proper_api() { // arrange var aRequest = new DirectPaymentRequest { Amount = 1024, TransactionId = Guid.NewGuid().ToString(), AuthenticationNumber = "123456", CardNumber = "1234-1234-1234-1234", Expiry = "2200-12", PartialPassword = "******", }; var expectedResult = new IamportResponse <Payment> { HttpStatusCode = HttpStatusCode.OK, Content = new Payment { TransactionId = aRequest.TransactionId, Amount = aRequest.Amount, } }; var client = GetMockClient(aRequest, expectedResult); var sut = new SubscribeApi(client); // act var result = await sut.DoDirectPaymentAsync(aRequest); // assert Mock.Get(client) .Verify(mocked => mocked.RequestAsync <DirectPaymentRequest, Payment>( It.Is <IamportRequest <DirectPaymentRequest> >(req => req.Method == HttpMethod.Post && req.Content == aRequest && req.ApiPathAndQueryString.EndsWith($"subscribe/payments/onetime")))); }
public async Task <IActionResult> Index(RequestDirectPaymentModel input) { if (ModelState.IsValid == false) { return(View(nameof(Index), input)); } // 비인증 구매는 구매 요청을 즉시 처리 가능. var checkout = Models.Checkout.Create( name: input.Name, amount: input.Amount, paymentGateway: input.PaymentGateway, isDigital: false, useEscrow: false, paymentMethod: PaymentMethod.CreditCard, customerName: input.CustomerName, customerEmail: input.CustomerEmail, customerPhoneNumber: input.CustomerPhoneNumber, returnUrl: null, virtualBankExpirationTime: DateTimeOffset.UtcNow); checkoutRepository.Add(checkout); var payment = Models.Payment.Create(checkout.Id); var request = new DirectPaymentRequest { CustomerId = null, // 등록된 사용자 빌링키 없이 한번 진행 TransactionId = payment.TransactionId, Vat = input.Vat, Amount = input.Amount, Title = input.Name, CardNumber = input.CardNumber, AuthenticationNumber = input.AuthenticationNumber, Expiry = input.Expiry, PartialPassword = input.PartialPassword, InstallmentMonths = 0, BuyerName = input.CustomerName, Email = input.CustomerEmail, PhoneNumber = input.CustomerPhoneNumber, Address = input.CustomerAddress, PostCode = input.CustomerPostCode, }; Payment iamportPayment = null; try { iamportPayment = await subscribeApi.DoDirectPaymentAsync(request); } catch (IamportResponseException ex) { ModelState.AddModelError("iamport", ex.Message); return(View(nameof(Index), input)); } paymentRepository.Add(payment); RefreshPayment(iamportPayment, payment); return(RedirectToAction(nameof(Result), new { transactionId = payment.TransactionId })); }
public DirectPaymentResponse DirectPayment(DirectPaymentRequest request) { return JsonPost<DirectPaymentRequest, DirectPaymentResponse>(request, DIRECT_PAYMENT); }
public DirectPaymentResponse UpdateCustomerDirectPayment(DirectPaymentRequest request) { request.Method = Method.UpdateTokenCustomer; return JsonPut<DirectPaymentRequest, DirectPaymentResponse>(request, DIRECT_PAYMENT); }