/// <summary>
 /// Instantiates a new <see cref="Transaction"/> with the provided parameters.
 /// </summary>
 /// <param name="id">A unique reference to this transaction.</param>
 /// <param name="created">The <seealso cref="DateTime"/> the transaction was created.</param>
 /// <param name="updated">The <seealso cref="DateTime"/> the transaction was last updated.</param>
 /// <param name="type">The transaction type.</param>
 /// <param name="state">The last known state of this transaction.</param>
 /// <param name="number">Unique number of this transaction.</param>
 /// <param name="amount">Amount to charge the payer.</param>
 /// <param name="vatAmount">Amount to charge the payer as value added taxes.</param>
 /// <param name="description">A textual description of the payment.</param>
 /// <param name="payeeReference">Unique reference to this transaction in the merchant system.</param>
 /// <param name="isOperational">Indicates if this transaction was operational.</param>
 /// <param name="operations">Available operations for this transaction.</param>
 /// <param name="activity">Latest activity to happen to this transaction.</param>
 public Transaction(Uri id,
                    DateTime created,
                    DateTime updated,
                    TransactionType type,
                    State state,
                    long number,
                    Amount amount,
                    Amount vatAmount,
                    string description,
                    string payeeReference,
                    bool isOperational,
                    IOperationList operations,
                    string activity)
     : base(id)
 {
     Created        = created;
     Updated        = updated;
     Type           = type;
     State          = state;
     Number         = number;
     Amount         = amount;
     VatAmount      = vatAmount;
     Description    = description;
     PayeeReference = payeeReference;
     IsOperational  = isOperational;
     Operations     = operations;
     Activity       = activity;
 }
        public MobilePayPaymentOperations(IOperationList operations, HttpClient client)
        {
            foreach (var httpOperation in operations)
            {
                switch (httpOperation.Rel.Value)
                {
                case PaymentResourceOperations.UpdatePaymentAbort:
                    Abort = async payload => {
                        var requestDto  = new PaymentAbortRequestDto(payload);
                        var responseDto = await client.SendAsJsonAsync <MobilePayPaymentResponseDto>(httpOperation.Method, httpOperation.Href, requestDto);

                        return(new MobilePayPaymentResponse(responseDto, client));
                    };
                    break;

                case PaymentResourceOperations.RedirectAuthorization:
                    RedirectAuthorization = httpOperation;
                    break;

                case PaymentResourceOperations.ViewAuthorization:
                    ViewAuthorization = httpOperation;
                    break;

                case PaymentResourceOperations.CreateCapture:
                    Capture = async payload => {
                        var requestDto  = new MobilePayPaymentCaptureRequestDto(payload);
                        var responseDto = await client.SendAsJsonAsync <CaptureResponseDto>(httpOperation.Method, httpOperation.Href, requestDto);

                        return(new CaptureResponse(responseDto));
                    };
                    break;

                case PaymentResourceOperations.CreateCancellation:
                    Cancel = async payload => {
                        var requestDto = new MobilePayPaymentCancelRequestDto(payload);
                        return(await client.SendAsJsonAsync <CancellationResponse>(httpOperation.Method, httpOperation.Href, requestDto));
                    };
                    break;

                case PaymentResourceOperations.CreateReversal:
                    Reverse = async payload => {
                        var requestDto = new MobilePayPaymentReversalRequestDto(payload);
                        return(await client.SendAsJsonAsync <ReversalResponse>(httpOperation.Method, httpOperation.Href, requestDto));
                    };
                    break;
                }
                Add(httpOperation.Rel, httpOperation);
            }
        }
Пример #3
0
        public VippsPaymentOperations(IOperationList operations, HttpClient client)
        {
            foreach (var httpOperation in operations)
            {
                switch (httpOperation.Rel.Value)
                {
                case PaymentResourceOperations.ViewAuthorization:
                    ViewAuthorization = httpOperation;
                    break;

                case PaymentResourceOperations.DirectAuthorization:
                    DirectAuthorization = async payload => {
                        var requestDto = new VippsPaymentAuthorizationRequestDto(payload);
                        var dto        = await client.SendAsJsonAsync <VippsPaymentAuthorizationResponseDto>(httpOperation.Method, httpOperation.Href, requestDto);

                        return(new VippsPaymentAuthorizationResponse(dto.Payment, dto.Authorization.Map()));
                    };
                    break;

                case PaymentResourceOperations.CreateCapture:
                    Capture = async payload => {
                        var requestDto = new VippsPaymentCaptureRequestDto(payload);
                        var dto        = await client.SendAsJsonAsync <CaptureResponseDto>(httpOperation.Method, httpOperation.Href, requestDto);

                        return(new CaptureResponse(dto));
                    };
                    break;

                case PaymentResourceOperations.CreateCancellation:
                    Cancel = async payload => {
                        var requestDto = new VippsPaymentCancelRequestDto(payload);
                        var dto        = await client.SendAsJsonAsync <CancellationResponseDto>(httpOperation.Method, httpOperation.Href, requestDto);

                        return(new CancellationResponse(dto.Payment, dto.Cancellation.Map()));
                    };
                    break;

                case PaymentResourceOperations.CreateReversal:
                    Reversal = async payload => {
                        var requestDto = new VippsPaymentReversalRequestDto(payload);
                        var dto        = await client.SendAsJsonAsync <ReversalResponseDto>(httpOperation.Method, httpOperation.Href, requestDto);

                        return(new ReversalResponse(dto.Payment, dto.Reversal.Map()));
                    };
                    break;
                }
                Add(httpOperation.Rel, httpOperation);
            }
        }
Пример #4
0
        public SwishPaymentOperations(IOperationList operations, HttpClient client)
        {
            foreach (var httpOperation in operations)
            {
                switch (httpOperation.Rel.Value)
                {
                case PaymentResourceOperations.UpdatePaymentAbort:
                    Abort = async payload => {
                        var payloadDto = new PaymentAbortRequestDto(payload);
                        var dto        = await client.SendAsJsonAsync <SwishPaymentResponseDto>(httpOperation.Method, httpOperation.Href, payloadDto);

                        return(new SwishPaymentResponse(dto, client));
                    };
                    break;

                case PaymentResourceOperations.CreateSale:
                    Sale = async payload => {
                        var payloadDto = new SwishPaymentSaleRequestDto(payload);
                        var dto        = await client.SendAsJsonAsync <SwishPaymentSaleResponseDto>(httpOperation.Method, httpOperation.Href, payloadDto);

                        return(new SwishPaymentSaleResponse(dto.Payment, dto.Sale.Map()));
                    };
                    break;

                case PaymentResourceOperations.RedirectSale:
                    RedirectSale = httpOperation;
                    break;

                case PaymentResourceOperations.ViewSales:
                    ViewSales = httpOperation;
                    break;

                case PaymentResourceOperations.CreateReversal:
                    Reverse = async payload => {
                        var payloadDto = new SwishPaymentReversalRequestDto(payload);
                        var dto        = await client.SendAsJsonAsync <ReversalResponseDto>(httpOperation.Method, httpOperation.Href, payloadDto);

                        return(new ReversalResponse(dto.Payment, dto.Reversal.Map()));
                    };
                    break;

                case PaymentResourceOperations.PaidPayment:
                    PaidPayment = httpOperation;
                    break;
                }
                Add(httpOperation.Rel, httpOperation);
            }
        }
        /// <summary>
        /// Consturcts a <see cref="ConsumerOperations"/> holding all currently available operations for a consumer.
        /// </summary>
        /// <param name="operations">A list of available operations.</param>
        public ConsumerOperations(IOperationList operations)
        {
            foreach (var httpOperation in operations)
            {
                switch (httpOperation.Rel.Value)
                {
                case ConsumerResourceOperations.RedirectConsumerIdentification:
                    RedirectConsumerIdentification = httpOperation;
                    break;

                case ConsumerResourceOperations.ViewConsumerIdentification:
                    ViewConsumerIdentification = httpOperation;
                    break;
                }
                Add(httpOperation.Rel, httpOperation);
            }
        }
Пример #6
0
        public TrustlyPaymentOperations(IOperationList operations, HttpClient client)
        {
            foreach (var httpOperation in operations)
            {
                switch (httpOperation.Rel.Value)
                {
                case PaymentResourceOperations.RedirectSale:
                    RedirectSale = httpOperation;
                    break;

                case PaymentResourceOperations.ViewSale:
                    ViewSale = httpOperation;
                    break;

                case PaymentResourceOperations.UpdatePaymentAbort:
                    Abort = async payload => {
                        var requestDto = new PaymentAbortRequestDto(payload);
                        var dto        = await client.SendAsJsonAsync <TrustlyPaymentResonseDto>(httpOperation.Method, httpOperation.Href, requestDto);

                        return(new TrustlyPayment(dto.Payment));
                    };
                    break;

                case PaymentResourceOperations.CreateReversal:
                    Reverse = async payload => {
                        var requestDto = new TrustlyPaymentReversalRequestDto(payload);
                        var dto        = await client.SendAsJsonAsync <ReversalResponseDto>(httpOperation.Method, httpOperation.Href, requestDto);

                        return(new ReversalResponse(dto.Payment, dto.Reversal.Map()));
                    };
                    break;

                case PaymentResourceOperations.CreateCancellation:
                    Cancel = async payload => {
                        var requestDto = new TrustlyPaymentCancelRequestDto(payload);
                        var dto        = await client.SendAsJsonAsync <CancellationResponseDto>(httpOperation.Method, httpOperation.Href, requestDto);

                        return(new CancellationResponse(dto.Payment, dto.Cancellation.Map()));
                    };
                    break;
                }
                Add(httpOperation.Rel, httpOperation);
            }
        }
Пример #7
0
        public PaymentOrderOperations(IOperationList operations, HttpClient client)
        {
            foreach (var httpOperation in operations)
            {
                switch (httpOperation.Rel.Value)
                {
                case PaymentOrderResourceOperations.CreatePaymentOrderCapture:
                    Capture = async payload =>
                    {
                        var requestDto = new PaymentOrderCaptureRequestDto(payload);
                        var dto        = await client.SendAsJsonAsync <CaptureResponseDto>(httpOperation.Method, httpOperation.Href, requestDto);

                        return(new CaptureResponse(dto));
                    };
                    break;

                case PaymentOrderResourceOperations.CreatePaymentOrderCancel:
                    Cancel = async payload =>
                    {
                        var requestDto = new PaymentOrderCancelRequestDto(payload);
                        var dto        = await client.SendAsJsonAsync <CancelResponseDto>(httpOperation.Method, httpOperation.Href, requestDto);

                        return(new CancellationResponse(dto.Payment, dto.Cancellation.Map()));
                    };
                    break;

                case PaymentOrderResourceOperations.CreatePaymentOrderReversal:
                    Reverse = async payload =>
                    {
                        var url        = httpOperation.Href.GetUrlWithQueryString(PaymentExpand.All);
                        var requestDto = new PaymentOrderReversalRequestDto(payload);
                        var paymentOrderResponseContainer = await client.SendAsJsonAsync <ReversalResponseDto>(httpOperation.Method, url, requestDto);

                        return(new ReversalResponse(paymentOrderResponseContainer.Payment, paymentOrderResponseContainer.Reversal.Map()));
                    };
                    break;

                case PaymentOrderResourceOperations.UpdatePaymentOrderUpdateOrder:
                    Update = async payload =>
                    {
                        var url        = httpOperation.Href.GetUrlWithQueryString(PaymentExpand.All);
                        var requestDto = new PaymentOrderUpdateRequestDto(payload);
                        var paymentOrderResponseContainer = await client.SendAsJsonAsync <PaymentOrderResponseDto>(httpOperation.Method, url, requestDto);

                        return(new PaymentOrderResponse(paymentOrderResponseContainer, client));
                    };
                    break;

                case PaymentOrderResourceOperations.UpdatePaymentOrderAbort:
                    Abort = async payload =>
                    {
                        var url = httpOperation.Href.GetUrlWithQueryString(PaymentExpand.All);
                        var paymentOrderResponseContainer = await client.SendAsJsonAsync <PaymentOrderResponseDto>(httpOperation.Method, url, payload);

                        return(new PaymentOrderResponse(paymentOrderResponseContainer, client));
                    };
                    break;

                case PaymentOrderResourceOperations.ViewPaymentOrder:
                    View = httpOperation;
                    break;
                }
                Add(httpOperation.Rel, httpOperation);
            }
        }
        public InvoicePaymentOperations(IOperationList operations, HttpClient client)
        {
            foreach (var httpOperation in operations)
            {
                switch (httpOperation.Rel.Value)
                {
                case PaymentResourceOperations.UpdatePaymentAbort:
                    Abort = async payload => {
                        var requestDto = new PaymentAbortRequestDto(payload);
                        var dto        = await client.SendAsJsonAsync <InvoicePaymentResponseDto>(httpOperation.Method, httpOperation.Href, requestDto);

                        return(new InvoicePaymentResponse(dto, client));
                    };
                    break;

                case PaymentResourceOperations.RedirectAuthorization:
                    RedirectAuthorization = httpOperation;
                    break;

                case PaymentResourceOperations.ViewAuthorization:
                    ViewAuthorization = httpOperation;
                    break;

                case PaymentResourceOperations.CreateCapture:
                    Capture = async payload => {
                        var requestDto = new InvoicePaymentCaptureRequestDto(payload);
                        var dto        = await client.SendAsJsonAsync <CaptureResponseDto>(httpOperation.Method, httpOperation.Href, requestDto);

                        return(new CaptureResponse(dto));
                    };
                    break;

                case PaymentResourceOperations.CreateCancellation:
                    Cancel = async payload => {
                        var requestDto = new InvoicePaymentCancelRequestDto(payload);
                        var dto        = await client.SendAsJsonAsync <CancellationResponseDto>(httpOperation.Method, httpOperation.Href, requestDto);

                        return(new CancellationResponse(dto.Payment, dto.Cancellation.Map()));
                    };
                    break;

                case PaymentResourceOperations.CreateReversal:
                    Reversal = async payload => {
                        var requestDto = new InvoicePaymentReversalRequestDto(payload);
                        var dto        = await client.SendAsJsonAsync <ReversalResponseDto>(httpOperation.Method, httpOperation.Href, requestDto);

                        return(new ReversalResponse(dto.Payment, dto.Reversal.Map()));
                    };
                    break;

                case PaymentResourceOperations.CreateApprovedLegalAddress:
                    ApprovedLegalAddress = async payload => {
                        var requestDto = new InvoiceApprovedLegalAddressRequestDto(payload);
                        var dto        = await client.SendAsJsonAsync <ApprovedLegalAddressResponseDto>(httpOperation.Method, httpOperation.Href, requestDto);

                        return(new ApprovedLegalAddressResponse(dto.Payment, dto.ApprovedLegalAddress.Map()));
                    };
                    break;

                case PaymentResourceOperations.DirectAuthorization:
                    DirectAuthorization = async payload => {
                        var requestDto = new InvoicePaymentAuthorizationRequestDto(payload);
                        var dto        = await client.SendAsJsonAsync <InvoicePaymentAuthorizationResponseDto>(httpOperation.Method, httpOperation.Href, requestDto);

                        return(new InvoicePaymentAuthorizationResponse(dto.Payment, dto.Map()));
                    };
                    break;
                }
                Add(httpOperation.Rel, httpOperation);
            }
        }
 public OperationList(IOperationList operationList)
 {
     _operationList = operationList;
 }