public void PaymentRequestCompleteResultInitsWithNoArgs() { var paymentRequestCompleteResult = new PaymentRequestCompleteResult(); Assert.NotNull(paymentRequestCompleteResult); Assert.IsType <PaymentRequestCompleteResult>(paymentRequestCompleteResult); }
public void PaymentRequestCompleteResultInits() { var result = "success"; var paymentRequestCompleteResult = new PaymentRequestCompleteResult(result); Assert.NotNull(paymentRequestCompleteResult); Assert.IsType <PaymentRequestCompleteResult>(paymentRequestCompleteResult); Assert.Equal(result, paymentRequestCompleteResult.Result); }
private async Task <PaymentRequestCompleteResult> ProcessPaymentComplete(IInvokeActivity invoke, PaymentRequestComplete paymentRequestComplete, CancellationToken token = default(CancellationToken)) { var paymentRequest = paymentRequestComplete.PaymentRequest; var paymentResponse = paymentRequestComplete.PaymentResponse; paymentRequest.Details = (await this.ProcessShippingUpdate( new PaymentRequestUpdate() { Id = paymentRequest.Id, Details = paymentRequest.Details, ShippingAddress = paymentResponse.ShippingAddress, ShippingOption = paymentResponse.ShippingOption }, ShippingUpdateKind.Both, token)).Details; PaymentRecord paymentRecord = null; PaymentRequestCompleteResult result = null; Exception paymentProcessingException = null; try { paymentRecord = await this.paymentService.ProcessPaymentAsync(paymentRequest, paymentResponse); result = new PaymentRequestCompleteResult("success"); } catch (Exception ex) { paymentProcessingException = ex; // TODO: If payment is captured but not charged this would be considered "unknown" (charge the captured amount after shipping scenario). result = new PaymentRequestCompleteResult("failure"); } try { var message = invoke.RelatesTo.GetPostToBotMessage(); if (result.Result == "success") { // Resume the conversation with the receipt to user message.Text = paymentRequestComplete.Id; message.Value = paymentRecord; } else { // Resume the conversation with error message message.Text = $"Failed to process payment with error: {paymentProcessingException?.Message}"; } await Conversation.ResumeAsync(invoke.RelatesTo, message, token); } catch (Exception ex) { Trace.TraceError($"Failed to resume the conversation using ConversationReference: {JsonConvert.SerializeObject(invoke.RelatesTo)} and exception: {ex.Message}"); } return(result); }