示例#1
0
        public async Task <DeliveryResponse> DoRequest()
        {
            var auth = new  Authentication()
            {
                Password = _builder.GetConfig().GetPassword(_builder.OrderType, _builder.GetCountryCode()),
                Username = _builder.GetConfig().GetUsername(_builder.OrderType, _builder.GetCountryCode())
            };

            var orderToDeliver = new AdminWS.DeliverOrderInformation()
            {
                ClientId    = _builder.GetConfig().GetClientNumber(_builder.OrderType, _builder.GetCountryCode()),
                SveaOrderId = _builder.Id,
                OrderType   = ConvertPaymentTypeToOrderType(_builder.OrderType)
                              //PrintType // optional for EU-clients, and integration package only supports EU-clients
            };

            var request = new AdminWS.PartialDeliveryRequest()
            {
                Authentication          = auth,
                OrderToDeliver          = orderToDeliver,
                RowNumbers              = _builder.RowIndexesToDeliver.ToArray(),
                InvoiceDistributionType = ConvertDistributionTypeToInvoiceDistributionType(_builder.DistributionType)
            };

            // make request to correct endpoint, return response object
            var endpoint = _builder.GetConfig().GetEndPoint(PaymentType.ADMIN_TYPE);
            var adminWS  = new AdminServiceClient(AdminServiceClient.EndpointConfiguration.WcfAdminSoapService, endpoint);
            var response = await adminWS.DeliverPartialAsync(request);

            return(response);
        }
        public Webpay.Integration.CSharp.AdminWS.DeliveryResponse DoRequest()
        {
            var auth = new AdminWS.Authentication()
            {
                Password = _builder.GetConfig().GetPassword(_builder.OrderType, _builder.GetCountryCode()),
                Username = _builder.GetConfig().GetUsername(_builder.OrderType, _builder.GetCountryCode())
            };

            var orderToDeliver = new AdminWS.DeliverOrderInformation()
            {
                ClientId    = _builder.GetConfig().GetClientNumber(_builder.OrderType, _builder.GetCountryCode()),
                SveaOrderId = _builder.Id,
                OrderType   = ConvertPaymentTypeToOrderType(_builder.OrderType)
                              //PrintType // optional for EU-clients, and integration package only supports EU-clients
            };

            var request = new AdminWS.PartialDeliveryRequest()
            {
                Authentication          = auth,
                OrderToDeliver          = orderToDeliver,
                RowNumbers              = _builder.RowIndexesToDeliver.ToArray(),
                InvoiceDistributionType = ConvertDistributionTypeToInvoiceDistributionType(_builder.DistributionType)
            };

            // make request to correct endpoint, return response object
            var endpoint = _builder.GetConfig().GetEndPoint(PaymentType.ADMIN_TYPE);
            var adminWS  = new AdminServiceClient(new WSHttpBinding(SecurityMode.Transport), new EndpointAddress(endpoint));
            var response = adminWS.DeliverPartial(request);

            return(response);
        }
示例#3
0
        public ConfirmResponse DoRequest()
        {
            // calculate original order rows total, incvat row sum over numberedOrderRows
            var originalOrderTotal = 0M;

            foreach (NumberedOrderRowBuilder originalRow in _builder.NumberedOrderRows)
            {
                originalOrderTotal += GetRowAmountIncVatFromBuilderOrderRow(
                    originalRow.GetVatPercent(), originalRow.GetAmountIncVat(), originalRow.GetAmountExVat(), originalRow.GetQuantity());
            }

            // calculate delivered order rows total, incvat row sum over deliveredOrderRows
            var deliveredOrderTotal = 0M;

            foreach (int rowIndex in _builder.RowIndexesToDeliver)
            {
                var deliveredRow = _builder.NumberedOrderRows[(rowIndex - 1)]; // -1 as NumberedOrderRows is one-indexed
                deliveredOrderTotal += GetRowAmountIncVatFromBuilderOrderRow(
                    deliveredRow.GetVatPercent(), deliveredRow.GetAmountIncVat(), deliveredRow.GetAmountExVat(), deliveredRow.GetQuantity());
            }

            var amountToLowerOrderBy = originalOrderTotal - deliveredOrderTotal;

            if (amountToLowerOrderBy > 0M)
            {
                // first loweramount, then confirm!
                var lowerAmountRequest = new HostedAdmin(_builder.GetConfig(), _builder.GetCountryCode())
                                         .LowerAmount(new LowerAmount(
                                                          transactionId: _builder.Id,
                                                          amountToLower: Decimal.ToInt64(amountToLowerOrderBy * 100) // centessimal
                                                          ));

                var lowerAmountResponse = lowerAmountRequest.DoRequest <LowerAmountResponse>();

                // if error lowering amount, return a dummy ConfirmRespose response w/status code 100 INTERNAL_ERROR
                if (!lowerAmountResponse.Accepted)
                {
                    var dummyInternalErrorResponseXml = new XmlDocument();
                    dummyInternalErrorResponseXml.LoadXml(@"<?xml version='1.0' encoding='UTF-8'?>
                        <response>
                            <statuscode>100</statuscode>
                        </response>");

                    return(Confirm.Response(dummyInternalErrorResponseXml));
                }
            }
            var hostedActionRequest = new HostedAdmin(_builder.GetConfig(), _builder.GetCountryCode())
                                      .Confirm(new Confirm(
                                                   transactionId: _builder.Id,
                                                   captureDate: _builder.CaptureDate ?? DateTime.Now // if no captureDate set, use today's date as default.
                                                   ));

            return(hostedActionRequest.DoRequest <ConfirmResponse>());
        }