Ejemplo n.º 1
0
 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);
        }
Ejemplo n.º 3
0
        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);
 }