public override void OnRefundPaymentResponse(RefundPaymentResponse response) { //For some reason Boolean values of success and result and responses are flipped true and false output = ""; if (response.Success) { output = "APPROVED\t" + response.Result + "\t" + response.Success + "\t" + "\t" + response.Refund.amount.ToString() + "\t" + response.PaymentId + "\t" + response.OrderId + "\t"; } else { output = "FAILED\t" + response.Result + "\t" + response.Reason + "\t" + response.Success + "\t" + response.Message + "\t"; } if (!hasSignature) { output += "NONE\t"; } File.WriteAllText(SaleFilePath, output); cloverConnector.ShowMessage("REFUND " + response.Result); File.Delete(startFilePath); Thread.Sleep(2000); hasSignature = false; isBusy = false; cloverConnector.ShowWelcomeScreen(); }
public void OnRefundPaymentResponse(RefundPaymentResponse response) { if (TxState.SUCCESS.Equals(response.Code)) { uiThread.Send(delegate(object state) { object orderObj; TempObjectMap.TryGetValue(response.OrderId, out orderObj); TempObjectMap.Remove(response.OrderId); POSRefund refund = new POSRefund(response.PaymentId, response.OrderId, null, response.RefundObj.amount); ((POSOrder)orderObj).AddRefund(refund); ListViewItem lvi = new ListViewItem(); lvi.SubItems.Add(new ListViewItem.ListViewSubItem()); lvi.SubItems.Add(new ListViewItem.ListViewSubItem()); lvi.SubItems.Add(new ListViewItem.ListViewSubItem()); lvi.SubItems.Add(new ListViewItem.ListViewSubItem()); lvi.SubItems[0].Text = "REFUND"; lvi.SubItems[3].Text = (response.RefundObj.amount / 100.0).ToString("C2"); OrderPaymentsView.Items.Add(lvi); }, null); } else if (TxState.FAIL.Equals(response.Code)) { uiThread.Send(delegate(object state) { MessageBox.Show("Card authentication failed"); PaymentReset(); }, null); } }
public override void OnRefundPaymentResponse(RefundPaymentResponse response) { base.OnRefundPaymentResponse(response); try { if (response.Success) { Refund refund = response.Refund; Console.WriteLine("Refund request successful"); Console.WriteLine(" ID: " + refund.id); Console.WriteLine(" Amount: " + refund.amount); Console.WriteLine(" Order ID: " + response.OrderId); Console.WriteLine(" Payment ID: " + response.PaymentId); } else { Console.Error.WriteLine("Refund request failed - " + response.Reason); } } catch { Console.Error.WriteLine("Error handling sale notification"); } refundDone = true; }
public void OnRefundPaymentResponse(RefundPaymentResponse response) { OnRefundPaymentResponseMessage message = new OnRefundPaymentResponseMessage(); message.payload = response; WebSocket.Send(JsonUtils.serialize(message)); }
public RefundPaymentResponse Refund(RefundPaymentRequest refundPaymentRequest) { var result = new RefundPaymentResponse(); result.AddError("Refund method not supported"); return(result); }
public void OnRefundPaymentResponse(RefundPaymentResponse response) { OnRefundPaymentResponseMessage refundPaymentResponse = new OnRefundPaymentResponseMessage(); refundPaymentResponse.payload = response; WebSocket.Send(Serialize(refundPaymentResponse)); }
public void RefundPaymentResponse(HttpListenerContext context) { RefundPaymentResponse response = ParseResponse <RefundPaymentResponse>(context); if (response != null) { connectorListener.ForEach(listener => listener.OnRefundPaymentResponse(response)); } SendTextResponse(context, ""); }
public void OnRefundPaymentResponse(RefundPaymentResponse response) { if (response.Success) { uiThread.Send(delegate(object state) { }, null); } else if (response.Result.Equals(ResponseCode.FAIL)) { uiThread.Send(delegate(object state) { }, null); } }
/// <summary> /// Refunds a payment that was previously captured (settled). You can expect partial refunds. /// </summary> /// <param name="refundPaymentRequest"></param> /// <returns></returns> public async Task <RefundPaymentResponse> RefundPayment(RefundPaymentRequest refundPaymentRequest, string publicKey, string privateKey) { bool isLive = !refundPaymentRequest.sandboxMode; // await this.GetIsLiveSetting(); CreatePaymentRequest paymentRequest = await this._paymentRequestRepository.GetPaymentRequestAsync(refundPaymentRequest.paymentId); // Get Affirm id from storage refundPaymentRequest.authorizationId = paymentRequest.transactionId; int amount = decimal.ToInt32(refundPaymentRequest.value * 100); IAffirmAPI affirmAPI = new AffirmAPI(_httpContextAccessor, _httpClient, isLive, _context); dynamic affirmResponse = await affirmAPI.RefundAsync(publicKey, privateKey, refundPaymentRequest.authorizationId, amount); RefundPaymentResponse refundPaymentResponse = new RefundPaymentResponse { paymentId = refundPaymentRequest.paymentId, refundId = affirmResponse.reference_id ?? affirmResponse.id, value = affirmResponse.amount == null ? 0m : (decimal)affirmResponse.amount / 100m, code = affirmResponse.type ?? affirmResponse.Error.Code, message = affirmResponse.id != null ? $"Id:{affirmResponse.id} Fee={(affirmResponse.fee_refunded > 0 ? (decimal)affirmResponse.fee_refunded / 100m : 0):F2}" : affirmResponse.Error.Message, requestId = refundPaymentRequest.requestId }; if (refundPaymentRequest.authorizationId.StartsWith(AffirmConstants.KatapultIdPrefix)) { // Need to get details from Katapult VtexSettings vtexSettings = await _paymentRequestRepository.GetAppSettings(); if (vtexSettings.enableKatapult) { KatapultFunding katapultResponse = await affirmAPI.KatapultFundingAsync(vtexSettings.katapultPrivateToken); if (katapultResponse != null) { FundingObject fundingObject = katapultResponse.FundingReport.FundingObjects.Where(f => f.OrderId.Equals(paymentRequest.orderId)).FirstOrDefault(); if (fundingObject != null) { refundPaymentResponse.message = $"Id:{affirmResponse.id} Fee={(fundingObject.Discount):F2}"; _context.Vtex.Logger.Info("RefundPayment", null, $"RefundPayment {refundPaymentResponse}"); } } } } return(refundPaymentResponse); }
public override ApiInfo RefundPayment(Order order, IDictionary <string, string> settings) { ApiInfo apiInfo = null; try { order.MustNotBeNull("order"); settings.MustNotBeNull("settings"); RefundPaymentRequest request = new RefundPaymentRequest(order.TransactionInformation.TransactionId, order.TransactionInformation.AmountAuthorized.Value); RefundPaymentResponse response = GetClient(settings).RefundPayment(request); apiInfo = new ApiInfo(response.TransactionId, PaymentState.Refunded); } catch (Exception exp) { LoggingService.Instance.Error <Paynova>("Paynova(" + order.OrderNumber + ") - Refund payment", exp); } return(apiInfo); }
public void RefundPaymentResponse(HttpListenerContext context) { try { RefundPaymentResponse response = ParseResponse <RefundPaymentResponse>(context); if (response != null) { connectorListener.ForEach(listener => listener.OnRefundPaymentResponse(response)); } SendTextResponse(context, ""); } catch (Exception e) { context.Response.StatusCode = 400; context.Response.StatusDescription = e.Message; SendTextResponse(context, "error processing request"); } }
/// <summary> /// https://{{providerApiEndpoint}}/payments/{{paymentId}}/refunds /// </summary> /// <param name="paymentId">VTEX payment ID from this payment</param> /// <param name="refundPaymentRequest"></param> /// <returns></returns> public async Task <IActionResult> RefundPayment(string paymentId) { string privateKey = HttpContext.Request.Headers[AffirmConstants.PrivateKeyHeader]; string publicKey = HttpContext.Request.Headers[AffirmConstants.PublicKeyHeader]; var bodyAsText = await new System.IO.StreamReader(HttpContext.Request.Body).ReadToEndAsync(); RefundPaymentRequest refundPaymentRequest = JsonConvert.DeserializeObject <RefundPaymentRequest>(bodyAsText); if (string.IsNullOrWhiteSpace(privateKey) || string.IsNullOrWhiteSpace(publicKey)) { return(BadRequest()); } else { RefundPaymentResponse refundResponse = await this._affirmPaymentService.RefundPayment(refundPaymentRequest, publicKey, privateKey); _context.Vtex.Logger.Info("RefundPayment", null, $"{bodyAsText} {JsonConvert.SerializeObject(refundResponse)}"); return(Json(refundResponse)); } }
public RefundPaymentResponse Process(RefundPaymentRequest request) { Transaction tx = new Transaction(); tx.TestMode = request.Test; tx.SetRequestParameter("VPSProtocol", "3.00"); tx.SetRequestParameter("TxType", "REFUND"); tx.SetRequestParameter("Vendor", request.Vendor); tx.SetRequestParameter("VendorTxCode", request.VendorTxCode); tx.SetRequestParameter("Amount", request.Amount.ToString()); tx.SetRequestParameter("Currency", request.Currency); tx.SetRequestParameter("Description", request.Description); tx.SetRequestParameter("RelatedVPSTxId", request.RelatedVPSTxId); tx.SetRequestParameter("RelatedVendorTxCode", request.RelatedVendorTxCode); tx.SetRequestParameter("RelatedSecurityKey", request.RelatedSecurityKey); tx.SetRequestParameter("RelatedTxAuthNo", request.RelatedTxAuthNo); tx.SendRefund(); // Receive Response var response = new RefundPaymentResponse(); response.VPSProtocol = tx.GetResponseParameter("VPSProtocol"); response.TxType = "REFUND"; response.Status = tx.GetResponseParameter("Status"); response.StatusDetail = tx.GetResponseParameter("StatusDetail"); response.VpsTxId = tx.GetResponseParameter("VPSTxID"); response.TxAuthNo = tx.GetResponseParameter("TxAuthNo"); if (!String.IsNullOrEmpty(response.StatusDetail)) response.StatusDetail = response.StatusDetail.Replace("'", "`"); return response; }
public void OnRefundPaymentResponse(RefundPaymentResponse response) => Event?.Invoke(this, EventFrom("RefundPaymentResponse", response));
private void websocket_MessageReceived(object sender, MessageReceivedEventArgs e) { // do the parsing of the message, targeted for the callback listener JObject jsonObj = null; try { jsonObj = (JObject)JsonConvert.DeserializeObject(e.Message); } catch (Exception exc) { Console.WriteLine(exc.Message + " => " + e.Message); listeners.ForEach(listener => listener.OnDeviceError(new CloverDeviceErrorEvent(CloverDeviceErrorEvent.CloverDeviceErrorType.EXCEPTION, 0, exc.Message + " => " + e.Message))); return; } JToken method = jsonObj.GetValue(ServicePayloadConstants.PROP_METHOD); if (method == null) { listeners.ForEach(listener => listener.OnDeviceError(new CloverDeviceErrorEvent(CloverDeviceErrorEvent.CloverDeviceErrorType.VALIDATION_ERROR, 0, "Invalid message: " + e.Message))); return; } JObject payload = (JObject)jsonObj.GetValue(ServicePayloadConstants.PROP_PAYLOAD); WebSocketMethod wsm = (WebSocketMethod)Enum.Parse(typeof(WebSocketMethod), method.ToString()); switch (wsm) { case WebSocketMethod.DeviceActivityStart: { CloverDeviceEvent deviceEvent = JsonUtils.deserialize <CloverDeviceEvent>(payload.ToString()); listeners.ForEach(listener => listener.OnDeviceActivityStart(deviceEvent)); break; } case WebSocketMethod.DeviceActivityEnd: { CloverDeviceEvent deviceEvent = JsonUtils.deserialize <CloverDeviceEvent>(payload.ToString()); listeners.ForEach(listener => listener.OnDeviceActivityEnd(deviceEvent)); break; } case WebSocketMethod.DeviceError: { CloverDeviceErrorEvent deviceErrorEvent = JsonUtils.deserialize <CloverDeviceErrorEvent>(payload.ToString()); listeners.ForEach(listener => listener.OnDeviceError(deviceErrorEvent)); break; } case WebSocketMethod.DeviceConnected: { listeners.ForEach(listener => listener.OnDeviceConnected()); break; } case WebSocketMethod.DeviceDisconnected: { listeners.ForEach(listener => listener.OnDeviceDisconnected()); break; } case WebSocketMethod.DeviceReady: { MerchantInfo merchantInfo = JsonUtils.deserialize <MerchantInfo>(payload.ToString()); listeners.ForEach(listener => listener.OnDeviceReady(merchantInfo)); break; } case WebSocketMethod.VerifySignatureRequest: { VerifySignatureRequest svr = JsonUtils.deserialize <VerifySignatureRequest>(payload.ToString()); WebSocketSigVerRequestHandler handler = new WebSocketSigVerRequestHandler(this, svr); listeners.ForEach(listener => listener.OnVerifySignatureRequest(handler)); break; } case WebSocketMethod.SaleResponse: { SaleResponse sr = JsonUtils.deserialize <SaleResponse>(payload.ToString()); listeners.ForEach(listener => listener.OnSaleResponse(sr)); break; } case WebSocketMethod.PreAuthResponse: { PreAuthResponse pr = JsonUtils.deserialize <PreAuthResponse>(payload.ToString()); listeners.ForEach(listener => listener.OnPreAuthResponse(pr)); break; } case WebSocketMethod.AuthResponse: { AuthResponse ar = JsonUtils.deserialize <AuthResponse>(payload.ToString()); listeners.ForEach(listener => listener.OnAuthResponse(ar)); break; } case WebSocketMethod.CapturePreAuthResponse: { CapturePreAuthResponse ar = JsonUtils.deserialize <CapturePreAuthResponse>(payload.ToString()); listeners.ForEach(listener => listener.OnCapturePreAuthResponse(ar)); break; } case WebSocketMethod.RefundPaymentResponse: { RefundPaymentResponse sr = JsonUtils.deserialize <RefundPaymentResponse>(payload.ToString()); listeners.ForEach(listener => listener.OnRefundPaymentResponse(sr)); break; } case WebSocketMethod.VoidPaymentResponse: { VoidPaymentResponse sr = JsonUtils.deserialize <VoidPaymentResponse>(payload.ToString()); listeners.ForEach(listener => listener.OnVoidPaymentResponse(sr)); break; } case WebSocketMethod.ManualRefundResponse: { ManualRefundResponse sr = JsonUtils.deserialize <ManualRefundResponse>(payload.ToString()); listeners.ForEach(listener => listener.OnManualRefundResponse(sr)); break; } case WebSocketMethod.TipAdjustAuthResponse: { TipAdjustAuthResponse taar = JsonUtils.deserialize <TipAdjustAuthResponse>(payload.ToString()); listeners.ForEach(listener => listener.OnTipAdjustAuthResponse(taar)); break; } case WebSocketMethod.VaultCardResponse: { VaultCardResponse vcr = JsonUtils.deserialize <VaultCardResponse>(payload.ToString()); listeners.ForEach(listener => listener.OnVaultCardResponse(vcr)); break; } case WebSocketMethod.ReadCardDataResponse: { ReadCardDataResponse rcdr = JsonUtils.deserialize <ReadCardDataResponse>(payload.ToString()); listeners.ForEach(listener => listener.OnReadCardDataResponse(rcdr)); break; } case WebSocketMethod.CloseoutResponse: { CloseoutResponse cr = JsonUtils.deserialize <CloseoutResponse>(payload.ToString()); listeners.ForEach(listener => listener.OnCloseoutResponse(cr)); break; } case WebSocketMethod.ConfirmPaymentRequest: { ConfirmPaymentRequest cpr = JsonUtils.deserialize <ConfirmPaymentRequest>(payload.ToString()); listeners.ForEach(listener => listener.OnConfirmPaymentRequest(cpr)); break; } case WebSocketMethod.RetrievePendingPaymentsResponse: { RetrievePendingPaymentsResponse rppr = JsonUtils.deserialize <RetrievePendingPaymentsResponse>(payload.ToString()); listeners.ForEach(listener => listener.OnRetrievePendingPaymentsResponse(rppr)); break; } case WebSocketMethod.PrintManualRefundDeclinedReceipt: { PrintManualRefundDeclineReceiptMessage pmrdrm = JsonUtils.deserialize <PrintManualRefundDeclineReceiptMessage>(payload.ToString()); listeners.ForEach(listener => listener.OnPrintManualRefundDeclineReceipt(pmrdrm)); break; } case WebSocketMethod.PrintManualRefundReceipt: { PrintManualRefundReceiptMessage pmrrm = JsonUtils.deserialize <PrintManualRefundReceiptMessage>(payload.ToString()); listeners.ForEach(listener => listener.OnPrintManualRefundReceipt(pmrrm)); break; } case WebSocketMethod.PrintPaymentDeclinedReceipt: { PrintPaymentDeclineReceiptMessage ppdrm = JsonUtils.deserialize <PrintPaymentDeclineReceiptMessage>(payload.ToString()); listeners.ForEach(listener => listener.OnPrintPaymentDeclineReceipt(ppdrm)); break; } case WebSocketMethod.PrintPaymentMerchantCopyReceipt: { PrintPaymentMerchantCopyReceiptMessage ppmcrm = JsonUtils.deserialize <PrintPaymentMerchantCopyReceiptMessage>(payload.ToString()); listeners.ForEach(listener => listener.OnPrintPaymentMerchantCopyReceipt(ppmcrm)); break; } case WebSocketMethod.PrintPaymentReceipt: { PrintPaymentReceiptMessage pprm = JsonUtils.deserialize <PrintPaymentReceiptMessage>(payload.ToString()); listeners.ForEach(listener => listener.OnPrintPaymentReceipt(pprm)); break; } case WebSocketMethod.PrintPaymentRefundReceipt: { PrintRefundPaymentReceiptMessage prprm = JsonUtils.deserialize <PrintRefundPaymentReceiptMessage>(payload.ToString()); listeners.ForEach(listener => listener.OnPrintRefundPaymentReceipt(prprm)); break; } } }
public void OnRefundPaymentResponse(RefundPaymentResponse response) { Send("/RefundPaymentResponse", Serialize(response)); }
public static RefundPaymentResponseShouldBe ShouldBe(this RefundPaymentResponse response) { return(new RefundPaymentResponseShouldBe(response)); }
private void websocket_MessageReceived(object sender, MessageReceivedEventArgs e) { // do the parsing of the message, targeted for the callback listener JObject jsonObj = null; try { jsonObj = (JObject)JsonConvert.DeserializeObject(e.Message); } catch (Exception exc) { Console.WriteLine(exc.Message + " => " + e.Message); listeners.ForEach(listener => listener.OnError(exc)); return; } JToken method = jsonObj.GetValue(ServicePayloadConstants.PROP_METHOD); if (method == null) { listeners.ForEach(listener => listener.OnError(new NullReferenceException("Invalid message: " + e.Message))); return; } JObject payload = (JObject)jsonObj.GetValue(ServicePayloadConstants.PROP_PAYLOAD); WebSocketMethod wsm = (WebSocketMethod)Enum.Parse(typeof(WebSocketMethod), method.ToString()); switch (wsm) { case WebSocketMethod.DeviceActivityStart: { CloverDeviceEvent deviceEvent = JsonUtils.deserialize <CloverDeviceEvent>(payload.ToString()); listeners.ForEach(listener => listener.OnDeviceActivityStart(deviceEvent)); break; } case WebSocketMethod.DeviceActivityEnd: { CloverDeviceEvent deviceEvent = JsonUtils.deserialize <CloverDeviceEvent>(payload.ToString()); listeners.ForEach(listener => listener.OnDeviceActivityEnd(deviceEvent)); break; } case WebSocketMethod.DeviceConnected: { listeners.ForEach(listener => listener.OnDeviceConnected()); break; } case WebSocketMethod.DeviceDisconnected: { listeners.ForEach(listener => listener.OnDeviceDisconnected()); break; } case WebSocketMethod.DeviceReady: { listeners.ForEach(listener => listener.OnDeviceReady()); break; } case WebSocketMethod.SignatureVerifyRequest: { SignatureVerifyRequest svr = JsonUtils.deserialize <SignatureVerifyRequest>(payload.ToString()); WebSocketSigVerRequestHandler handler = new WebSocketSigVerRequestHandler(this, svr); listeners.ForEach(listener => listener.OnSignatureVerifyRequest(handler)); break; } case WebSocketMethod.SaleResponse: { SaleResponse sr = JsonUtils.deserialize <SaleResponse>(payload.ToString()); listeners.ForEach(listener => listener.OnSaleResponse(sr)); break; } case WebSocketMethod.AuthResponse: { AuthResponse sr = JsonUtils.deserialize <AuthResponse>(payload.ToString()); listeners.ForEach(listener => listener.OnAuthResponse(sr)); break; } case WebSocketMethod.RefundPaymentResponse: { RefundPaymentResponse sr = JsonUtils.deserialize <RefundPaymentResponse>(payload.ToString()); listeners.ForEach(listener => listener.OnRefundPaymentResponse(sr)); break; } case WebSocketMethod.VoidPaymentResponse: { VoidPaymentResponse sr = JsonUtils.deserialize <VoidPaymentResponse>(payload.ToString()); listeners.ForEach(listener => listener.OnVoidPaymentResponse(sr)); break; } case WebSocketMethod.ManualRefundResponse: { ManualRefundResponse sr = JsonUtils.deserialize <ManualRefundResponse>(payload.ToString()); listeners.ForEach(listener => listener.OnManualRefundResponse(sr)); break; } case WebSocketMethod.TipAdjustAuthResponse: { TipAdjustAuthResponse taar = JsonUtils.deserialize <TipAdjustAuthResponse>(payload.ToString()); listeners.ForEach(listener => listener.OnAuthTipAdjustResponse(taar)); break; } case WebSocketMethod.VaultCardResponse: { VaultCardResponse vcr = JsonUtils.deserialize <VaultCardResponse>(payload.ToString()); listeners.ForEach(listener => listener.OnVaultCardResponse(vcr)); break; } } }
public override void OnRefundPaymentResponse(RefundPaymentResponse response) { System.Console.WriteLine("Refund Payment Response:" + response.Refund.amount); this.refundPaymentResponse = response; this.hasResponse = true; }
public RefundPaymentResponse Refund(RefundPaymentRequest refundPaymentRequest) { var result = new RefundPaymentResponse(); result.AddError("Refund method not supported"); return result; }
public void OnRefundPaymentResponse(RefundPaymentResponse p0) { }
public void RefundPaymentResponse(RefundPaymentResponse response) { Console.WriteLine("RefundPaymentResponse: " + response.OrderId); connectorListener.ForEach(listener => listener.OnRefundPaymentResponse(response)); }
public void OnRefundPaymentResponse(RefundPaymentResponse response) { Program.WriteLine(MethodBase.GetCurrentMethod().Name); }
public void OnRefundPaymentResponse(RefundPaymentResponse response) => RefundPaymentResponse?.Invoke(this, response);