lib/active_merchant/billing/gateways/paypal.rb in activemerchant-1.0.1 vs lib/active_merchant/billing/gateways/paypal.rb in activemerchant-1.0.2

- old
+ new

@@ -33,31 +33,36 @@ @express ||= PaypalExpressGateway.new(@options) end private def build_sale_or_authorization_request(action, money, credit_card, options) + shipping_address = options[:shipping_address] || options[:address] + xml = Builder::XmlMarkup.new :indent => 2 - xml.tag! 'DoDirectPaymentReq', 'xmlns' => 'urn:ebay:api:PayPalAPI' do xml.tag! 'DoDirectPaymentRequest', 'xmlns:n2' => 'urn:ebay:apis:eBLBaseComponents' do xml.tag! 'n2:Version', '2.0' 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] + xml.tag! 'n2:OrderDescription', options[:description] + xml.tag! 'n2:InvoiceID', options[:order_id] + + add_address(xml, 'n2:ShipToAddress', shipping_address) end - add_credit_card(xml, credit_card, options[:billing_address] || options[:address]) + add_credit_card(xml, credit_card, options[:billing_address] || shipping_address, options) xml.tag! 'n2:IPAddress', options[:ip] end end end xml.target! end - def add_credit_card(xml, credit_card, address) + 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) @@ -66,10 +71,12 @@ 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 - add_address(xml, address) + + xml.tag! 'n2:Payer', options[:email] + add_address(xml, 'n2:Address', address) end end end def credit_card_type(type)