Skip to content

Commit afe9e46

Browse files
author
Jared Moody
committed
Cybersource: All creditcard fields should be optional for updating subscription
1 parent eb6a4a6 commit afe9e46

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

lib/active_merchant/billing/gateways/cyber_source.rb

+4-4
Original file line numberDiff line numberDiff line change
@@ -445,11 +445,11 @@ def add_address(xml, payment_method, address, options, shipTo = false)
445445

446446
def add_creditcard(xml, creditcard)
447447
xml.tag! 'card' do
448-
xml.tag! 'accountNumber', creditcard.number
449-
xml.tag! 'expirationMonth', format(creditcard.month, :two_digits)
450-
xml.tag! 'expirationYear', format(creditcard.year, :four_digits)
448+
xml.tag! 'accountNumber', creditcard.number unless creditcard.number.blank?
449+
xml.tag! 'expirationMonth', format(creditcard.month, :two_digits) unless creditcard.month.blank?
450+
xml.tag! 'expirationYear', format(creditcard.year, :four_digits) unless creditcard.year.blank?
451451
xml.tag!('cvNumber', creditcard.verification_value) unless (@options[:ignore_cvv] || creditcard.verification_value.blank? )
452-
xml.tag! 'cardType', @@credit_card_codes[card_brand(creditcard).to_sym]
452+
xml.tag! 'cardType', @@credit_card_codes[card_brand(creditcard).to_sym] unless card_brand(creditcard).blank?
453453
end
454454
end
455455

test/remote/gateways/remote_cyber_source_test.rb

+13
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,19 @@ def test_successful_update_subscription_creditcard
247247
assert response.test?
248248
end
249249

250+
def test_successful_update_subscription_creditcard_exp_only
251+
assert response = @gateway.store(@credit_card, @subscription_options)
252+
assert_equal 'Successful transaction', response.message
253+
assert_success response
254+
assert response.test?
255+
256+
new_exp = ActiveMerchant::Billing::CreditCard.new(month: Date.today.month, year: Date.today.year)
257+
assert response = @gateway.update(response.authorization, new_exp, {:order_id => generate_unique_id})
258+
assert_equal 'Successful transaction', response.message
259+
assert_success response
260+
assert response.test?
261+
end
262+
250263
def test_successful_update_subscription_billing_address
251264
assert response = @gateway.store(@credit_card, @subscription_options)
252265
assert_equal 'Successful transaction', response.message

0 commit comments

Comments
 (0)