public async Task <ActionResult> CreateOrder(VirtoCommerceDomainPaymentModelBankCardInfo bankCardInfo) { if (bankCardInfo == null) { throw new ArgumentNullException("bankCardInfo"); } EnsureThatCartExist(); //Need lock to prevent concurrent access to same cart using (var lockObject = await AsyncLock.GetLockByKey(GetAsyncLockCartKey(WorkContext.CurrentCart.Id)).LockAsync()) { var order = await _orderApi.OrderModuleCreateOrderFromCartAsync(_cartBuilder.Cart.Id); //Raise domain event await _orderPlacedEventPublisher.PublishAsync(new OrderPlacedEvent(order.ToWebModel(base.WorkContext.AllCurrencies, base.WorkContext.CurrentLanguage), _cartBuilder.Cart)); await _cartBuilder.RemoveCartAsync(); VirtoCommerceOrderModuleWebModelProcessPaymentResult processingResult = null; var incomingPayment = order.InPayments != null?order.InPayments.FirstOrDefault() : null; if (incomingPayment != null) { processingResult = await _orderApi.OrderModuleProcessOrderPaymentsAsync(bankCardInfo, order.Id, incomingPayment.Id); } return(Json(new { order = order, orderProcessingResult = processingResult })); } }
public async Task <ActionResult> CreateOrderJson(VirtoCommerceDomainPaymentModelBankCardInfo bankCardInfo) { EnsureThatCartExist(); //Need lock to prevent concurrent access to same cart using (var lockObject = await AsyncLock.GetLockByKey(GetAsyncLockCartKey(WorkContext.CurrentCart.Id)).LockAsync()) { var order = await _orderApi.OrderModuleCreateOrderFromCartAsync(_cartBuilder.Cart.Id); //Raise domain event await _orderPlacedEventPublisher.PublishAsync(new OrderPlacedEvent(order.ToWebModel(base.WorkContext.AllCurrencies, base.WorkContext.CurrentLanguage), _cartBuilder.Cart)); await _cartBuilder.RemoveCartAsync(); if (HttpContext.User.Identity.IsAuthenticated) { var contact = await _customerApi.CustomerModuleGetContactByIdAsync(WorkContext.CurrentCustomer.Id); var orderAddresses = GetOrderAddresses(order); foreach (var orderAddress in orderAddresses) { contact.Addresses.Add(orderAddress.ToCustomerModel()); } await _customerApi.CustomerModuleUpdateContactAsync(contact); } var processingResult = await GetOrderProcessingResultAsync(order, bankCardInfo); return(Json(new { order = order, orderProcessingResult = processingResult }, JsonRequestBehavior.AllowGet)); } }
private async Task <VirtoCommerceOrderModuleWebModelProcessPaymentResult> GetOrderProcessingResultAsync( VirtoCommerceOrderModuleWebModelCustomerOrder order, VirtoCommerceDomainPaymentModelBankCardInfo bankCardInfo) { if (bankCardInfo == null) { bankCardInfo = new VirtoCommerceDomainPaymentModelBankCardInfo(); } VirtoCommerceOrderModuleWebModelProcessPaymentResult processingResult = null; var incomingPayment = order.InPayments != null?order.InPayments.FirstOrDefault() : null; if (incomingPayment != null) { processingResult = await _orderApi.OrderModuleProcessOrderPaymentsAsync(bankCardInfo, order.Id, incomingPayment.Id); } return(processingResult); }
public async Task <ActionResult> CreateOrderJson(VirtoCommerceDomainPaymentModelBankCardInfo bankCardInfo) { await _cartBuilder.GetOrCreateNewTransientCartAsync(WorkContext.CurrentStore, WorkContext.CurrentCustomer, WorkContext.CurrentLanguage, WorkContext.CurrentCurrency); var order = await _orderApi.OrderModuleCreateOrderFromCartAsync(_cartBuilder.Cart.Id); await _cartBuilder.RemoveCartAsync(); if (HttpContext.User.Identity.IsAuthenticated) { var contact = await _customerApi.CustomerModuleGetContactByIdAsync(WorkContext.CurrentCustomer.Id); foreach (var orderAddress in order.Addresses) { contact.Addresses.Add(orderAddress.ToCustomerModel()); } await _customerApi.CustomerModuleUpdateContactAsync(contact); } var processingResult = await GetOrderProcessingResultAsync(order, bankCardInfo); return(Json(new { order = order, orderProcessingResult = processingResult }, JsonRequestBehavior.AllowGet)); }
public async Task<ActionResult> CreateOrder(VirtoCommerceDomainPaymentModelBankCardInfo bankCardInfo) { EnsureThatCartExist(); //Need lock to prevent concurrent access to same cart using (await AsyncLock.GetLockByKey(GetAsyncLockCartKey(WorkContext.CurrentCart.Id)).LockAsync()) { var order = await _orderApi.OrderModuleCreateOrderFromCartAsync(_cartBuilder.Cart.Id); //Raise domain event await _orderPlacedEventPublisher.PublishAsync(new OrderPlacedEvent(order.ToWebModel(WorkContext.AllCurrencies, WorkContext.CurrentLanguage), _cartBuilder.Cart)); await _cartBuilder.RemoveCartAsync(); VirtoCommerceOrderModuleWebModelProcessPaymentResult processingResult = null; var incomingPayment = order.InPayments != null ? order.InPayments.FirstOrDefault() : null; if (incomingPayment != null) { processingResult = await _orderApi.OrderModuleProcessOrderPaymentsAsync(order.Id, incomingPayment.Id, bankCardInfo); } return Json(new { order, orderProcessingResult = processingResult }); } }
private async Task<VirtoCommerceOrderModuleWebModelProcessPaymentResult> GetOrderProcessingResultAsync( VirtoCommerceOrderModuleWebModelCustomerOrder order, VirtoCommerceDomainPaymentModelBankCardInfo bankCardInfo) { if (bankCardInfo == null) { bankCardInfo = new VirtoCommerceDomainPaymentModelBankCardInfo(); } VirtoCommerceOrderModuleWebModelProcessPaymentResult processingResult = null; var incomingPayment = order.InPayments != null ? order.InPayments.FirstOrDefault() : null; if (incomingPayment != null) { processingResult = await _orderApi.OrderModuleProcessOrderPaymentsAsync(bankCardInfo, order.Id, incomingPayment.Id); } return processingResult; }
public async Task<ActionResult> CreateOrderJson(VirtoCommerceDomainPaymentModelBankCardInfo bankCardInfo) { EnsureThatCartExist(); //Need lock to prevent concurrent access to same cart using (var lockObject = await AsyncLock.GetLockByKey(GetAsyncLockCartKey(WorkContext.CurrentCart.Id)).LockAsync()) { var order = await _orderApi.OrderModuleCreateOrderFromCartAsync(_cartBuilder.Cart.Id); //Raise domain event await _orderPlacedEventPublisher.PublishAsync(new OrderPlacedEvent(order.ToWebModel(base.WorkContext.AllCurrencies, base.WorkContext.CurrentLanguage), _cartBuilder.Cart)); await _cartBuilder.RemoveCartAsync(); if (HttpContext.User.Identity.IsAuthenticated) { var contact = await _customerApi.CustomerModuleGetContactByIdAsync(WorkContext.CurrentCustomer.Id); var orderAddresses = GetOrderAddresses(order); foreach (var orderAddress in orderAddresses) { contact.Addresses.Add(orderAddress.ToCustomerModel()); } await _customerApi.CustomerModuleUpdateContactAsync(contact); } var processingResult = await GetOrderProcessingResultAsync(order, bankCardInfo); return Json(new { order = order, orderProcessingResult = processingResult }, JsonRequestBehavior.AllowGet); } }
/// <summary> /// Register customer order payment in external payment system Used in storefront checkout or manual order payment registration /// </summary> /// <exception cref="VirtoCommerce.Client.Client.ApiException">Thrown when fails to make API call</exception> /// <param name="orderId">customer order id</param> /// <param name="paymentId">payment id</param> /// <param name="bankCardInfo">banking card information (optional)</param> /// <returns>Task of ApiResponse (VirtoCommerceOrderModuleWebModelProcessPaymentResult)</returns> public async System.Threading.Tasks.Task<ApiResponse<VirtoCommerceOrderModuleWebModelProcessPaymentResult>> OrderModuleProcessOrderPaymentsAsyncWithHttpInfo (string orderId, string paymentId, VirtoCommerceDomainPaymentModelBankCardInfo bankCardInfo = null) { // verify the required parameter 'orderId' is set if (orderId == null) throw new ApiException(400, "Missing required parameter 'orderId' when calling OrderModuleApi->OrderModuleProcessOrderPayments"); // verify the required parameter 'paymentId' is set if (paymentId == null) throw new ApiException(400, "Missing required parameter 'paymentId' when calling OrderModuleApi->OrderModuleProcessOrderPayments"); var localVarPath = "/api/order/customerOrders/{orderId}/processPayment/{paymentId}"; var localVarPathParams = new Dictionary<String, String>(); var localVarQueryParams = new Dictionary<String, String>(); var localVarHeaderParams = new Dictionary<String, String>(Configuration.DefaultHeader); var localVarFormParams = new Dictionary<String, String>(); var localVarFileParams = new Dictionary<String, FileParameter>(); Object localVarPostBody = null; // to determine the Content-Type header String[] localVarHttpContentTypes = new String[] { "application/json", "text/json", "application/xml", "text/xml", "application/x-www-form-urlencoded" }; String localVarHttpContentType = Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); // to determine the Accept header String[] localVarHttpHeaderAccepts = new String[] { "application/json", "text/json", "application/xml", "text/xml" }; String localVarHttpHeaderAccept = Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); // set "format" to json by default // e.g. /pet/{petId}.{format} becomes /pet/{petId}.json localVarPathParams.Add("format", "json"); if (orderId != null) localVarPathParams.Add("orderId", Configuration.ApiClient.ParameterToString(orderId)); // path parameter if (paymentId != null) localVarPathParams.Add("paymentId", Configuration.ApiClient.ParameterToString(paymentId)); // path parameter if (bankCardInfo.GetType() != typeof(byte[])) { localVarPostBody = Configuration.ApiClient.Serialize(bankCardInfo); // http body (model) parameter } else { localVarPostBody = bankCardInfo; // byte array } // make the HTTP request IRestResponse localVarResponse = (IRestResponse) await Configuration.ApiClient.CallApiAsync(localVarPath, Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (localVarStatusCode >= 400 && (localVarStatusCode != 404 || Configuration.ThrowExceptionWhenStatusCodeIs404)) throw new ApiException (localVarStatusCode, "Error calling OrderModuleProcessOrderPayments: " + localVarResponse.Content, localVarResponse.Content); else if (localVarStatusCode == 0) throw new ApiException (localVarStatusCode, "Error calling OrderModuleProcessOrderPayments: " + localVarResponse.ErrorMessage, localVarResponse.ErrorMessage); return new ApiResponse<VirtoCommerceOrderModuleWebModelProcessPaymentResult>(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Name, x => x.Value.ToString()), (VirtoCommerceOrderModuleWebModelProcessPaymentResult) Configuration.ApiClient.Deserialize(localVarResponse, typeof(VirtoCommerceOrderModuleWebModelProcessPaymentResult))); }
/// <summary> /// Register customer order payment in external payment system Used in storefront checkout or manual order payment registration /// </summary> /// <exception cref="VirtoCommerce.Client.Client.ApiException">Thrown when fails to make API call</exception> /// <param name="orderId">customer order id</param> /// <param name="paymentId">payment id</param> /// <param name="bankCardInfo">banking card information (optional)</param> /// <returns>Task of VirtoCommerceOrderModuleWebModelProcessPaymentResult</returns> public async System.Threading.Tasks.Task<VirtoCommerceOrderModuleWebModelProcessPaymentResult> OrderModuleProcessOrderPaymentsAsync (string orderId, string paymentId, VirtoCommerceDomainPaymentModelBankCardInfo bankCardInfo = null) { ApiResponse<VirtoCommerceOrderModuleWebModelProcessPaymentResult> localVarResponse = await OrderModuleProcessOrderPaymentsAsyncWithHttpInfo(orderId, paymentId, bankCardInfo); return localVarResponse.Data; }
/// <summary> /// Register customer order payment in external payment system Used in storefront checkout or manual order payment registration /// </summary> /// <exception cref="VirtoCommerce.Client.Client.ApiException">Thrown when fails to make API call</exception> /// <param name="orderId">customer order id</param> /// <param name="paymentId">payment id</param> /// <param name="bankCardInfo">banking card information (optional)</param> /// <returns>VirtoCommerceOrderModuleWebModelProcessPaymentResult</returns> public VirtoCommerceOrderModuleWebModelProcessPaymentResult OrderModuleProcessOrderPayments (string orderId, string paymentId, VirtoCommerceDomainPaymentModelBankCardInfo bankCardInfo = null) { ApiResponse<VirtoCommerceOrderModuleWebModelProcessPaymentResult> localVarResponse = OrderModuleProcessOrderPaymentsWithHttpInfo(orderId, paymentId, bankCardInfo); return localVarResponse.Data; }
/// <summary> /// Registration customer order payment in external payment system Used in front-end checkout or manual order payment registration /// </summary> /// <param name="bankCardInfo">banking card information</param> /// <param name="orderId">customer order id</param> /// <param name="paymentId">payment id</param> /// <returns>VirtoCommerceOrderModuleWebModelProcessPaymentResult</returns> public VirtoCommerceOrderModuleWebModelProcessPaymentResult OrderModuleProcessOrderPayments (VirtoCommerceDomainPaymentModelBankCardInfo bankCardInfo, string orderId, string paymentId) { ApiResponse<VirtoCommerceOrderModuleWebModelProcessPaymentResult> response = OrderModuleProcessOrderPaymentsWithHttpInfo(bankCardInfo, orderId, paymentId); return response.Data; }
/// <summary> /// Registration customer order payment in external payment system Used in front-end checkout or manual order payment registration /// </summary> /// <param name="bankCardInfo">banking card information</param> /// <param name="orderId">customer order id</param> /// <param name="paymentId">payment id</param> /// <returns>Task of ApiResponse (VirtoCommerceOrderModuleWebModelProcessPaymentResult)</returns> public async System.Threading.Tasks.Task<ApiResponse<VirtoCommerceOrderModuleWebModelProcessPaymentResult>> OrderModuleProcessOrderPaymentsAsyncWithHttpInfo (VirtoCommerceDomainPaymentModelBankCardInfo bankCardInfo, string orderId, string paymentId) { // verify the required parameter 'bankCardInfo' is set if (bankCardInfo == null) throw new ApiException(400, "Missing required parameter 'bankCardInfo' when calling OrderModuleProcessOrderPayments"); // verify the required parameter 'orderId' is set if (orderId == null) throw new ApiException(400, "Missing required parameter 'orderId' when calling OrderModuleProcessOrderPayments"); // verify the required parameter 'paymentId' is set if (paymentId == null) throw new ApiException(400, "Missing required parameter 'paymentId' when calling OrderModuleProcessOrderPayments"); var path_ = "/api/order/customerOrders/{orderId}/processPayment/{paymentId}"; var pathParams = new Dictionary<String, String>(); var queryParams = new Dictionary<String, String>(); var headerParams = new Dictionary<String, String>(); var formParams = new Dictionary<String, String>(); var fileParams = new Dictionary<String, FileParameter>(); String postBody = null; // to determine the Accept header String[] http_header_accepts = new String[] { "application/json", "text/json" }; String http_header_accept = Configuration.ApiClient.SelectHeaderAccept(http_header_accepts); if (http_header_accept != null) headerParams.Add("Accept", Configuration.ApiClient.SelectHeaderAccept(http_header_accepts)); // set "format" to json by default // e.g. /pet/{petId}.{format} becomes /pet/{petId}.json pathParams.Add("format", "json"); if (orderId != null) pathParams.Add("orderId", Configuration.ApiClient.ParameterToString(orderId)); // path parameter if (paymentId != null) pathParams.Add("paymentId", Configuration.ApiClient.ParameterToString(paymentId)); // path parameter postBody = Configuration.ApiClient.Serialize(bankCardInfo); // http body (model) parameter // make the HTTP request IRestResponse response = (IRestResponse) await Configuration.ApiClient.CallApiAsync(path_, Method.POST, queryParams, postBody, headerParams, formParams, fileParams, pathParams); int statusCode = (int) response.StatusCode; if (statusCode >= 400) throw new ApiException (statusCode, "Error calling OrderModuleProcessOrderPayments: " + response.Content, response.Content); else if (statusCode == 0) throw new ApiException (statusCode, "Error calling OrderModuleProcessOrderPayments: " + response.ErrorMessage, response.ErrorMessage); return new ApiResponse<VirtoCommerceOrderModuleWebModelProcessPaymentResult>(statusCode, response.Headers.ToDictionary(x => x.Name, x => x.Value.ToString()), (VirtoCommerceOrderModuleWebModelProcessPaymentResult) Configuration.ApiClient.Deserialize(response, typeof(VirtoCommerceOrderModuleWebModelProcessPaymentResult))); }
public async Task<ActionResult> CreateOrderJson(VirtoCommerceDomainPaymentModelBankCardInfo bankCardInfo) { await _cartBuilder.GetOrCreateNewTransientCartAsync(WorkContext.CurrentStore, WorkContext.CurrentCustomer, WorkContext.CurrentLanguage, WorkContext.CurrentCurrency); var order = await _orderApi.OrderModuleCreateOrderFromCartAsync(_cartBuilder.Cart.Id); await _cartBuilder.RemoveCartAsync(); if (HttpContext.User.Identity.IsAuthenticated) { var contact = await _customerApi.CustomerModuleGetContactByIdAsync(WorkContext.CurrentCustomer.Id); foreach (var orderAddress in order.Addresses) { contact.Addresses.Add(orderAddress.ToCustomerModel()); } await _customerApi.CustomerModuleUpdateContactAsync(contact); } var processingResult = await GetOrderProcessingResultAsync(order, bankCardInfo); return Json(new { order = order, orderProcessingResult = processingResult }, JsonRequestBehavior.AllowGet); }