lib/active_merchant/billing/gateways/paypal_express.rb in activemerchant-1.11.0 vs lib/active_merchant/billing/gateways/paypal_express.rb in activemerchant-1.12.0

- old
+ new

@@ -76,10 +76,12 @@ xml.tag! 'n2:TaxTotal', localized_amount(options[:tax], currency_code), 'currencyID' => currency_code end xml.tag! 'n2:NotifyURL', options[:notify_url] xml.tag! 'n2:ButtonSource', application_id.to_s.slice(0,32) unless application_id.blank? + xml.tag! 'n2:InvoiceID', options[:order_id] + xml.tag! 'n2:OrderDescription', options[:description] end end end end @@ -92,24 +94,54 @@ xml = Builder::XmlMarkup.new :indent => 2 xml.tag! 'SetExpressCheckoutReq', 'xmlns' => PAYPAL_NAMESPACE do xml.tag! 'SetExpressCheckoutRequest', 'xmlns:n2' => EBAY_NAMESPACE do xml.tag! 'n2:Version', API_VERSION xml.tag! 'n2:SetExpressCheckoutRequestDetails' do - xml.tag! 'n2:PaymentAction', action - xml.tag! 'n2:OrderTotal', amount(money).to_f.zero? ? localized_amount(100, currency_code) : localized_amount(money, currency_code), 'currencyID' => currency_code if options[:max_amount] xml.tag! 'n2:MaxAmount', localized_amount(options[:max_amount], currency_code), 'currencyID' => currency_code end + if !options[:allow_note].nil? + xml.tag! 'n2:AllowNote', options[:allow_note] ? '1' : '0' + end + xml.tag! 'n2:PaymentDetails' do + xml.tag! 'n2:OrderTotal', amount(money).to_f.zero? ? localized_amount(100, currency_code) : localized_amount(money, currency_code), 'currencyID' => currency_code + # All of the values must be included together and add up to the order total + if [:subtotal, :shipping, :handling, :tax].all? { |o| options.has_key?(o) } + xml.tag! 'n2:ItemTotal', localized_amount(options[:subtotal], currency_code), 'currencyID' => currency_code + xml.tag! 'n2:ShippingTotal', localized_amount(options[:shipping], currency_code), 'currencyID' => currency_code + xml.tag! 'n2:HandlingTotal', localized_amount(options[:handling], currency_code), 'currencyID' => currency_code + xml.tag! 'n2:TaxTotal', localized_amount(options[:tax], currency_code), 'currencyID' => currency_code + end + + xml.tag! 'n2:OrderDescription', options[:description] + xml.tag! 'n2:InvoiceID', options[:order_id] + + if options[:items] + options[:items].each do |item| + xml.tag! 'n2:PaymentDetailsItem' do + xml.tag! 'n2:Name', item[:name] + xml.tag! 'n2:Number', item[:number] + xml.tag! 'n2:Quantity', item[:quantity] + if item[:amount] + xml.tag! 'n2:Amount', localized_amount(item[:amount], currency_code), 'currencyID' => currency_code + end + xml.tag! 'n2:Description', item[:description] + xml.tag! 'n2:ItemURL', item[:url] + end + end + end + + xml.tag! 'n2:PaymentAction', action + end + add_address(xml, 'n2:Address', options[:shipping_address] || options[:address]) xml.tag! 'n2:AddressOverride', options[:address_override] ? '1' : '0' xml.tag! 'n2:NoShipping', options[:no_shipping] ? '1' : '0' xml.tag! 'n2:ReturnURL', options[:return_url] xml.tag! 'n2:CancelURL', options[:cancel_return_url] xml.tag! 'n2:IPAddress', options[:ip] unless options[:ip].blank? - xml.tag! 'n2:OrderDescription', options[:description] xml.tag! 'n2:BuyerEmail', options[:email] unless options[:email].blank? - xml.tag! 'n2:InvoiceID', options[:order_id] if options[:billing_agreement] xml.tag! 'n2:BillingAgreementDetails' do xml.tag! 'n2:BillingType', options[:billing_agreement][:type] xml.tag! 'n2:BillingAgreementDescription', options[:billing_agreement][:description] @@ -117,10 +149,10 @@ end end # Customization of the payment page xml.tag! 'n2:PageStyle', options[:page_style] unless options[:page_style].blank? - xml.tag! 'n2:cpp-image-header', options[:header_image] unless options[:header_image].blank? + xml.tag! 'n2:cpp-header-image', options[:header_image] unless options[:header_image].blank? xml.tag! 'n2:cpp-header-back-color', options[:header_background_color] unless options[:header_background_color].blank? xml.tag! 'n2:cpp-header-border-color', options[:header_border_color] unless options[:header_border_color].blank? xml.tag! 'n2:cpp-payflow-color', options[:background_color] unless options[:background_color].blank? if options[:allow_guest_checkout]