Esempio n. 1
0
        public void MarketPayTransferFundsNotificationTest()
        {
            string json = GetFileContents("Mocks/marketpay/notification/transfer-funds-test.json");
            NotificationHandler       notificationHandler = new NotificationHandler();
            IGenericNotification      notificationMessage = notificationHandler.HandleMarketpayNotificationJson(json);
            TransferFundsNotification notification        = (TransferFundsNotification)notificationMessage;

            Assert.AreEqual("TRANSFER_FUNDS", notification.EventType);
            Assert.IsNotNull(notification.Content);
            Assert.AreEqual(1000L, notification.Content.Amount.Value);
            Assert.AreEqual("testTransferCode", notification.Content.TransferCode);
            Assert.IsNotNull(notification.Error);
            Assert.AreEqual("000", notification.Error.ErrorCode);
            Assert.AreEqual("test error message", notification.Error.Message);

            Assert.IsNotNull(notification.Content.InvalidFields);
            Assert.AreEqual(1, notification.Content.InvalidFields.Count);
        }
        public override object ReadJson(JsonReader reader,
                                        Type objectType, object existingValue,
                                        JsonSerializer serializer)
        {
            var jsonObject   = JObject.Load(reader);
            var notification = default(IGenericNotification);

            switch (jsonObject["eventType"].ToString())
            {
            case "ACCOUNT_CREATED":
                notification = new AccountCreateNotification();
                break;

            case "ACCOUNT_CLOSED":
                notification = new AccountCloseNotification();
                break;

            case "ACCOUNT_UPDATED":
                notification = new AccountUpdateNotification();
                break;

            case "ACCOUNT_FUNDS_BELOW_THRESHOLD":
                notification = new AccountFundsBelowThresholdNotification();
                break;

            case "ACCOUNT_HOLDER_CREATED":
                notification = new AccountHolderCreateNotification();
                break;

            case "ACCOUNT_HOLDER_VERIFICATION":
                notification = new AccountHolderVerificationNotification();
                break;

            case "ACCOUNT_HOLDER_STATUS_CHANGE":
                notification = new AccountHolderStatusChangeNotification();
                break;

            case "ACCOUNT_HOLDER_PAYOUT":
                notification = new AccountHolderPayoutNotification();
                break;

            case "ACCOUNT_HOLDER_UPDATED":
                notification = new AccountHolderUpdateNotification();
                break;

            case "ACCOUNT_HOLDER_STORE_STATUS_CHANGE":
                notification = new AccountHolderStoreStatusChangeNotification();
                break;

            case "ACCOUNT_HOLDER_UPCOMING_DEADLINE":
                notification = new AccountHolderUpcomingDeadlineNotification();
                break;

            case "BENEFICIARY_SETUP":
                notification = new BeneficiarySetupNotification();
                break;

            case "SCHEDULED_REFUNDS":
                notification = new ScheduledRefundsNotification();
                break;

            case "COMPENSATE_NEGATIVE_BALANCE":
                notification = new CompensateNegativeBalanceNotification();
                break;

            case "PAYMENT_FAILURE":
                notification = new PaymentFailureNotification();
                break;

            case "REPORT_AVAILABLE":
                notification = new ReportAvailableNotification();
                break;

            case "TRANSFER_FUNDS":
                notification = new TransferFundsNotification();
                break;

            case "DIRECT_DEBIT_INITIATED":
                notification = new DirectDebitInitiatedNotification();
                break;

            case "REFUND_FUNDS_TRANSFER":
                notification = new RefundFundsTransferNotification();
                break;
            }

            serializer.Populate(jsonObject.CreateReader(), notification);
            return(notification);
        }