public async Task DoDirectPaymentAsync_by_customerId_requests_proper_api() { // arrange var aRequest = new CustomerDirectPaymentRequest { Amount = 1024, TransactionId = Guid.NewGuid().ToString(), CustomerId = Guid.NewGuid().ToString(), }; 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 <CustomerDirectPaymentRequest, Payment>( It.Is <IamportRequest <CustomerDirectPaymentRequest> >(req => req.Method == HttpMethod.Post && req.Content == aRequest && req.ApiPathAndQueryString.EndsWith($"subscribe/payments/again")))); }
/// <summary> /// [POST] /subscribe/payments/again /// iamport: 저장된 빌링키로 재결제를 하는 경우 사용됩니다. /subscribe/payments/onetime 또는 /subscribe/customers/{customer_uid} 로 등록된 빌링키가 있을 때 매칭되는 customer_uid로 재결제를 진행할 수 있습니다. /// </summary> /// <param name="request">저장된 구매자 정보로 결제를 요청하는 정보</param> /// <returns>결제 결과</returns> public async Task <Payment> DoDirectPaymentAsync(CustomerDirectPaymentRequest request) { if (request == null) { throw new ArgumentNullException(nameof(request)); } ValidateObject(request); var iamportRequest = new IamportRequest <CustomerDirectPaymentRequest> { ApiPathAndQueryString = GetPaymentsPathAndQuerystring("again"), Content = request, Method = HttpMethod.Post }; return(await SendRequestAsync <CustomerDirectPaymentRequest, Payment>(iamportRequest)); }
public async Task DoDirectPaymentAsync_by_customerId_throws_ValidationException( decimal amount, string transactionId, string customerId) { // arrange var aRequest = new CustomerDirectPaymentRequest { Amount = amount, TransactionId = transactionId, CustomerId = customerId, }; var client = Mock.Of <IIamportClient>(); var sut = new SubscribeApi(client); // act/assert await Assert.ThrowsAsync <ValidationException>( () => sut.DoDirectPaymentAsync(aRequest)); }