internal static AcquirerTrxReq CreateAcquirerRequest(
            string merchantId,
            InitiateTransactionSettings settings)
        {
            settings.Validate();

            string xmlExpirationPeriod = settings.ExpirationPeriod.HasValue
                                ? XmlConvert.ToString(settings.ExpirationPeriod.Value)
                                : default;

            return(new AcquirerTrxReq {
                Issuer = new Issuer {
                    IssuerId = settings.IssuerId,
                },
                Merchant = new Merchant {
                    MerchantId = merchantId,
                    SubId = settings.SubId,
                    MerchantReturnURL = settings.ReturnUrl.OriginalString,
                },
                Transaction = new Transaction {
                    Language = settings.Language,
                    EntranceCode = settings.EntranceCode,
                    ExpirationPeriod = xmlExpirationPeriod,
                    Container = XmlContainerBuilder.CreateAuthnRequestContainer(
                        settings.MerchantReference,
                        merchantId,
                        settings.ReturnUrl.AbsoluteUri,
                        settings.ServiceIds),
                },
            });
        }
Esempio n. 2
0
        /// <summary>
        /// Initiates a transaction.
        /// </summary>
        /// <param name="settings">The initiate transaction request settings.</param>
        /// <param name="cancellationToken">Cancellation token.</param>
        /// <returns>The transaction result.</returns>
        public async Task <TransactionResult> InitiateTransactionAsync(
            InitiateTransactionSettings settings,
            CancellationToken cancellationToken = default)
        {
            var request = RequestBuilder.CreateAcquirerRequest(
                merchantId,
                settings);

            var response = await SendObjectAsXmlAsync(
                request,
                cancellationToken);

            return(ResultParser.ParseTransactionResult(response));
        }