private static void PrepareBill( out CreateBillInfo createBillInfo, string value = null, string currency = null, string comment = null, string email = null, string account = null, string phone = null, string successUrl = null ) { createBillInfo = new CreateBillInfo { BillId = Guid.NewGuid().ToString(), Amount = new MoneyAmount { ValueString = value, CurrencyString = currency }, Comment = comment, ExpirationDateTime = BillPaymentsUtils.GetTimeoutDate(), Customer = new Customer { Email = email, Account = account, Phone = phone }, SuccessUrl = string.IsNullOrEmpty(successUrl) ? null : new Uri(successUrl) }; }
/// <summary> /// Invoice issue by API asynchronously. /// https://developer.qiwi.com/en/bill-payments/#create /// </summary> /// <param name="info">The invoice data.</param> /// <param name="customFields">The additional info.</param> /// <typeparam name="T">The result invoice type.</typeparam> /// <returns>The invoice.</returns> /// <exception cref="SerializationException">On request body serialization fail.</exception> /// <exception cref="HttpClientException">On request fail.</exception> /// <exception cref="BadResponseException">On response parse fail.</exception> /// <exception cref="BillPaymentsServiceException">On API return error message.</exception> public async Task <T> CreateBillAsync <T>(CreateBillInfo info, CustomFields customFields = null) where T : BillResponse { var additional = customFields ?? new CustomFields(); additional.ApiClient = _fingerprint.GetClientName(); additional.ApiClientVersion = _fingerprint.GetClientVersion(); var response = await _requestMappingIntercessor.RequestAsync <T>( "PUT", BillsUrl + info.BillId, _headers, info.GetCreateBillRequest(additional) ); return(null != info.SuccessUrl ? AppendSuccessUrl <T>(response, info.SuccessUrl) : response); }
private static void TestCreateBill_Assert(CreateBillInfo createBillInfo, IFingerprint fingerprint, BillResponse billResponse) { var query = HttpUtility.ParseQueryString(billResponse.PayUrl.Query); Assert.AreEqual(createBillInfo.BillId, billResponse.BillId, "Same bill id"); Assert.AreEqual(createBillInfo.Amount.ValueDecimal, billResponse.Amount.ValueDecimal, "Same amount value"); Assert.AreEqual(createBillInfo.Amount.CurrencyEnum, billResponse.Amount.CurrencyEnum, "Same amount currency"); Assert.AreEqual(createBillInfo.Comment, billResponse.Comment, "Same comment"); Assert.AreEqual(createBillInfo.ExpirationDateTime, billResponse.ExpirationDateTime, "Same expiration dateTime"); Assert.AreEqual(createBillInfo.Customer.Email, billResponse.Customer.Email, "Same email"); Assert.AreEqual(createBillInfo.Customer.Account, billResponse.Customer.Account, "Same account"); Assert.AreEqual(createBillInfo.Customer.Phone, billResponse.Customer.Phone, "Same phone"); Assert.AreEqual(createBillInfo.SuccessUrl, query["successUrl"], "Same success url"); Assert.AreEqual(BillStatusEnum.Waiting, billResponse.Status.ValueEnum, "Status value preset"); Assert.AreEqual(fingerprint.GetClientName(), billResponse.CustomFields.ApiClient, "Api client preset"); Assert.AreEqual(fingerprint.GetClientVersion(), billResponse.CustomFields.ApiClientVersion, "Api client preset"); }
public async Task <BillResponse> CreateBillAsync(CreateBillInfo info, CustomFields customFields = null) { return(await CreateBillAsync <BillResponse>(info, customFields)); }
public T CreateBill <T>(CreateBillInfo info, CustomFields customFields = null) where T : BillResponse { return(CreateBillAsync <T>(info, customFields).Result); }
public BillResponse CreateBill(CreateBillInfo info, CustomFields customFields = null) { return(CreateBillAsync <BillResponse>(info, customFields).Result); }