lib/active_merchant/billing/gateways/paypal.rb in activemerchant-1.0.3 vs lib/active_merchant/billing/gateways/paypal.rb in activemerchant-1.1.0
- old
+ new
@@ -38,11 +38,11 @@
shipping_address = options[:shipping_address] || options[:address]
xml = Builder::XmlMarkup.new :indent => 2
xml.tag! 'DoDirectPaymentReq', 'xmlns' => PAYPAL_NAMESPACE do
xml.tag! 'DoDirectPaymentRequest', 'xmlns:n2' => EBAY_NAMESPACE do
- xml.tag! 'n2:Version', '2.0'
+ xml.tag! 'n2:Version', API_VERSION
xml.tag! 'n2:DoDirectPaymentRequestDetails' do
xml.tag! 'n2:PaymentAction', action
xml.tag! 'n2:PaymentDetails' do
xml.tag! 'n2:OrderTotal', amount(money), 'currencyID' => currency(money)
xml.tag! 'n2:NotifyURL', options[:notify_url]
@@ -62,14 +62,20 @@
def add_credit_card(xml, credit_card, address, options)
xml.tag! 'n2:CreditCard' do
xml.tag! 'n2:CreditCardType', credit_card_type(credit_card.type)
xml.tag! 'n2:CreditCardNumber', credit_card.number
- xml.tag! 'n2:ExpMonth', sprintf("%.2i", credit_card.month)
- xml.tag! 'n2:ExpYear', sprintf("%.4i", credit_card.year)
+ xml.tag! 'n2:ExpMonth', format(credit_card.month, :two_digits)
+ xml.tag! 'n2:ExpYear', format(credit_card.year, :four_digits)
xml.tag! 'n2:CVV2', credit_card.verification_value
+ if [ 'switch', 'solo' ].include?(credit_card.type.to_s)
+ xml.tag! 'n2:StartMonth', format(credit_card.start_month, :two_digits) unless credit_card.start_month.blank?
+ xml.tag! 'n2:StartYear', format(credit_card.start_year, :four_digits) unless credit_card.start_year.blank?
+ xml.tag! 'n2:IssueNumber', format(credit_card.issue_number, :two_digits) unless credit_card.issue_number.blank?
+ end
+
xml.tag! 'n2:CardOwner' do
xml.tag! 'n2:PayerName' do
xml.tag! 'n2:FirstName', credit_card.first_name
xml.tag! 'n2:LastName', credit_card.last_name
end
@@ -84,9 +90,11 @@
case type
when 'visa' then 'Visa'
when 'master' then 'MasterCard'
when 'discover' then 'Discover'
when 'american_express' then 'Amex'
+ when 'switch' then 'Switch'
+ when 'solo' then 'Solo'
end
end
def build_response(success, message, response, options = {})
Response.new(success, message, response, options)