spree_paypal_express 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +7 -0
- data/.travis.yml +14 -0
- data/Gemfile +3 -0
- data/LICENSE +23 -0
- data/README.markdown +146 -0
- data/Rakefile +13 -0
- data/Versionfile +5 -0
- data/app/assets/images/paypal.png +0 -0
- data/app/assets/javascripts/admin/spree_paypal_express.js +0 -0
- data/app/assets/javascripts/store/spree_paypal_express.js +0 -0
- data/app/assets/stylesheets/admin/spree_paypal_express.css +0 -0
- data/app/assets/stylesheets/store/spree_paypal_express.css +0 -0
- data/app/controllers/spree/checkout_controller_decorator.rb +384 -0
- data/app/controllers/spree/paypal_express_callbacks_controller.rb +44 -0
- data/app/helpers/spree/checkout_helper_decorator.rb +7 -0
- data/app/models/spree/billing_integration/paypal_express.rb +3 -0
- data/app/models/spree/billing_integration/paypal_express_base.rb +62 -0
- data/app/models/spree/billing_integration/paypal_express_uk.rb +3 -0
- data/app/models/spree/log_entry_decorator.rb +3 -0
- data/app/models/spree/payment_decorator.rb +3 -0
- data/app/models/spree/paypal_account.rb +36 -0
- data/app/overrides/spree/shared/_order_details/add_paypal_details.html.erb.deface +16 -0
- data/app/views/spree/admin/payments/source_forms/_paypalexpress.html.erb +9 -0
- data/app/views/spree/admin/payments/source_forms/_paypalexpressuk.html.erb +9 -0
- data/app/views/spree/admin/payments/source_views/_paypalexpress.html.erb +110 -0
- data/app/views/spree/admin/payments/source_views/_paypalexpressuk.html.erb +110 -0
- data/app/views/spree/admin/paypal_payments/refund.html.erb +15 -0
- data/app/views/spree/checkout/payment/_paypalexpress.html.erb +3 -0
- data/app/views/spree/checkout/payment/_paypalexpressuk.html.erb +3 -0
- data/app/views/spree/shared/_paypal_express_checkout.html.erb +3 -0
- data/app/views/spree/shared/paypal_express_confirm.html.erb +23 -0
- data/capture-notes +28 -0
- data/config/initializers/paypal_express.rb +1 -0
- data/config/locales/en-GB.yml +30 -0
- data/config/locales/en.yml +32 -0
- data/config/routes.rb +25 -0
- data/db/migrate/20100224133156_create_paypal_accounts.rb +14 -0
- data/db/migrate/20120117182027_namespace_paypal_accounts.rb +5 -0
- data/lib/generators/spree_paypal_express/install/install_generator.rb +18 -0
- data/lib/spree/paypal_express_configuration.rb +5 -0
- data/lib/spree_paypal_express.rb +3 -0
- data/lib/spree_paypal_express/engine.rb +38 -0
- data/response-example-one +55 -0
- data/response-xml-one +137 -0
- data/spec/controllers/checkout_controller_spec.rb +323 -0
- data/spec/factories/address_factory.rb +13 -0
- data/spec/factories/order_factory.rb +11 -0
- data/spec/factories/ppx_factory.rb +5 -0
- data/spec/factories/state_factory.rb +5 -0
- data/spec/models/billing_integration/paypal_express_base_spec.rb +135 -0
- data/spec/requests/paypal_express_spec.rb +40 -0
- data/spec/spec_helper.rb +37 -0
- data/spec/support/authentication_helpers.rb +13 -0
- data/spec/support/controller_hacks.rb +33 -0
- data/spec/support/shared_connection.rb +12 -0
- data/spec/support/url_helpers.rb +7 -0
- data/spree_paypal_express.gemspec +24 -0
- metadata +224 -0
@@ -0,0 +1,23 @@
|
|
1
|
+
<div id="checkout" data-hook>
|
2
|
+
<%= render :partial => 'spree/shared/error_messages', :locals => { :target => @order } %>
|
3
|
+
|
4
|
+
<div class="row" data-hook="checkout_header">
|
5
|
+
<h1 class="columns three alpha" data-hook="checkout_title"><%= t(:checkout) %></h1>
|
6
|
+
<div class="columns thirteen omega" data-hook="checkout_progress"><%= checkout_progress %></div>
|
7
|
+
</div>
|
8
|
+
|
9
|
+
<p>
|
10
|
+
<%= raw t(:order_not_yet_placed) %>
|
11
|
+
</p>
|
12
|
+
|
13
|
+
<div class="row" data-hook="checkout_content">
|
14
|
+
<div class="columns <%= if @order.state != 'confirm' then 'alpha twelve' else 'alpha omega sixteen' end %>" data-hook="checkout_form_wrapper">
|
15
|
+
<%= render :partial => 'spree/shared/order_details', :locals => {:order => @order} -%>
|
16
|
+
<hr class="clear"/>
|
17
|
+
<div class="form-buttons">
|
18
|
+
<%= button_to t(:place_order), paypal_finish_order_checkout_url(@order, {:token => params[:token] , :PayerID => params[:PayerID], :payment_method_id => params[:payment_method_id] } ), :class => "button primary" %>
|
19
|
+
</div>
|
20
|
+
</div>
|
21
|
+
|
22
|
+
</div>
|
23
|
+
</div>
|
data/capture-notes
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
|
2
|
+
Results from a capture - how much do I need to keep? check...
|
3
|
+
|
4
|
+
---
|
5
|
+
:tax_amount: "37.50"
|
6
|
+
:gross_amount: "249.00"
|
7
|
+
:payment_status: Pending
|
8
|
+
:gross_amount_currency_id: GBP
|
9
|
+
:authorization_id: 6WF137128R766191U
|
10
|
+
:pending_reason: payment-review
|
11
|
+
:receipt_id:
|
12
|
+
:transaction_id: 45D337153N9936001
|
13
|
+
:build: "962735"
|
14
|
+
:fee_amount: "8.67"
|
15
|
+
:reason_code: none
|
16
|
+
:correlation_id: cee300cb3a234
|
17
|
+
:fee_amount_currency_id: GBP
|
18
|
+
:transaction_type: express-checkout
|
19
|
+
:ack: Success
|
20
|
+
:timestamp: "2009-07-06T10:36:35Z"
|
21
|
+
:protection_eligibility: Ineligible
|
22
|
+
:parent_transaction_id: 6WF137128R766191U
|
23
|
+
:tax_amount_currency_id: GBP
|
24
|
+
:version: "57.0"
|
25
|
+
:payment_type: instant
|
26
|
+
:exchange_rate:
|
27
|
+
:payment_date: "2009-07-06T10:36:34Z"
|
28
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'active_merchant/billing/gateways/paypal_express'
|
@@ -0,0 +1,30 @@
|
|
1
|
+
---
|
2
|
+
en-GB:
|
3
|
+
edit_paypal_info: Edit Paypal Express Payment
|
4
|
+
paypal_payment: Paypal Express Payment
|
5
|
+
paypal_txn_id: Transaction Code
|
6
|
+
paypal_capture_complete: Paypal Transaction has been captured.
|
7
|
+
unable_to_capture_paypal: Unable to capture Paypal Transaction.
|
8
|
+
signature: Signature
|
9
|
+
order_not_yet_placed: "Your order has <strong>NOT</strong> been be placed, please review the details and click <strong>Place Order</strong> below to finalize your order."
|
10
|
+
paypal_payment_id: PayPal Payment ID
|
11
|
+
pending_reason: Pending Reason
|
12
|
+
result: Result
|
13
|
+
review: Review
|
14
|
+
no_shipping: No Shipping
|
15
|
+
paypal_account: PayPal Account
|
16
|
+
payer_id: Payer ID
|
17
|
+
payer_country: Country
|
18
|
+
payer_status: Status
|
19
|
+
comment: Comment
|
20
|
+
account_details: Account Details
|
21
|
+
finalize:
|
22
|
+
paypalexpress: Capture Payment
|
23
|
+
activerecord:
|
24
|
+
attributes:
|
25
|
+
paypal_payment:
|
26
|
+
amount: Amount
|
27
|
+
models:
|
28
|
+
paypal_payment:
|
29
|
+
one: PayPal Payment
|
30
|
+
other: PayPal Payments
|
@@ -0,0 +1,32 @@
|
|
1
|
+
---
|
2
|
+
en:
|
3
|
+
ipn_transaction: IPN Transaction
|
4
|
+
unknown_transaction: Unknown Transaction
|
5
|
+
edit_paypal_info: Edit Paypal Express Payment
|
6
|
+
paypal_payment: Paypal Express Payment
|
7
|
+
paypal_txn_id: Transaction Code
|
8
|
+
paypal_capture_complete: Paypal Transaction has been captured.
|
9
|
+
unable_to_capture_paypal: Unable to capture Paypal Transaction.
|
10
|
+
signature: Signature
|
11
|
+
order_not_yet_placed: "Your order has <strong>NOT</strong> been be placed, please review the details and click <strong>Place Order</strong> below to finalize your order."
|
12
|
+
paypal_payment_id: PayPal Payment ID
|
13
|
+
pending_reason: Pending Reason
|
14
|
+
result: Result
|
15
|
+
review: Review
|
16
|
+
no_shipping: No Shipping
|
17
|
+
paypal_account: PayPal Account
|
18
|
+
payer_id: Payer ID
|
19
|
+
payer_country: Country
|
20
|
+
payer_status: Status
|
21
|
+
comment: Comment
|
22
|
+
account_details: Account Details
|
23
|
+
finalize:
|
24
|
+
paypalexpress: Capture Payment
|
25
|
+
activerecord:
|
26
|
+
attributes:
|
27
|
+
paypal_payment:
|
28
|
+
amount: Amount
|
29
|
+
models:
|
30
|
+
paypal_payment:
|
31
|
+
one: PayPal Payment
|
32
|
+
other: PayPal Payments
|
data/config/routes.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
Spree::Core::Engine.routes.draw do
|
2
|
+
resources :orders do
|
3
|
+
resource :checkout, :controller => 'checkout' do
|
4
|
+
member do
|
5
|
+
get :paypal_checkout
|
6
|
+
get :paypal_payment
|
7
|
+
get :paypal_confirm
|
8
|
+
post :paypal_finish
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
match '/paypal_notify' => 'paypal_express_callbacks#notify', :via => [:get, :post]
|
14
|
+
|
15
|
+
namespace :admin do
|
16
|
+
resources :orders do
|
17
|
+
resources :paypal_payments do
|
18
|
+
member do
|
19
|
+
get :refund
|
20
|
+
get :capture
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class CreatePaypalAccounts < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table :paypal_accounts do |t|
|
4
|
+
t.string :email
|
5
|
+
t.string :payer_id
|
6
|
+
t.string :payer_country
|
7
|
+
t.string :payer_status
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.down
|
12
|
+
drop_table :paypal_accounts
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module SpreePaypalExpress
|
2
|
+
module Generators
|
3
|
+
class InstallGenerator < Rails::Generators::Base
|
4
|
+
def add_migrations
|
5
|
+
run 'rake railties:install:migrations FROM=spree_paypal_express'
|
6
|
+
end
|
7
|
+
|
8
|
+
def run_migrations
|
9
|
+
res = ask "Would you like to run the migrations now? [Y/n]"
|
10
|
+
if res == "" || res.downcase == "y"
|
11
|
+
run 'rake db:migrate'
|
12
|
+
else
|
13
|
+
puts "Skiping rake db:migrate, don't forget to run it!"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Spree::PaypalExpress; end
|
2
|
+
module SpreePaypalExpress
|
3
|
+
class Engine < Rails::Engine
|
4
|
+
engine_name 'spree_paypal_express'
|
5
|
+
|
6
|
+
config.autoload_paths += %W(#{config.root}/lib)
|
7
|
+
|
8
|
+
# use rspec for tests
|
9
|
+
config.generators do |g|
|
10
|
+
g.test_framework :rspec
|
11
|
+
end
|
12
|
+
|
13
|
+
initializer "spree.paypal_express.preferences", :before => :load_config_initializers do |app|
|
14
|
+
Spree::PaypalExpress::Config = Spree::PaypalExpressConfiguration.new
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.activate
|
18
|
+
Dir.glob(File.join(File.dirname(__FILE__), "../../app/**/*_decorator*.rb")) do |c|
|
19
|
+
Rails.env.production? ? require(c) : load(c)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
config.after_initialize do |app|
|
24
|
+
app.config.spree.payment_methods += [
|
25
|
+
Spree::BillingIntegration::PaypalExpress,
|
26
|
+
Spree::BillingIntegration::PaypalExpressUk
|
27
|
+
]
|
28
|
+
end
|
29
|
+
|
30
|
+
# The install generator tries to do spree_paypal_express.classify => SpreePaypalExpres
|
31
|
+
# This fixes that 's' from getting chopped off
|
32
|
+
ActiveSupport::Inflector.inflections do |inflect|
|
33
|
+
inflect.singular 'express', 'express'
|
34
|
+
end
|
35
|
+
|
36
|
+
config.to_prepare &method(:activate).to_proc
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
example of an info fetch, for reference
|
2
|
+
|
3
|
+
PPPPPPPPPPPPP #<ActiveMerchant::Billing::PaypalExpressResponse:0x7f020cb75f60
|
4
|
+
|
5
|
+
@fraud_review=false,
|
6
|
+
@avs_result={"code"=>nil, "postal_match"=>nil, "street_match"=>nil, "message"=>nil},
|
7
|
+
|
8
|
+
@params={"country_name"=>"United Kingdom"
|
9
|
+
"name"=>"Test User"
|
10
|
+
"city_name"=>"Wolverhampton"
|
11
|
+
"insurance_option_selected"=>"false"
|
12
|
+
"insurance_total"=>"0.00"
|
13
|
+
"shipping_total_currency_id"=>"GBP"
|
14
|
+
"insurance_option_offered"=>"false"
|
15
|
+
"payer"=>"paulcc_1247500933_per@gmail.com"
|
16
|
+
"address_owner"=>"PayPal"
|
17
|
+
"payer_country"=>"GB"
|
18
|
+
"timestamp"=>"2009-08-11T08:12:11Z"
|
19
|
+
"correlation_id"=>"ed7b386bb3c6e"
|
20
|
+
"country"=>"GB"
|
21
|
+
"token"=>"EC-32483953BF188421W"
|
22
|
+
"street1"=>"1 Main Terrace"
|
23
|
+
"handling_total"=>"0.00"
|
24
|
+
"shipping_calculation_mode"=>"Callback"
|
25
|
+
"postal_code"=>"W12 4LQ"
|
26
|
+
"payer_business"=>nil, "salutation"=>nil, "invoice_id"=>"R884242533"
|
27
|
+
"street2"=>nil, "external_address_id"=>nil, "tax_total"=>"6.00"
|
28
|
+
"build"=>"997644"
|
29
|
+
"address_id"=>nil, "shipping_discount_currency_id"=>"GBP"
|
30
|
+
"version"=>"57.0"
|
31
|
+
"shipping_option_name"=>nil, "tax_total_currency_id"=>"GBP"
|
32
|
+
"shipping_discount"=>"0.00"
|
33
|
+
"payer_id"=>"QWVRDBQ88DR7N"
|
34
|
+
"shipping_option_is_default"=>"false"
|
35
|
+
"last_name"=>"User"
|
36
|
+
"address_status"=>"Confirmed"
|
37
|
+
"phone"=>nil, "payer_status"=>"unverified"
|
38
|
+
"custom"=>"R884242533"
|
39
|
+
"suffix"=>nil, "order_total"=>"39.99"
|
40
|
+
"order_total_currency_id"=>"GBP"
|
41
|
+
"order_description"=>"Goods from a Spree-based site"
|
42
|
+
"insurance_total_currency_id"=>"GBP"
|
43
|
+
"handling_total_currency_id"=>"GBP"
|
44
|
+
"ack"=>"Success"
|
45
|
+
"middle_name"=>nil, "state_or_province"=>"West Midlands"
|
46
|
+
"shipping_total"=>"0.00"
|
47
|
+
"first_name"=>"Test"},
|
48
|
+
|
49
|
+
@test=true,
|
50
|
+
@authorization=nil,
|
51
|
+
@message="Success",
|
52
|
+
@success=true,
|
53
|
+
@cvv_result={"code"=>nil, "message"=>nil}>
|
54
|
+
|
55
|
+
|
data/response-xml-one
ADDED
@@ -0,0 +1,137 @@
|
|
1
|
+
example xml response for both info and auth stages
|
2
|
+
|
3
|
+
|
4
|
+
<GetExpressCheckoutDetailsResponse xmlns=\"urn:ebay:api:PayPalAPI\">
|
5
|
+
<Timestamp xmlns=\"urn:ebay:apis:eBLBaseComponents\">2009-08-11T08:34:45Z</Timestamp>
|
6
|
+
<Ack xmlns=\"urn:ebay:apis:eBLBaseComponents\">Success</Ack>
|
7
|
+
<CorrelationID xmlns=\"urn:ebay:apis:eBLBaseComponents\">ab1d12f6341a0</CorrelationID>
|
8
|
+
<Version xmlns=\"urn:ebay:apis:eBLBaseComponents\">57.0</Version>
|
9
|
+
<Build xmlns=\"urn:ebay:apis:eBLBaseComponents\">997644</Build>
|
10
|
+
|
11
|
+
<GetExpressCheckoutDetailsResponseDetails xmlns=\"urn:ebay:apis:eBLBaseComponents\" xsi:type=\"ebl:GetExpressCheckoutDetailsResponseDetailsType\">
|
12
|
+
<Token xsi:type=\"ebl:ExpressCheckoutTokenType\">EC-6B741617JU9239212</Token>
|
13
|
+
<PayerInfo xsi:type=\"ebl:PayerInfoType\">
|
14
|
+
<Payer xsi:type=\"ebl:EmailAddressType\">paulcc_1247500933_per@gmail.com</Payer>
|
15
|
+
<PayerID xsi:type=\"ebl:UserIDType\">QWVRDBQ88DR7N</PayerID>
|
16
|
+
<PayerStatus xsi:type=\"ebl:PayPalUserStatusCodeType\">unverified</PayerStatus>
|
17
|
+
<PayerName xsi:type=\"ebl:PersonNameType\">
|
18
|
+
<Salutation xmlns=\"urn:ebay:apis:eBLBaseComponents\">
|
19
|
+
</Salutation>
|
20
|
+
<FirstName xmlns=\"urn:ebay:apis:eBLBaseComponents\">Test</FirstName>
|
21
|
+
<MiddleName xmlns=\"urn:ebay:apis:eBLBaseComponents\">
|
22
|
+
</MiddleName>
|
23
|
+
<LastName xmlns=\"urn:ebay:apis:eBLBaseComponents\">User</LastName>
|
24
|
+
<Suffix xmlns=\"urn:ebay:apis:eBLBaseComponents\">
|
25
|
+
</Suffix>
|
26
|
+
</PayerName>
|
27
|
+
<PayerCountry xsi:type=\"ebl:CountryCodeType\">GB</PayerCountry>
|
28
|
+
<PayerBusiness xsi:type=\"xs:string\">
|
29
|
+
</PayerBusiness>
|
30
|
+
<Address xsi:type=\"ebl:AddressType\">
|
31
|
+
<Name xsi:type=\"xs:string\">Test User</Name>
|
32
|
+
<Street1 xsi:type=\"xs:string\">1 Main Terrace</Street1>
|
33
|
+
<Street2 xsi:type=\"xs:string\">
|
34
|
+
</Street2>
|
35
|
+
<CityName xsi:type=\"xs:string\">Wolverhampton</CityName>
|
36
|
+
<StateOrProvince xsi:type=\"xs:string\">West Midlands</StateOrProvince>
|
37
|
+
<Country xsi:type=\"ebl:CountryCodeType\">GB</Country>
|
38
|
+
<CountryName>United Kingdom</CountryName>
|
39
|
+
<PostalCode xsi:type=\"xs:string\">W12 4LQ</PostalCode>
|
40
|
+
<AddressOwner xsi:type=\"ebl:AddressOwnerCodeType\">PayPal</AddressOwner>
|
41
|
+
<AddressStatus xsi:type=\"ebl:AddressStatusCodeType\">Confirmed</AddressStatus>
|
42
|
+
</Address>
|
43
|
+
</PayerInfo>
|
44
|
+
<Custom xsi:type=\"xs:string\">R617411028</Custom>
|
45
|
+
<InvoiceID xsi:type=\"xs:string\">R617411028</InvoiceID>
|
46
|
+
<PaymentDetails xsi:type=\"ebl:PaymentDetailsType\">
|
47
|
+
<OrderTotal xsi:type=\"cc:BasicAmountType\" currencyID=\"GBP\">39.99</OrderTotal>
|
48
|
+
<ShippingTotal xsi:type=\"cc:BasicAmountType\" currencyID=\"GBP\">0.00</ShippingTotal>
|
49
|
+
<HandlingTotal xsi:type=\"cc:BasicAmountType\" currencyID=\"GBP\">0.00</HandlingTotal>
|
50
|
+
<TaxTotal xsi:type=\"cc:BasicAmountType\" currencyID=\"GBP\">6.00</TaxTotal>
|
51
|
+
<OrderDescription xsi:type=\"xs:string\">Goods from a Spree-based site</OrderDescription>
|
52
|
+
<Custom xsi:type=\"xs:string\">R617411028</Custom>
|
53
|
+
<InvoiceID xsi:type=\"xs:string\">R617411028</InvoiceID>
|
54
|
+
|
55
|
+
<ShipToAddress xsi:type=\"ebl:AddressType\">
|
56
|
+
<Name xsi:type=\"xs:string\">Test User</Name>
|
57
|
+
<Street1 xsi:type=\"xs:string\">1 Main Terrace</Street1>
|
58
|
+
<Street2 xsi:type=\"xs:string\">
|
59
|
+
</Street2>
|
60
|
+
<CityName xsi:type=\"xs:string\">Wolverhampton</CityName>
|
61
|
+
<StateOrProvince xsi:type=\"xs:string\">West Midlands</StateOrProvince>
|
62
|
+
<Country xsi:type=\"ebl:CountryCodeType\">GB</Country>
|
63
|
+
<CountryName>United Kingdom</CountryName>
|
64
|
+
<Phone xsi:type=\"xs:string\">
|
65
|
+
</Phone>
|
66
|
+
<PostalCode xsi:type=\"xs:string\">W12 4LQ</PostalCode>
|
67
|
+
<AddressID xsi:type=\"xs:string\">
|
68
|
+
</AddressID>
|
69
|
+
<AddressOwner xsi:type=\"ebl:AddressOwnerCodeType\">PayPal</AddressOwner>
|
70
|
+
<ExternalAddressID xsi:type=\"xs:string\">
|
71
|
+
</ExternalAddressID>
|
72
|
+
<AddressStatus xsi:type=\"ebl:AddressStatusCodeType\">Confirmed</AddressStatus>
|
73
|
+
</ShipToAddress>
|
74
|
+
|
75
|
+
<InsuranceTotal xsi:type=\"cc:BasicAmountType\" currencyID=\"GBP\">0.00</InsuranceTotal>
|
76
|
+
<ShippingDiscount xsi:type=\"cc:BasicAmountType\" currencyID=\"GBP\">0.00</ShippingDiscount>
|
77
|
+
<InsuranceOptionOffered xsi:type=\"xs:string\">false</InsuranceOptionOffered>
|
78
|
+
</PaymentDetails>
|
79
|
+
<UserSelectedOptions xsi:type=\"ebl:UserSelectedOptionType\">
|
80
|
+
<ShippingCalculationMode xsi:type=\"xs:string\">Callback</ShippingCalculationMode>
|
81
|
+
<InsuranceOptionSelected xsi:type=\"xs:string\">false</InsuranceOptionSelected>
|
82
|
+
<ShippingOptionIsDefault xsi:type=\"xs:string\">false</ShippingOptionIsDefault>
|
83
|
+
<ShippingOptionName xsi:type=\"xs:string\">
|
84
|
+
</ShippingOptionName>
|
85
|
+
</UserSelectedOptions>
|
86
|
+
</GetExpressCheckoutDetailsResponseDetails>
|
87
|
+
</GetExpressCheckoutDetailsResponse>
|
88
|
+
</SOAP-ENV:Body>
|
89
|
+
</SOAP-ENV:Envelope>"
|
90
|
+
PPPPPPPPPPPPP #<ActiveMerchant::Billing::PaypalExpressResponse:0x7fd0e1d1a740 @fraud_review=false, @avs_result={"code"=>nil, "postal_match"=>nil, "street_match"=>nil, "message"=>nil}, @params={"name"=>"Test User", "city_name"=>"Wolverhampton", "insurance_option_selected"=>"false", "insurance_total"=>"0.00", "shipping_total_currency_id"=>"GBP", "insurance_option_offered"=>"false", "country_name"=>"United Kingdom", "payer"=>"paulcc_1247500933_per@gmail.com", "address_owner"=>"PayPal", "payer_country"=>"GB", "correlation_id"=>"ab1d12f6341a0", "timestamp"=>"2009-08-11T08:34:45Z", "country"=>"GB", "token"=>"EC-6B741617JU9239212", "street1"=>"1 Main Terrace", "handling_total"=>"0.00", "shipping_calculation_mode"=>"Callback", "postal_code"=>"W12 4LQ", "payer_business"=>nil, "salutation"=>nil, "invoice_id"=>"R617411028", "street2"=>nil, "external_address_id"=>nil, "tax_total"=>"6.00", "build"=>"997644", "shipping_discount_currency_id"=>"GBP", "shipping_option_name"=>nil, "version"=>"57.0", "tax_total_currency_id"=>"GBP", "address_id"=>nil, "shipping_discount"=>"0.00", "shipping_option_is_default"=>"false", "payer_id"=>"QWVRDBQ88DR7N", "address_status"=>"Confirmed", "last_name"=>"User", "phone"=>nil, "payer_status"=>"unverified", "custom"=>"R617411028", "suffix"=>nil, "order_total"=>"39.99", "order_total_currency_id"=>"GBP", "order_description"=>"Goods from a Spree-based site", "insurance_total_currency_id"=>"GBP", "handling_total_currency_id"=>"GBP", "ack"=>"Success", "middle_name"=>nil, "state_or_province"=>"West Midlands", "shipping_total"=>"0.00", "first_name"=>"Test"}, @test=true, @authorization=nil, @message="Success", @success=true, @cvv_result={"code"=>nil, "message"=>nil}>
|
91
|
+
PARSE: "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
|
92
|
+
<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:cc=\"urn:ebay:apis:CoreComponentTypes\" xmlns:wsu=\"http://schemas.xmlsoap.org/ws/2002/07/utility\" xmlns:saml=\"urn:oasis:names:tc:SAML:1.0:assertion\" xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\" xmlns:wsse=\"http://schemas.xmlsoap.org/ws/2002/12/secext\" xmlns:ebl=\"urn:ebay:apis:eBLBaseComponents\" xmlns:ns=\"urn:ebay:api:PayPalAPI\">
|
93
|
+
<SOAP-ENV:Header>
|
94
|
+
<Security xmlns=\"http://schemas.xmlsoap.org/ws/2002/12/secext\" xsi:type=\"wsse:SecurityType\">
|
95
|
+
</Security>
|
96
|
+
<RequesterCredentials xmlns=\"urn:ebay:api:PayPalAPI\" xsi:type=\"ebl:CustomSecurityHeaderType\">
|
97
|
+
<Credentials xmlns=\"urn:ebay:apis:eBLBaseComponents\" xsi:type=\"ebl:UserIdPasswordType\">
|
98
|
+
<Username xsi:type=\"xs:string\">
|
99
|
+
</Username>
|
100
|
+
<Password xsi:type=\"xs:string\">
|
101
|
+
</Password>
|
102
|
+
<Signature xsi:type=\"xs:string\">A2VYNHC1wYRx0ZwMX6dXwoFDGTMnAYt4SmzCH6LS3nVKLszXCtL-rp9o</Signature>
|
103
|
+
<Subject xsi:type=\"xs:string\">
|
104
|
+
</Subject>
|
105
|
+
</Credentials>
|
106
|
+
</RequesterCredentials>
|
107
|
+
</SOAP-ENV:Header>
|
108
|
+
<SOAP-ENV:Body id=\"_0\">
|
109
|
+
<DoExpressCheckoutPaymentResponse xmlns=\"urn:ebay:api:PayPalAPI\">
|
110
|
+
<Timestamp xmlns=\"urn:ebay:apis:eBLBaseComponents\">2009-08-11T08:34:51Z</Timestamp>
|
111
|
+
<Ack xmlns=\"urn:ebay:apis:eBLBaseComponents\">Success</Ack>
|
112
|
+
<CorrelationID xmlns=\"urn:ebay:apis:eBLBaseComponents\">ad01596b089a</CorrelationID>
|
113
|
+
<Version xmlns=\"urn:ebay:apis:eBLBaseComponents\">57.0</Version>
|
114
|
+
<Build xmlns=\"urn:ebay:apis:eBLBaseComponents\">997644</Build>
|
115
|
+
<DoExpressCheckoutPaymentResponseDetails xmlns=\"urn:ebay:apis:eBLBaseComponents\" xsi:type=\"ebl:DoExpressCheckoutPaymentResponseDetailsType\">
|
116
|
+
<Token xsi:type=\"ebl:ExpressCheckoutTokenType\">EC-6B741617JU9239212</Token>
|
117
|
+
<PaymentInfo xsi:type=\"ebl:PaymentInfoType\">
|
118
|
+
<TransactionID>08Y81513KR775024S</TransactionID>
|
119
|
+
<ParentTransactionID xsi:type=\"ebl:TransactionId\">
|
120
|
+
</ParentTransactionID>
|
121
|
+
<ReceiptID>
|
122
|
+
</ReceiptID>
|
123
|
+
<TransactionType xsi:type=\"ebl:PaymentTransactionCodeType\">express-checkout</TransactionType>
|
124
|
+
<PaymentType xsi:type=\"ebl:PaymentCodeType\">instant</PaymentType>
|
125
|
+
<PaymentDate xsi:type=\"xs:dateTime\">2009-08-11T08:34:51Z</PaymentDate>
|
126
|
+
<GrossAmount xsi:type=\"cc:BasicAmountType\" currencyID=\"GBP\">39.99</GrossAmount>
|
127
|
+
<TaxAmount xsi:type=\"cc:BasicAmountType\" currencyID=\"GBP\">6.00</TaxAmount>
|
128
|
+
<ExchangeRate xsi:type=\"xs:string\">
|
129
|
+
</ExchangeRate>
|
130
|
+
<PaymentStatus xsi:type=\"ebl:PaymentStatusCodeType\">Completed</PaymentStatus>
|
131
|
+
<PendingReason xsi:type=\"ebl:PendingStatusCodeType\">none</PendingReason>
|
132
|
+
<ReasonCode xsi:type=\"ebl:ReversalReasonCodeType\">none</ReasonCode>
|
133
|
+
</PaymentInfo>
|
134
|
+
</DoExpressCheckoutPaymentResponseDetails>
|
135
|
+
</DoExpressCheckoutPaymentResponse>
|
136
|
+
</SOAP-ENV:Body>
|
137
|
+
</SOAP-ENV:Envelope>"
|