public void CanConvertToJsonFull()
        {
            // arrange
            var chargePermissionId = "S02-7331650-8246451";
            var request            = new CreateChargeRequest(chargePermissionId, 12.99M, Currency.EUR);

            request.ProviderMetadata.ProviderReferenceId = "foo";
            request.SoftDescriptor = "foo";
            request.CaptureNow     = true;
            request.CanHandlePendingAuthorization = true;

            // act
            string json  = request.ToJson();
            string json2 = request.ToJson();

            // assert
            Assert.AreEqual(json, json2);
            Assert.AreEqual("{\"chargePermissionId\":\"S02-7331650-8246451\",\"chargeAmount\":{\"amount\":12.99,\"currencyCode\":\"EUR\"},\"captureNow\":true,\"softDescriptor\":\"foo\",\"canHandlePendingAuthorization\":true,\"providerMetadata\":{\"providerReferenceId\":\"foo\"}}", json);
        }
        public void CanConvertToJsonRecurring()
        {
            // arrange
            var chargePermissionId = "S02-7331650-8246451";
            var request            = new CreateChargeRequest(chargePermissionId, 12.99M, Currency.EUR);

            request.ProviderMetadata.ProviderReferenceId = "foo1";
            request.SoftDescriptor = "foo2";
            request.CaptureNow     = true;
            request.CanHandlePendingAuthorization        = true;
            request.MerchantMetadata.MerchantReferenceId = "123abc!";
            request.MerchantMetadata.MerchantStoreName   = "My Store Name";
            request.MerchantMetadata.NoteToBuyer         = "My Note to Buyer";
            request.MerchantMetadata.CustomInformation   = "My Custom Info";

            // act
            string json  = request.ToJson();
            string json2 = request.ToJson();

            // assert
            Assert.AreEqual(json, json2);
            Assert.AreEqual("{\"chargePermissionId\":\"S02-7331650-8246451\",\"chargeAmount\":{\"amount\":12.99,\"currencyCode\":\"EUR\"},\"captureNow\":true,\"softDescriptor\":\"foo2\",\"canHandlePendingAuthorization\":true,\"providerMetadata\":{\"providerReferenceId\":\"foo1\"},\"merchantMetadata\":{\"merchantReferenceId\":\"123abc!\",\"merchantStoreName\":\"My Store Name\",\"noteToBuyer\":\"My Note to Buyer\",\"customInformation\":\"My Custom Info\"}}", json);
        }