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)