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); }
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>()); }