diff --git a/src/webhook/webhook_handler.go b/src/webhook/webhook_handler.go index 13c67a9f5..3157400f2 100644 --- a/src/webhook/webhook_handler.go +++ b/src/webhook/webhook_handler.go @@ -6,33 +6,44 @@ import ( // Event codes const ( + EventCodeACHNotificationOfChange = "ACH_NOTIFICATION_OF_CHANGE" EventCodeAuthorisation = "AUTHORISATION" EventCodeAuthorisationAdjustment = "AUTHORISATION_ADJUSTMENT" + EventCodeAutorescue = "AUTORESCUE" + EventCodeAutorescueNextAttempt = "AUTORESCUE_NEXT_ATTEMPT" EventCodeCancellation = "CANCELLATION" + EventCodeCancelAutorescue = "CANCEL_AUTORESCUE" EventCodeCancelOrRefund = "CANCEL_OR_REFUND" EventCodeCapture = "CAPTURE" EventCodeCaptureFailed = "CAPTURE_FAILED" - EventCodeHandledExternally = "HANDLED_EXTERNALLY" - EventOrderOpened = "ORDER_OPENED" - EventOrderClosed = "ORDER_CLOSED" - EventCodeRefund = "REFUND" - EventCodeRefundFailed = "REFUND_FAILED" - EventCodeRefundedReversed = "REFUNDED_REVERSED" - EventCodeRefundWithData = "REFUND_WITH_DATA" - EventCodeReportAvailable = "REPORT_AVAILABLE" - EventCodeVoidPendingRefund = "VOID_PENDING_REFUND" EventCodeChargeback = "CHARGEBACK" EventCodeChargebackReversed = "CHARGEBACK_REVERSED" + EventCodeExpire = "EXPIRE" + EventCodeHandledExternally = "HANDLED_EXTERNALLY" + EventCodeManualReviewAccept = "MANUAL_REVIEW_ACCEPT" + EventCodeManualReviewReject = "MANUAL_REVIEW_REJECT" EventCodeNotificationOfChargeback = "NOTIFICATION_OF_CHARGEBACK" EventCodeNotificationOfFraud = "NOTIFICATION_OF_FRAUD" + EventCodeOfferClosed = "OFFER_CLOSED" + EventCodePaidoutReversed = "PAIDOUT_REVERSED" + EventCodePayoutDecline = "PAYOUT_DECLINE" + EventCodePayoutExpire = "PAYOUT_EXPIRE" + EventCodePayoutThirdparty = "PAYOUT_THIRDPARTY" + EventCodePostponedRefund = "POSTPONED_REFUND" EventCodePrearbitrationLost = "PREARBITRATION_LOST" EventCodePrearbitrationWon = "PREARBITRATION_WON" + EventCodeRecurringContract = "RECURRING_CONTRACT" + EventCodeRefund = "REFUND" + EventCodeRefundFailed = "REFUND_FAILED" + EventCodeRefundWithData = "REFUND_WITH_DATA" + EventCodeRefundedReversed = "REFUNDED_REVERSED" + EventCodeReportAvailable = "REPORT_AVAILABLE" EventCodeRequestForInformation = "REQUEST_FOR_INFORMATION" EventCodeSecondChargeback = "SECOND_CHARGEBACK" - EventCodePayoutExpire = "PAYOUT_EXPIRE" - EventCodePayoutDecline = "PAYOUT_DECLINE" - EventCodePayoutThirdparty = "PAYOUT_THIRDPARTY" - EventCodePaidoutReversed = "PAIDOUT_REVERSED" + EventCodeTechnicalCancel = "TECHNICAL_CANCEL" + EventCodeVoidPendingRefund = "VOID_PENDING_REFUND" + EventOrderClosed = "ORDER_CLOSED" + EventOrderOpened = "ORDER_OPENED" ) // Additional Data diff --git a/tests/webhook_handler_test.go b/tests/webhook_handler_test.go index 0243a59ee..e8465c3e8 100644 --- a/tests/webhook_handler_test.go +++ b/tests/webhook_handler_test.go @@ -110,6 +110,84 @@ func TestWebhook_HandleRequest(t *testing.T) { }, false, }, + { + "should return autorescue success", + `{ + "live": "false", + "notificationItems": [ + { + "NotificationRequestItem": { + "additionalData": { + "retry.rescueReference": "8826173525728789", + "merchantOrderReference": "8826173525728789", + "hmacSignature": "4g+4ivKK3zox/STWD/K9sDibL/8Ze+fD6ojOCOY=" + }, + "amount": { + "currency": "EUR", + "value": 1000 + }, + "eventCode": "AUTORESCUE", + "eventDate": "2021-01-01T01:00:00+01:00", + "merchantAccountCode": "MagentoMerchantTest2", + "merchantReference": "8313842560770002", + "originalReference": "9913140798220028", + "pspReference": "QFQTPCQ8HXSKGK82", + "reason": "", + "success": "true" + } + } + ] + } + `, + func(got *webhook.Webhook, t *testing.T) { + require.NotNil(t, got) + assert.Equal(t, 1, len(got.GetNotificationItems())) + ni := got.GetNotificationItems()[0] + assert.Equal(t, webhook.EventCodeAutorescue, ni.EventCode) + assert.Equal(t, "true", ni.Success) + assert.Equal(t, "QFQTPCQ8HXSKGK82", ni.PspReference) + assert.Equal(t, "9913140798220028", ni.OriginalReference) + }, + false, + }, + { + "should return offer closed success", + `{ + "live": "false", + "notificationItems": [ + { + "NotificationRequestItem": { + "additionalData": { + "hmacSignature": "t5GOcOQp52ShqINFx+awWdwfduSJK5hWNbBF9/yw=", + "paymentMethodVariant": "ideal" + }, + "amount": { + "currency": "EUR", + "value": 1000 + }, + "eventCode": "OFFER_CLOSED", + "eventDate": "2021-01-01T01:00:00+01:00", + "merchantAccountCode": "MagentoMerchantTest2", + "merchantReference": "8313842560770003", + "paymentMethod": "ideal", + "pspReference": "QFQTPCQ8HXSKGK82", + "reason": "", + "success": "true" + } + } + ] + } + `, + func(got *webhook.Webhook, t *testing.T) { + require.NotNil(t, got) + assert.Equal(t, 1, len(got.GetNotificationItems())) + ni := got.GetNotificationItems()[0] + assert.Equal(t, webhook.EventCodeOfferClosed, ni.EventCode) + assert.Equal(t, "true", ni.Success) + assert.Equal(t, "QFQTPCQ8HXSKGK82", ni.PspReference) + }, + false, + }, { "should return refund fail", `{