braintree 2.101.0 → 2.102.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/braintree/credit_card_gateway.rb +13 -0
- data/lib/braintree/error_codes.rb +23 -0
- data/lib/braintree/payment_method_gateway.rb +12 -0
- data/lib/braintree/payment_method_nonce.rb +2 -0
- data/lib/braintree/payment_method_nonce_gateway.rb +13 -2
- data/lib/braintree/test/authentication_id.rb +21 -0
- data/lib/braintree/test/nonce.rb +14 -0
- data/lib/braintree/transaction.rb +1 -0
- data/lib/braintree/version.rb +1 -1
- data/lib/braintree/webhook_notification.rb +3 -0
- data/lib/braintree/webhook_testing_gateway.rb +243 -0
- data/spec/integration/braintree/client_api/spec_helper.rb +80 -73
- data/spec/integration/braintree/credit_card_spec.rb +99 -0
- data/spec/integration/braintree/customer_spec.rb +113 -0
- data/spec/integration/braintree/document_upload_spec.rb +12 -0
- data/spec/integration/braintree/payment_method_nonce_spec.rb +77 -0
- data/spec/integration/braintree/payment_method_spec.rb +109 -0
- data/spec/integration/braintree/transaction_spec.rb +1 -0
- data/spec/unit/braintree/credit_card_spec.rb +22 -2
- data/spec/unit/braintree/customer_spec.rb +22 -2
- data/spec/unit/braintree/webhook_notification_spec.rb +48 -0
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dadf0e37290b308d07f0856ce1b98b46dd24545c7aabd504516f9a07c8d6937f
|
4
|
+
data.tar.gz: 46cd35b0d94e2a48db329c7699df7288bf5db85a47bc965847db0ddb2b1794b9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c8af0480b494e769733cb03fc98813483c085fb567be2962af22dc6cae2cd162e448693047da262796b2686dd4ec0c778eef26614e93a20410660667329f7061
|
7
|
+
data.tar.gz: 4f046887ad84d29b41f09f6927ae5a7d19e0710a98ea5ce31355a74c7361805c1c0d3432e273a852862d8ccb0f5506baea60241785d4c0d105592fc988b71f67
|
@@ -118,6 +118,19 @@ module Braintree
|
|
118
118
|
{:billing_address => billing_address_params}
|
119
119
|
]
|
120
120
|
|
121
|
+
signature << {
|
122
|
+
:three_d_secure_pass_thru => [
|
123
|
+
:eci_flag,
|
124
|
+
:cavv,
|
125
|
+
:xid,
|
126
|
+
:three_d_secure_version,
|
127
|
+
:authentication_response,
|
128
|
+
:directory_response,
|
129
|
+
:cavv_algorithm,
|
130
|
+
:ds_transaction_id,
|
131
|
+
]
|
132
|
+
}
|
133
|
+
|
121
134
|
case type
|
122
135
|
when :create
|
123
136
|
signature << :customer_id
|
@@ -181,6 +181,7 @@ module Braintree
|
|
181
181
|
FileTypeIsInvalid = "84903"
|
182
182
|
FileIsMalformedOrEncrypted = "84904"
|
183
183
|
FileIsTooLong = "84905"
|
184
|
+
FileIsEmpty = "84906"
|
184
185
|
end
|
185
186
|
|
186
187
|
module PayPalAccount
|
@@ -767,6 +768,28 @@ module Braintree
|
|
767
768
|
AccountTypeIsInvalid = "942184"
|
768
769
|
AccountTypeNotSupported = "942185"
|
769
770
|
end
|
771
|
+
|
772
|
+
ThreeDSecureAuthenticationIdIsInvalid = "942196"
|
773
|
+
ThreeDSecureAuthenticationIdDoesntMatchNonceThreeDSecureAuthentication = "942198"
|
774
|
+
ThreeDSecureTransactionPaymentMethodDoesntMatchThreeDSecureAuthenticationPaymentMethod = "942197"
|
775
|
+
ThreeDSecureAuthenticationIdWithThreeDSecurePassThruIsInvalid = "942199"
|
776
|
+
ThreeDSecureAuthenticationFailed = "94271"
|
777
|
+
ThreeDSecureTokenIsInvalid = "94268"
|
778
|
+
ThreeDSecureVerificationDataDoesntMatchVerify = "94270"
|
779
|
+
MerchantAccountDoesNotSupport3DSecure = "942169"
|
780
|
+
MerchantAcountDoesNotMatch3DSecureMerchantAccount = "94284"
|
781
|
+
AmountDoesNotMatch3DSecureAmount = "94285"
|
782
|
+
|
783
|
+
module ThreeDSecurePassThru
|
784
|
+
EciFlagIsRequired = "942113"
|
785
|
+
EciFlagIsInvalid = "942114"
|
786
|
+
CavvIsRequired = "942116"
|
787
|
+
ThreeDSecureVersionIsRequired = "942117"
|
788
|
+
ThreeDSecureVersionIsInvalid = "942119"
|
789
|
+
AuthenticationResponseIsInvalid = "942120"
|
790
|
+
DirectoryResponseIsInvalid = "942121"
|
791
|
+
CavvAlgorithmIsInvalid = "942122"
|
792
|
+
end
|
770
793
|
end
|
771
794
|
|
772
795
|
module UsBankAccountVerification
|
@@ -172,6 +172,18 @@ module Braintree
|
|
172
172
|
{:options => options},
|
173
173
|
{:billing_address => billing_address_params}
|
174
174
|
]
|
175
|
+
signature << {
|
176
|
+
:three_d_secure_pass_thru => [
|
177
|
+
:eci_flag,
|
178
|
+
:cavv,
|
179
|
+
:xid,
|
180
|
+
:three_d_secure_version,
|
181
|
+
:authentication_response,
|
182
|
+
:directory_response,
|
183
|
+
:cavv_algorithm,
|
184
|
+
:ds_transaction_id,
|
185
|
+
]
|
186
|
+
}
|
175
187
|
|
176
188
|
case type
|
177
189
|
when :create
|
@@ -19,12 +19,14 @@ module Braintree
|
|
19
19
|
attr_reader :nonce
|
20
20
|
attr_reader :three_d_secure_info
|
21
21
|
attr_reader :type
|
22
|
+
attr_reader :authentication_insight
|
22
23
|
|
23
24
|
def initialize(gateway, attributes) # :nodoc:
|
24
25
|
@gateway = gateway
|
25
26
|
@nonce = attributes.fetch(:nonce)
|
26
27
|
@type = attributes.fetch(:type)
|
27
28
|
@details = attributes.fetch(:details)
|
29
|
+
@authentication_insight = attributes.fetch(:authentication_insight, nil)
|
28
30
|
@three_d_secure_info = ThreeDSecureInfo.new(attributes[:three_d_secure_info]) if attributes[:three_d_secure_info]
|
29
31
|
@bin_data = BinData.new(attributes[:bin_data]) if attributes[:bin_data]
|
30
32
|
end
|
@@ -8,12 +8,23 @@ module Braintree
|
|
8
8
|
@config.assert_has_access_token_or_keys
|
9
9
|
end
|
10
10
|
|
11
|
-
def create(payment_method_token)
|
12
|
-
|
11
|
+
def create(payment_method_token, args = { payment_method_nonce: {} })
|
12
|
+
Util.verify_keys(PaymentMethodNonceGateway._create_signature, args)
|
13
|
+
|
14
|
+
response = @config.http.post("#{@config.base_merchant_path}/payment_methods/#{payment_method_token}/nonces", args)
|
13
15
|
payment_method_nonce = PaymentMethodNonce._new(@gateway, response.fetch(:payment_method_nonce))
|
14
16
|
SuccessfulResult.new(:payment_method_nonce => payment_method_nonce)
|
15
17
|
end
|
16
18
|
|
19
|
+
def self._create_signature
|
20
|
+
[ {
|
21
|
+
:payment_method_nonce=> [
|
22
|
+
:merchant_account_id, :authentication_insight,
|
23
|
+
{:authentication_insight_options => [:amount, :recurring_customer_consent, :recurring_max_amount]}
|
24
|
+
]
|
25
|
+
}]
|
26
|
+
end
|
27
|
+
|
17
28
|
def create!(*args)
|
18
29
|
return_object_or_raise(:payment_method_nonce) { create(*args) }
|
19
30
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Braintree
|
2
|
+
module Test
|
3
|
+
module AuthenticationId
|
4
|
+
ThreeDSecureVisaFullAuthentication = "fake-three-d-secure-visa-full-authentication-id"
|
5
|
+
ThreeDSecureVisaLookupTimeout = "fake-three-d-secure-visa-lookup-timeout-id"
|
6
|
+
ThreeDSecureVisaFailedSignature = "fake-three-d-secure-visa-failed-signature-id"
|
7
|
+
ThreeDSecureVisaFailedAuthentication = "fake-three-d-secure-visa-failed-authentication-id"
|
8
|
+
ThreeDSecureVisaAttemptsNonParticipating = "fake-three-d-secure-visa-attempts-non-participating-id"
|
9
|
+
ThreeDSecureVisaNoteEnrolled = "fake-three-d-secure-visa-not-enrolled-id"
|
10
|
+
ThreeDSecureVisaUnavailable = "fake-three-d-secure-visa-unavailable-id"
|
11
|
+
ThreeDSecureVisaMPILookupError = "fake-three-d-secure-visa-mpi-lookup-error-id"
|
12
|
+
ThreeDSecureVisaMPIAuthenticateError = "fake-three-d-secure-visa-mpi-authenticate-error-id"
|
13
|
+
ThreeDSecureVisaAuthenticationUnavailable = "fake-three-d-secure-visa-authentication-unavailable-id"
|
14
|
+
ThreeDSecureVisaBypassedAuthentication = "fake-three-d-secure-visa-bypassed-authentication-id"
|
15
|
+
ThreeDSecureTwoVisaSuccessfulFrictionlessAuthentication = "fake-three-d-secure-two-visa-successful-frictionless-authentication-id"
|
16
|
+
ThreeDSecureTwoVisaSuccessfulStepUpAuthentication = "fake-three-d-secure-two-visa-successful-step-up-authentication-id"
|
17
|
+
ThreeDSecureTwoVisaErrorOnLookup = "fake-three-d-secure-two-visa-error-on-lookup-id"
|
18
|
+
ThreeDSecureTwoVisaTimeoutOnLookup = "fake-three-d-secure-two-visa-timeout-on-lookup-id"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/braintree/test/nonce.rb
CHANGED
@@ -21,6 +21,20 @@ module Braintree
|
|
21
21
|
VenmoAccount = "fake-venmo-account-nonce"
|
22
22
|
VenmoAccountTokenIssuanceError = "fake-token-issuance-error-venmo-account-nonce"
|
23
23
|
ThreeDSecureVisaFullAuthentication = "fake-three-d-secure-visa-full-authentication-nonce"
|
24
|
+
ThreeDSecureVisaLookupTimeout = "fake-three-d-secure-visa-lookup-timeout-nonce"
|
25
|
+
ThreeDSecureVisaFailedSignature = "fake-three-d-secure-visa-failed-signature-nonce"
|
26
|
+
ThreeDSecureVisaFailedAuthentication = "fake-three-d-secure-visa-failed-authentication-nonce"
|
27
|
+
ThreeDSecureVisaAttemptsNonParticipating = "fake-three-d-secure-visa-attempts-non-participating-nonce"
|
28
|
+
ThreeDSecureVisaNoteEnrolled = "fake-three-d-secure-visa-not-enrolled-nonce"
|
29
|
+
ThreeDSecureVisaUnavailable = "fake-three-d-secure-visa-unavailable-nonce"
|
30
|
+
ThreeDSecureVisaMPILookupError = "fake-three-d-secure-visa-mpi-lookup-error-nonce"
|
31
|
+
ThreeDSecureVisaMPIAuthenticateError = "fake-three-d-secure-visa-mpi-authenticate-error-nonce"
|
32
|
+
ThreeDSecureVisaAuthenticationUnavailable = "fake-three-d-secure-visa-authentication-unavailable-nonce"
|
33
|
+
ThreeDSecureVisaBypassedAuthentication = "fake-three-d-secure-visa-bypassed-authentication-nonce"
|
34
|
+
ThreeDSecureTwoVisaSuccessfulFrictionlessAuthentication = "fake-three-d-secure-two-visa-successful-frictionless-authentication-nonce"
|
35
|
+
ThreeDSecureTwoVisaSuccessfulStepUpAuthentication = "fake-three-d-secure-two-visa-successful-step-up-authentication-nonce"
|
36
|
+
ThreeDSecureTwoVisaErrorOnLookup = "fake-three-d-secure-two-visa-error-on-lookup-nonce"
|
37
|
+
ThreeDSecureTwoVisaTimeoutOnLookup = "fake-three-d-secure-two-visa-timeout-on-lookup-nonce"
|
24
38
|
TransactableVisa = "fake-valid-visa-nonce"
|
25
39
|
TransactableAmEx = "fake-valid-amex-nonce"
|
26
40
|
TransactableMasterCard = "fake-valid-mastercard-nonce"
|
@@ -166,6 +166,7 @@ module Braintree
|
|
166
166
|
attr_reader :venmo_account_details
|
167
167
|
attr_reader :visa_checkout_card_details
|
168
168
|
attr_reader :voice_referral_number
|
169
|
+
attr_reader :retrieval_reference_number
|
169
170
|
|
170
171
|
def self.create(*args)
|
171
172
|
Configuration.gateway.transaction.create(*args)
|
data/lib/braintree/version.rb
CHANGED
@@ -13,6 +13,9 @@ module Braintree
|
|
13
13
|
DisputeOpened = "dispute_opened"
|
14
14
|
DisputeLost = "dispute_lost"
|
15
15
|
DisputeWon = "dispute_won"
|
16
|
+
DisputeAccepted = "dispute_accepted"
|
17
|
+
DisputeDisputed = "dispute_disputed"
|
18
|
+
DisputeExpired = "dispute_expired"
|
16
19
|
|
17
20
|
SubscriptionCanceled = "subscription_canceled"
|
18
21
|
SubscriptionChargedSuccessfully = "subscription_charged_successfully"
|
@@ -40,6 +40,12 @@ module Braintree
|
|
40
40
|
_dispute_lost_sample_xml(id)
|
41
41
|
when Braintree::WebhookNotification::Kind::DisputeWon
|
42
42
|
_dispute_won_sample_xml(id)
|
43
|
+
when Braintree::WebhookNotification::Kind::DisputeAccepted
|
44
|
+
_dispute_accepted_sample_xml(id)
|
45
|
+
when Braintree::WebhookNotification::Kind::DisputeDisputed
|
46
|
+
_dispute_disputed_sample_xml(id)
|
47
|
+
when Braintree::WebhookNotification::Kind::DisputeExpired
|
48
|
+
_dispute_expired_sample_xml(id)
|
43
49
|
when Braintree::WebhookNotification::Kind::PartnerMerchantConnected
|
44
50
|
_partner_merchant_connected_sample_xml(id)
|
45
51
|
when Braintree::WebhookNotification::Kind::PartnerMerchantDisconnected
|
@@ -309,6 +315,30 @@ module Braintree
|
|
309
315
|
end
|
310
316
|
end
|
311
317
|
|
318
|
+
def _dispute_accepted_sample_xml(id)
|
319
|
+
if id == "legacy_dispute_id"
|
320
|
+
_old_dispute_accepted_sample_xml(id)
|
321
|
+
else
|
322
|
+
_new_dispute_accepted_sample_xml(id)
|
323
|
+
end
|
324
|
+
end
|
325
|
+
|
326
|
+
def _dispute_disputed_sample_xml(id)
|
327
|
+
if id == "legacy_dispute_id"
|
328
|
+
_old_dispute_disputed_sample_xml(id)
|
329
|
+
else
|
330
|
+
_new_dispute_disputed_sample_xml(id)
|
331
|
+
end
|
332
|
+
end
|
333
|
+
|
334
|
+
def _dispute_expired_sample_xml(id)
|
335
|
+
if id == "legacy_dispute_id"
|
336
|
+
_old_dispute_expired_sample_xml(id)
|
337
|
+
else
|
338
|
+
_new_dispute_expired_sample_xml(id)
|
339
|
+
end
|
340
|
+
end
|
341
|
+
|
312
342
|
def _old_dispute_opened_sample_xml(id)
|
313
343
|
<<-XML
|
314
344
|
<dispute>
|
@@ -370,6 +400,66 @@ module Braintree
|
|
370
400
|
XML
|
371
401
|
end
|
372
402
|
|
403
|
+
def _old_dispute_accepted_sample_xml(id)
|
404
|
+
<<-XML
|
405
|
+
<dispute>
|
406
|
+
<amount>100.00</amount>
|
407
|
+
<currency-iso-code>USD</currency-iso-code>
|
408
|
+
<received-date type="date">2014-03-01</received-date>
|
409
|
+
<reply-by-date type="date">2014-03-21</reply-by-date>
|
410
|
+
<kind>chargeback</kind>
|
411
|
+
<status>accepted</status>
|
412
|
+
<reason>fraud</reason>
|
413
|
+
<id>#{id}</id>
|
414
|
+
<transaction>
|
415
|
+
<id>#{id}</id>
|
416
|
+
<amount>100.00</amount>
|
417
|
+
</transaction>
|
418
|
+
<date-opened type=\"date\">2014-03-21</date-opened>
|
419
|
+
</dispute>
|
420
|
+
XML
|
421
|
+
end
|
422
|
+
|
423
|
+
def _old_dispute_disputed_sample_xml(id)
|
424
|
+
<<-XML
|
425
|
+
<dispute>
|
426
|
+
<amount>100.00</amount>
|
427
|
+
<currency-iso-code>USD</currency-iso-code>
|
428
|
+
<received-date type="date">2014-03-01</received-date>
|
429
|
+
<reply-by-date type="date">2014-03-21</reply-by-date>
|
430
|
+
<kind>chargeback</kind>
|
431
|
+
<status>disputed</status>
|
432
|
+
<reason>fraud</reason>
|
433
|
+
<id>#{id}</id>
|
434
|
+
<transaction>
|
435
|
+
<id>#{id}</id>
|
436
|
+
<amount>100.00</amount>
|
437
|
+
</transaction>
|
438
|
+
<date-opened type=\"date\">2014-03-21</date-opened>
|
439
|
+
</dispute>
|
440
|
+
XML
|
441
|
+
end
|
442
|
+
|
443
|
+
def _old_dispute_expired_sample_xml(id)
|
444
|
+
<<-XML
|
445
|
+
<dispute>
|
446
|
+
<amount>100.00</amount>
|
447
|
+
<currency-iso-code>USD</currency-iso-code>
|
448
|
+
<received-date type="date">2014-03-01</received-date>
|
449
|
+
<reply-by-date type="date">2014-03-21</reply-by-date>
|
450
|
+
<kind>chargeback</kind>
|
451
|
+
<status>expired</status>
|
452
|
+
<reason>fraud</reason>
|
453
|
+
<id>#{id}</id>
|
454
|
+
<transaction>
|
455
|
+
<id>#{id}</id>
|
456
|
+
<amount>100.00</amount>
|
457
|
+
</transaction>
|
458
|
+
<date-opened type=\"date\">2014-03-21</date-opened>
|
459
|
+
</dispute>
|
460
|
+
XML
|
461
|
+
end
|
462
|
+
|
373
463
|
def _new_dispute_opened_sample_xml(id)
|
374
464
|
<<-XML
|
375
465
|
<dispute>
|
@@ -535,6 +625,159 @@ module Braintree
|
|
535
625
|
XML
|
536
626
|
end
|
537
627
|
|
628
|
+
def _new_dispute_accepted_sample_xml(id)
|
629
|
+
<<-XML
|
630
|
+
<dispute>
|
631
|
+
<id>#{id}</id>
|
632
|
+
<amount>100.00</amount>
|
633
|
+
<amount-disputed>100.00</amount-disputed>
|
634
|
+
<amount-won>95.00</amount-won>
|
635
|
+
<case-number>CASE-12345</case-number>
|
636
|
+
<created-at type="datetime">2017-06-16T20:44:41Z</created-at>
|
637
|
+
<currency-iso-code>USD</currency-iso-code>
|
638
|
+
<forwarded-comments nil="true"/>
|
639
|
+
<kind>chargeback</kind>
|
640
|
+
<merchant-account-id>ytnlulaloidoqwvzxjrdqputg</merchant-account-id>
|
641
|
+
<reason>fraud</reason>
|
642
|
+
<reason-code nil="true"/>
|
643
|
+
<reason-description nil="true"/>
|
644
|
+
<received-date type="date">2016-02-15</received-date>
|
645
|
+
<reference-number>REF-9876</reference-number>
|
646
|
+
<reply-by-date type="date">2016-02-22</reply-by-date>
|
647
|
+
<status>accepted</status>
|
648
|
+
<updated-at type="datetime">2017-06-16T20:44:41Z</updated-at>
|
649
|
+
<original-dispute-id>9qde5qgp</original-dispute-id>
|
650
|
+
<status-history type="array">
|
651
|
+
<status-history>
|
652
|
+
<status>open</status>
|
653
|
+
<timestamp type="datetime">2017-06-16T20:44:41Z</timestamp>
|
654
|
+
</status-history>
|
655
|
+
<status-history>
|
656
|
+
<status>accepted</status>
|
657
|
+
<timestamp type="datetime">2017-06-25T20:50:55Z</timestamp>
|
658
|
+
</status-history>
|
659
|
+
</status-history>
|
660
|
+
<evidence type="array"/>
|
661
|
+
<transaction>
|
662
|
+
<id>#{id}</id>
|
663
|
+
<amount>100.00</amount>
|
664
|
+
<created-at>2017-06-21T20:44:41Z</created-at>
|
665
|
+
<order-id nil="true"/>
|
666
|
+
<purchase-order-number nil="true"/>
|
667
|
+
<payment-instrument-subtype>Visa</payment-instrument-subtype>
|
668
|
+
</transaction>
|
669
|
+
<date-opened type=\"date\">2014-03-21</date-opened>
|
670
|
+
</dispute>
|
671
|
+
XML
|
672
|
+
end
|
673
|
+
|
674
|
+
def _new_dispute_disputed_sample_xml(id)
|
675
|
+
<<-XML
|
676
|
+
<dispute>
|
677
|
+
<id>#{id}</id>
|
678
|
+
<amount>100.00</amount>
|
679
|
+
<amount-disputed>100.00</amount-disputed>
|
680
|
+
<amount-won>95.00</amount-won>
|
681
|
+
<case-number>CASE-12345</case-number>
|
682
|
+
<created-at type="datetime">2017-06-16T20:44:41Z</created-at>
|
683
|
+
<currency-iso-code>USD</currency-iso-code>
|
684
|
+
<forwarded-comments nil="true"/>
|
685
|
+
<kind>chargeback</kind>
|
686
|
+
<merchant-account-id>ytnlulaloidoqwvzxjrdqputg</merchant-account-id>
|
687
|
+
<reason>fraud</reason>
|
688
|
+
<reason-code nil="true"/>
|
689
|
+
<reason-description nil="true"/>
|
690
|
+
<received-date type="date">2016-02-15</received-date>
|
691
|
+
<reference-number>REF-9876</reference-number>
|
692
|
+
<reply-by-date type="date">2016-02-22</reply-by-date>
|
693
|
+
<status>disputed</status>
|
694
|
+
<updated-at type="datetime">2017-06-21T20:44:41Z</updated-at>
|
695
|
+
<original-dispute-id>9qde5qgp</original-dispute-id>
|
696
|
+
<status-history type="array">
|
697
|
+
<status-history>
|
698
|
+
<status>open</status>
|
699
|
+
<timestamp type="datetime">2017-06-16T20:44:41Z</timestamp>
|
700
|
+
</status-history>
|
701
|
+
<status-history>
|
702
|
+
<status>disputed</status>
|
703
|
+
<timestamp type="datetime">2017-06-25T20:50:55Z</timestamp>
|
704
|
+
</status-history>
|
705
|
+
</status-history>
|
706
|
+
<evidence type="array">
|
707
|
+
<evidence>
|
708
|
+
<id>rxtngk9j5j93tsrq</id>
|
709
|
+
<comments nil="true"/>
|
710
|
+
<created-at type="datetime">2017-06-21T20:44:42Z</created-at>
|
711
|
+
<sent-to-processor-at nil="true"/>
|
712
|
+
<url>s3.amazonaws.com/foo.jpg</url>
|
713
|
+
</evidence>
|
714
|
+
<evidence>
|
715
|
+
<id>88cfb8dd</id>
|
716
|
+
<comments>text evidence</comments>
|
717
|
+
<created-at type="datetime">2017-06-21T20:44:42Z</created-at>
|
718
|
+
<sent-to-processor-at nil="true"/>
|
719
|
+
<url nil="true"/>
|
720
|
+
</evidence>
|
721
|
+
</evidence>
|
722
|
+
<transaction>
|
723
|
+
<id>#{id}</id>
|
724
|
+
<amount>100.00</amount>
|
725
|
+
<created-at>2017-06-21T20:44:41Z</created-at>
|
726
|
+
<order-id nil="true"/>
|
727
|
+
<purchase-order-number nil="true"/>
|
728
|
+
<payment-instrument-subtype>Visa</payment-instrument-subtype>
|
729
|
+
</transaction>
|
730
|
+
<date-opened type=\"date\">2014-03-21</date-opened>
|
731
|
+
</dispute>
|
732
|
+
XML
|
733
|
+
end
|
734
|
+
|
735
|
+
def _new_dispute_expired_sample_xml(id)
|
736
|
+
<<-XML
|
737
|
+
<dispute>
|
738
|
+
<id>#{id}</id>
|
739
|
+
<amount>100.00</amount>
|
740
|
+
<amount-disputed>100.00</amount-disputed>
|
741
|
+
<amount-won>95.00</amount-won>
|
742
|
+
<case-number>CASE-12345</case-number>
|
743
|
+
<created-at type="datetime">2017-06-16T20:44:41Z</created-at>
|
744
|
+
<currency-iso-code>USD</currency-iso-code>
|
745
|
+
<forwarded-comments nil="true"/>
|
746
|
+
<kind>chargeback</kind>
|
747
|
+
<merchant-account-id>ytnlulaloidoqwvzxjrdqputg</merchant-account-id>
|
748
|
+
<reason>fraud</reason>
|
749
|
+
<reason-code nil="true"/>
|
750
|
+
<reason-description nil="true"/>
|
751
|
+
<received-date type="date">2016-02-15</received-date>
|
752
|
+
<reference-number>REF-9876</reference-number>
|
753
|
+
<reply-by-date type="date">2016-02-22</reply-by-date>
|
754
|
+
<status>expired</status>
|
755
|
+
<updated-at type="datetime">2017-06-16T20:44:41Z</updated-at>
|
756
|
+
<original-dispute-id>9qde5qgp</original-dispute-id>
|
757
|
+
<status-history type="array">
|
758
|
+
<status-history>
|
759
|
+
<status>open</status>
|
760
|
+
<timestamp type="datetime">2017-06-16T20:44:41Z</timestamp>
|
761
|
+
</status-history>
|
762
|
+
<status-history>
|
763
|
+
<status>expired</status>
|
764
|
+
<timestamp type="datetime">2017-06-25T20:50:55Z</timestamp>
|
765
|
+
</status-history>
|
766
|
+
</status-history>
|
767
|
+
<evidence type="array"/>
|
768
|
+
<transaction>
|
769
|
+
<id>#{id}</id>
|
770
|
+
<amount>100.00</amount>
|
771
|
+
<created-at>2017-06-21T20:44:41Z</created-at>
|
772
|
+
<order-id nil="true"/>
|
773
|
+
<purchase-order-number nil="true"/>
|
774
|
+
<payment-instrument-subtype>Visa</payment-instrument-subtype>
|
775
|
+
</transaction>
|
776
|
+
<date-opened type=\"date\">2014-03-21</date-opened>
|
777
|
+
</dispute>
|
778
|
+
XML
|
779
|
+
end
|
780
|
+
|
538
781
|
def _disbursement_exception_sample_xml(id)
|
539
782
|
|
540
783
|
<<-XML
|