spree_paypal_api_checkout 0.1.0 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/README.md +1 -1
 - data/app/assets/javascripts/spree/backend/spree_paypal_checkout.js +1 -1
 - data/app/controllers/spree/paypal_checkout_controller.rb +7 -10
 - data/app/models/spree/gateway/pay_pal_checkout.rb +84 -25
 - data/app/models/spree/log_entry_decorator.rb +22 -0
 - data/app/views/spree/admin/log_entries/_paypal_checkout.html.erb +8 -0
 - data/app/views/spree/admin/log_entries/index.html.erb +27 -0
 - data/app/views/spree/admin/payments/source_forms/_paypal_checkout.html.erb +1 -1
 - data/app/views/spree/checkout/payment/_paypal_checkout.html.erb +1 -1
 - data/config/locales/de.yml +1 -0
 - data/config/locales/en.yml +1 -0
 - data/config/locales/es.yml +1 -0
 - data/config/locales/it.yml +1 -0
 - data/config/locales/pl.yml +1 -0
 - data/config/locales/pt.yml +1 -0
 - data/lib/spree_paypal_api_checkout/version.rb +1 -1
 - data/spree_paypal_api_checkout.gemspec +2 -2
 - metadata +4 -1
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: b79612956a0c2a85e4e971f5967be818be56d438b7034f7cc7b7bef83a01178d
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: f0ef4e1ea934c9c0309401707474219acb71a99a7471ec59a0da91eb29749eae
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: a3a8b3c4673d8ce405272ee20010636c0d3ded18eccf5c446cb2ad3a4f386bd5fa696e1f9d5783de6dcf12f0ce684668c9f62f7f36d07fce46fbb7a9678bb5f8
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 2fb57d527e37a19d25b92a2e9f97f7f5143294e77b12f5b369d19e96a0b5670fc6dff7e11a30f1b03af9714e4ae6726bc393cec629f681c0aa5a3b6db5af782e
         
     | 
    
        data/README.md
    CHANGED
    
    
| 
         @@ -3,7 +3,7 @@ 
     | 
|
| 
       3 
3 
     | 
    
         
             
            SpreePaypalCheckout = {
         
     | 
| 
       4 
4 
     | 
    
         
             
              hideSettings: function(paymentMethod) {
         
     | 
| 
       5 
5 
     | 
    
         
             
                if (SpreePaypalCheckout.paymentMethodID && paymentMethod.val() == SpreePaypalCheckout.paymentMethodID) {
         
     | 
| 
       6 
     | 
    
         
            -
                  $('.payment-method-settings').children().hide();
         
     | 
| 
      
 6 
     | 
    
         
            +
                  // $('.payment-method-settings').children().hide();
         
     | 
| 
       7 
7 
     | 
    
         
             
                  $('#payment_amount').prop('disabled', 'disabled');
         
     | 
| 
       8 
8 
     | 
    
         
             
                  $('button[type="submit"]').prop('disabled', 'disabled');
         
     | 
| 
       9 
9 
     | 
    
         
             
                  $('#paypal-warning').show();
         
     | 
| 
         @@ -1,6 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Spree
         
     | 
| 
       2 
2 
     | 
    
         
             
              class PaypalCheckoutController < StoreController
         
     | 
| 
       3 
3 
     | 
    
         
             
                skip_before_action :verify_authenticity_token
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
       4 
5 
     | 
    
         
             
                def express
         
     | 
| 
       5 
6 
     | 
    
         
             
                  order = current_order || raise(ActiveRecord::RecordNotFound)
         
     | 
| 
       6 
7 
     | 
    
         
             
                  items = order.line_items.map(&method(:line_item))
         
     | 
| 
         @@ -27,22 +28,17 @@ module Spree 
     | 
|
| 
       27 
28 
     | 
    
         
             
                    }
         
     | 
| 
       28 
29 
     | 
    
         
             
                  end
         
     | 
| 
       29 
30 
     | 
    
         | 
| 
       30 
     | 
    
         
            -
                   
     | 
| 
      
 31 
     | 
    
         
            +
                  details = express_checkout_request_details(order: order, items: items, tax_adjustments: tax_adjustments, promotion_adjustments: promotion_adjustments)
         
     | 
| 
      
 32 
     | 
    
         
            +
                  pp_response = provider.parse_response(provider.create_order(order, details))
         
     | 
| 
       31 
33 
     | 
    
         | 
| 
       32 
34 
     | 
    
         
             
                  render json: pp_response
         
     | 
| 
       33 
35 
     | 
    
         
             
                end
         
     | 
| 
       34 
36 
     | 
    
         | 
| 
       35 
37 
     | 
    
         
             
                def confirm
         
     | 
| 
       36 
38 
     | 
    
         
             
                  order = current_order || raise(ActiveRecord::RecordNotFound)
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
                   
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
                      token: response['id'],
         
     | 
| 
       41 
     | 
    
         
            -
                      payer_id: response['payer']['payer_id']
         
     | 
| 
       42 
     | 
    
         
            -
                    }),
         
     | 
| 
       43 
     | 
    
         
            -
                    amount: order.total,
         
     | 
| 
       44 
     | 
    
         
            -
                    payment_method: payment_method
         
     | 
| 
       45 
     | 
    
         
            -
                  })
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                  response = provider.set_payment_records(order, params[:number], payment_method)
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
       46 
42 
     | 
    
         
             
                  render json: response
         
     | 
| 
       47 
43 
     | 
    
         
             
                end
         
     | 
| 
       48 
44 
     | 
    
         | 
| 
         @@ -88,6 +84,7 @@ module Spree 
     | 
|
| 
       88 
84 
     | 
    
         
             
                    intent: 'CAPTURE',
         
     | 
| 
       89 
85 
     | 
    
         
             
                    purchase_units: [
         
     | 
| 
       90 
86 
     | 
    
         
             
                      {
         
     | 
| 
      
 87 
     | 
    
         
            +
                        invoice_id: current_order.number,
         
     | 
| 
       91 
88 
     | 
    
         
             
                        amount: {
         
     | 
| 
       92 
89 
     | 
    
         
             
                          currency_code: current_order.currency,
         
     | 
| 
       93 
90 
     | 
    
         
             
                          value: order.total,
         
     | 
| 
         @@ -21,38 +21,24 @@ module Spree 
     | 
|
| 
       21 
21 
     | 
    
         
             
                end
         
     | 
| 
       22 
22 
     | 
    
         | 
| 
       23 
23 
     | 
    
         
             
                def generate_access_token
         
     | 
| 
       24 
     | 
    
         
            -
                   
     | 
| 
       25 
     | 
    
         
            -
                   
     | 
| 
       26 
     | 
    
         
            -
                  request.basic_auth("#{preferred_api_key}", "#{preferred_secret_key}")
         
     | 
| 
       27 
     | 
    
         
            -
                  request.content_type = 'application/json'
         
     | 
| 
       28 
     | 
    
         
            -
                  request.body = 'grant_type=client_credentials'
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
                  req_options = { use_ssl: uri.scheme == 'https' }
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
                  response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
         
     | 
| 
       33 
     | 
    
         
            -
                    response = http.request(request)
         
     | 
| 
       34 
     | 
    
         
            -
                  end
         
     | 
| 
       35 
     | 
    
         
            -
                  return JSON.parse(response.read_body)['access_token']
         
     | 
| 
      
 24 
     | 
    
         
            +
                  response = post_response_without_token(api_url('v1/oauth2/token'))
         
     | 
| 
      
 25 
     | 
    
         
            +
                  return response['access_token']
         
     | 
| 
       36 
26 
     | 
    
         
             
                end
         
     | 
| 
       37 
27 
     | 
    
         | 
| 
       38 
28 
     | 
    
         
             
                def generate_client_token
         
     | 
| 
       39 
     | 
    
         
            -
                   
     | 
| 
       40 
     | 
    
         
            -
                  return post_response(uri)
         
     | 
| 
      
 29 
     | 
    
         
            +
                  post_response(api_url('v1/identity/generate-token'))
         
     | 
| 
       41 
30 
     | 
    
         
             
                end
         
     | 
| 
       42 
31 
     | 
    
         | 
| 
       43 
32 
     | 
    
         
             
                def create_order order, body
         
     | 
| 
       44 
     | 
    
         
            -
                   
     | 
| 
       45 
     | 
    
         
            -
                  return post_response(uri, body)
         
     | 
| 
      
 33 
     | 
    
         
            +
                  post_response(api_url('v2/checkout/orders'), body)
         
     | 
| 
       46 
34 
     | 
    
         
             
                end
         
     | 
| 
       47 
35 
     | 
    
         | 
| 
       48 
36 
     | 
    
         
             
                def capture_payment order_id
         
     | 
| 
       49 
     | 
    
         
            -
                   
     | 
| 
       50 
     | 
    
         
            -
                  return post_response(uri)
         
     | 
| 
      
 37 
     | 
    
         
            +
                  post_response(api_url("v2/checkout/orders/#{order_id}/capture"))
         
     | 
| 
       51 
38 
     | 
    
         
             
                end
         
     | 
| 
       52 
39 
     | 
    
         | 
| 
       53 
40 
     | 
    
         
             
                def refund_payment id, body
         
     | 
| 
       54 
     | 
    
         
            -
                   
     | 
| 
       55 
     | 
    
         
            -
                  return post_response(uri, body)
         
     | 
| 
      
 41 
     | 
    
         
            +
                  post_response(api_url("v2/payments/captures/#{id}/refund"), body)
         
     | 
| 
       56 
42 
     | 
    
         
             
                end
         
     | 
| 
       57 
43 
     | 
    
         | 
| 
       58 
44 
     | 
    
         
             
                def purchase(amount, express_checkout, gateway_options={})
         
     | 
| 
         @@ -78,8 +64,10 @@ module Spree 
     | 
|
| 
       78 
64 
     | 
    
         
             
                    refund_type: refund_type,
         
     | 
| 
       79 
65 
     | 
    
         
             
                    refund_source: 'any'
         
     | 
| 
       80 
66 
     | 
    
         
             
                  }
         
     | 
| 
       81 
     | 
    
         
            -
                   
     | 
| 
       82 
     | 
    
         
            -
                   
     | 
| 
      
 67 
     | 
    
         
            +
                  refund_entry = refund_payment(payment.source.transaction_id, refund_transaction)
         
     | 
| 
      
 68 
     | 
    
         
            +
                  refund_transaction_response = parse_response(refund_entry)
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
                  if success_response?(refund_transaction_response)
         
     | 
| 
       83 
71 
     | 
    
         
             
                    payment.source.update({
         
     | 
| 
       84 
72 
     | 
    
         
             
                      :refunded_at => Time.now,
         
     | 
| 
       85 
73 
     | 
    
         
             
                      :refund_transaction_id => refund_transaction_response['id'],
         
     | 
| 
         @@ -87,7 +75,7 @@ module Spree 
     | 
|
| 
       87 
75 
     | 
    
         
             
                      :refund_type => refund_type
         
     | 
| 
       88 
76 
     | 
    
         
             
                    })
         
     | 
| 
       89 
77 
     | 
    
         | 
| 
       90 
     | 
    
         
            -
                    payment.class.create!(
         
     | 
| 
      
 78 
     | 
    
         
            +
                    refund_payment = payment.class.create!(
         
     | 
| 
       91 
79 
     | 
    
         
             
                      :order => payment.order,
         
     | 
| 
       92 
80 
     | 
    
         
             
                      :source => payment,
         
     | 
| 
       93 
81 
     | 
    
         
             
                      :payment_method => payment.payment_method,
         
     | 
| 
         @@ -95,6 +83,7 @@ module Spree 
     | 
|
| 
       95 
83 
     | 
    
         
             
                      :response_code => refund_transaction_response['id'],
         
     | 
| 
       96 
84 
     | 
    
         
             
                      :state => 'completed'
         
     | 
| 
       97 
85 
     | 
    
         
             
                    )
         
     | 
| 
      
 86 
     | 
    
         
            +
                    refund_payment.log_entries.create!(details: refund_entry.to_yaml)
         
     | 
| 
       98 
87 
     | 
    
         
             
                  end
         
     | 
| 
       99 
88 
     | 
    
         
             
                  refund_transaction_response
         
     | 
| 
       100 
89 
     | 
    
         
             
                end
         
     | 
| 
         @@ -102,14 +91,84 @@ module Spree 
     | 
|
| 
       102 
91 
     | 
    
         
             
                def post_response uri, body={}
         
     | 
| 
       103 
92 
     | 
    
         
             
                  request = Net::HTTP::Post.new(uri)
         
     | 
| 
       104 
93 
     | 
    
         
             
                  request['Authorization'] = "Bearer #{generate_access_token}"
         
     | 
| 
      
 94 
     | 
    
         
            +
                  request.body = body.to_json if body.present?
         
     | 
| 
      
 95 
     | 
    
         
            +
             
     | 
| 
      
 96 
     | 
    
         
            +
                  return hit_api(request: request, body: body, uri: uri)
         
     | 
| 
      
 97 
     | 
    
         
            +
                end
         
     | 
| 
      
 98 
     | 
    
         
            +
             
     | 
| 
      
 99 
     | 
    
         
            +
                def post_response_without_token uri, body={}
         
     | 
| 
      
 100 
     | 
    
         
            +
                  request = Net::HTTP::Post.new(uri)
         
     | 
| 
      
 101 
     | 
    
         
            +
                  request.basic_auth("#{preferred_api_key}", "#{preferred_secret_key}")
         
     | 
| 
      
 102 
     | 
    
         
            +
                  request.body = 'grant_type=client_credentials'
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
      
 104 
     | 
    
         
            +
                  return parse_response(hit_api(request: request, body: body, uri: uri))
         
     | 
| 
      
 105 
     | 
    
         
            +
                end
         
     | 
| 
      
 106 
     | 
    
         
            +
             
     | 
| 
      
 107 
     | 
    
         
            +
                def hit_api request:, body:, uri:
         
     | 
| 
       105 
108 
     | 
    
         
             
                  request.content_type = 'application/json'
         
     | 
| 
       106 
109 
     | 
    
         
             
                  req_options = { use_ssl: uri.scheme == 'https' }
         
     | 
| 
       107 
110 
     | 
    
         | 
| 
       108 
     | 
    
         
            -
                  request.body = body.to_json if body.present?
         
     | 
| 
       109 
111 
     | 
    
         
             
                  response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
         
     | 
| 
       110 
112 
     | 
    
         
             
                    response = http.request(request)
         
     | 
| 
       111 
113 
     | 
    
         
             
                  end
         
     | 
| 
       112 
     | 
    
         
            -
                   
     | 
| 
      
 114 
     | 
    
         
            +
                  response
         
     | 
| 
      
 115 
     | 
    
         
            +
                end
         
     | 
| 
      
 116 
     | 
    
         
            +
             
     | 
| 
      
 117 
     | 
    
         
            +
                def parse_response response
         
     | 
| 
      
 118 
     | 
    
         
            +
                  JSON.parse(response.read_body) rescue response
         
     | 
| 
      
 119 
     | 
    
         
            +
                end
         
     | 
| 
      
 120 
     | 
    
         
            +
             
     | 
| 
      
 121 
     | 
    
         
            +
                def api_url url
         
     | 
| 
      
 122 
     | 
    
         
            +
                  URI.parse("https://#{preferred_server}/#{url}")
         
     | 
| 
      
 123 
     | 
    
         
            +
                end
         
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
      
 125 
     | 
    
         
            +
                def set_payment_records order, number, payment_method
         
     | 
| 
      
 126 
     | 
    
         
            +
                  raw_response = response = nil
         
     | 
| 
      
 127 
     | 
    
         
            +
                  success = false
         
     | 
| 
      
 128 
     | 
    
         
            +
                  begin
         
     | 
| 
      
 129 
     | 
    
         
            +
                    payment_entry = capture_payment(number)
         
     | 
| 
      
 130 
     | 
    
         
            +
                    response = parse_response(payment_entry)
         
     | 
| 
      
 131 
     | 
    
         
            +
                    success = success_response?(response)
         
     | 
| 
      
 132 
     | 
    
         
            +
             
     | 
| 
      
 133 
     | 
    
         
            +
                    payment = order.payments.create!({
         
     | 
| 
      
 134 
     | 
    
         
            +
                      source: Spree::PaypalApiCheckout.create({
         
     | 
| 
      
 135 
     | 
    
         
            +
                        token: response['id'],
         
     | 
| 
      
 136 
     | 
    
         
            +
                        payer_id: response['payer']['payer_id']
         
     | 
| 
      
 137 
     | 
    
         
            +
                      }),
         
     | 
| 
      
 138 
     | 
    
         
            +
                      amount: order.total,
         
     | 
| 
      
 139 
     | 
    
         
            +
                      payment_method: payment_method
         
     | 
| 
      
 140 
     | 
    
         
            +
                    })
         
     | 
| 
      
 141 
     | 
    
         
            +
                  rescue Exception => e
         
     | 
| 
      
 142 
     | 
    
         
            +
                    raw_response = e.response.body
         
     | 
| 
      
 143 
     | 
    
         
            +
                    response = response_error(raw_response)
         
     | 
| 
      
 144 
     | 
    
         
            +
                  rescue JSON::ParserError
         
     | 
| 
      
 145 
     | 
    
         
            +
                    response = json_error(raw_response)
         
     | 
| 
      
 146 
     | 
    
         
            +
                  end
         
     | 
| 
      
 147 
     | 
    
         
            +
             
     | 
| 
      
 148 
     | 
    
         
            +
                  payment.log_entries.create!(details: payment_entry.to_yaml)
         
     | 
| 
      
 149 
     | 
    
         
            +
                  response
         
     | 
| 
      
 150 
     | 
    
         
            +
                end
         
     | 
| 
      
 151 
     | 
    
         
            +
             
     | 
| 
      
 152 
     | 
    
         
            +
                def response_error(raw_response)
         
     | 
| 
      
 153 
     | 
    
         
            +
                  begin
         
     | 
| 
      
 154 
     | 
    
         
            +
                    parse(raw_response)
         
     | 
| 
      
 155 
     | 
    
         
            +
                  rescue JSON::ParserError
         
     | 
| 
      
 156 
     | 
    
         
            +
                    json_error(raw_response)
         
     | 
| 
      
 157 
     | 
    
         
            +
                  end
         
     | 
| 
      
 158 
     | 
    
         
            +
                end
         
     | 
| 
      
 159 
     | 
    
         
            +
             
     | 
| 
      
 160 
     | 
    
         
            +
                def json_error(raw_response)
         
     | 
| 
      
 161 
     | 
    
         
            +
                  msg = 'Invalid response. Please contact team if you continue to receive this message.'
         
     | 
| 
      
 162 
     | 
    
         
            +
                  msg += "  (The raw response returned by the API was #{raw_response.inspect})"
         
     | 
| 
      
 163 
     | 
    
         
            +
                  {
         
     | 
| 
      
 164 
     | 
    
         
            +
                    "error" => {
         
     | 
| 
      
 165 
     | 
    
         
            +
                      "message" => msg
         
     | 
| 
      
 166 
     | 
    
         
            +
                    }
         
     | 
| 
      
 167 
     | 
    
         
            +
                  }
         
     | 
| 
      
 168 
     | 
    
         
            +
                end
         
     | 
| 
      
 169 
     | 
    
         
            +
             
     | 
| 
      
 170 
     | 
    
         
            +
                def success_response? response
         
     | 
| 
      
 171 
     | 
    
         
            +
                  response.key?('status') && response.key?('id') && (response['status'] == 'COMPLETED')
         
     | 
| 
       113 
172 
     | 
    
         
             
                end
         
     | 
| 
       114 
173 
     | 
    
         
             
              end
         
     | 
| 
       115 
174 
     | 
    
         
             
            end
         
     | 
| 
         @@ -0,0 +1,22 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Spree
         
     | 
| 
      
 2 
     | 
    
         
            +
              module LogEntryDecorator
         
     | 
| 
      
 3 
     | 
    
         
            +
                def parsed_details
         
     | 
| 
      
 4 
     | 
    
         
            +
                  @details ||= YAML.safe_load(details, [ActiveMerchant::Billing::Response, Net::HTTPCreated, URI::HTTPS, URI::RFC3986_Parser, Symbol, Regexp, Object])
         
     | 
| 
      
 5 
     | 
    
         
            +
                end
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                def success_parsed_details?
         
     | 
| 
      
 8 
     | 
    
         
            +
                  if parsed_details.is_a?(Net::HTTPCreated)
         
     | 
| 
      
 9 
     | 
    
         
            +
                    parsed_paypal_entry == 'COMPLETED'
         
     | 
| 
      
 10 
     | 
    
         
            +
                  elsif parsed_details.is_a?(ActiveMerchant::Billing::Response)
         
     | 
| 
      
 11 
     | 
    
         
            +
                    parsed_details.success?
         
     | 
| 
      
 12 
     | 
    
         
            +
                  else
         
     | 
| 
      
 13 
     | 
    
         
            +
                    true
         
     | 
| 
      
 14 
     | 
    
         
            +
                  end
         
     | 
| 
      
 15 
     | 
    
         
            +
                end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                def parsed_paypal_entry
         
     | 
| 
      
 18 
     | 
    
         
            +
                  JSON.parse(parsed_details.read_body)['status'] rescue parsed_details.to_json
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
              end
         
     | 
| 
      
 21 
     | 
    
         
            +
            end
         
     | 
| 
      
 22 
     | 
    
         
            +
            ::Spree::LogEntry.prepend(Spree::LogEntryDecorator)
         
     | 
| 
         @@ -0,0 +1,8 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <% currency = ::Money::Currency.new(entry.source.currency) %>
         
     | 
| 
      
 2 
     | 
    
         
            +
            <tr>
         
     | 
| 
      
 3 
     | 
    
         
            +
              <td><b><%= Spree.t('paypal.status').capitalize %></b></td>
         
     | 
| 
      
 4 
     | 
    
         
            +
              <td><%= entry.source.amount.negative? ? entry.source.source.source.state : entry.source.state %></td>
         
     | 
| 
      
 5 
     | 
    
         
            +
              <td><%= entry.parsed_paypal_entry %></td>
         
     | 
| 
      
 6 
     | 
    
         
            +
              <td><%= currency.symbol %><%= entry.source.amount %></td>
         
     | 
| 
      
 7 
     | 
    
         
            +
              <td><%= entry.source.response_code %></td>
         
     | 
| 
      
 8 
     | 
    
         
            +
            </tr>
         
     | 
| 
         @@ -0,0 +1,27 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <%= render :partial => 'spree/admin/shared/order_tabs', locals: { current: 'Payments' }%>
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            <% content_for :page_title do %>
         
     | 
| 
      
 4 
     | 
    
         
            +
              <i class="icon-arrow-right"></i>
         
     | 
| 
      
 5 
     | 
    
         
            +
              <%= I18n.t(:one, scope: "activerecord.models.spree/payment") %>
         
     | 
| 
      
 6 
     | 
    
         
            +
              <i class="icon-arrow-right"></i>
         
     | 
| 
      
 7 
     | 
    
         
            +
              <%= Spree.t(:log_entries) %>
         
     | 
| 
      
 8 
     | 
    
         
            +
            <% end %>
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            <% content_for :page_actions do %>
         
     | 
| 
      
 11 
     | 
    
         
            +
              <%= button_link_to Spree.t(:logs), spree.admin_order_payment_log_entries_url(@order, @payment), icon: 'file.svg' %>
         
     | 
| 
      
 12 
     | 
    
         
            +
            <% end %>
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            <table class='table table-striped' id='listing_log_entries'>
         
     | 
| 
      
 15 
     | 
    
         
            +
              <% @log_entries.each do |entry| %>
         
     | 
| 
      
 16 
     | 
    
         
            +
                <thead>
         
     | 
| 
      
 17 
     | 
    
         
            +
                  <tr class="log_entry <%= entry.success_parsed_details? ? 'success' : 'fail' %>">
         
     | 
| 
      
 18 
     | 
    
         
            +
                    <td colspan='2'>
         
     | 
| 
      
 19 
     | 
    
         
            +
                      <i class='icon icon-<%= entry.success_parsed_details? ? 'ok-circle' : 'remove-sign' %>'></i> <%= pretty_time(entry.created_at) %>
         
     | 
| 
      
 20 
     | 
    
         
            +
                    </td>
         
     | 
| 
      
 21 
     | 
    
         
            +
                  </tr>
         
     | 
| 
      
 22 
     | 
    
         
            +
                </thead>
         
     | 
| 
      
 23 
     | 
    
         
            +
                <tbody>
         
     | 
| 
      
 24 
     | 
    
         
            +
                  <%= render "spree/admin/log_entries/#{@payment.payment_method.method_type.gsub(' ', '').underscore}", entry: entry %>
         
     | 
| 
      
 25 
     | 
    
         
            +
                </tbody>
         
     | 
| 
      
 26 
     | 
    
         
            +
              <% end %>
         
     | 
| 
      
 27 
     | 
    
         
            +
            </table>
         
     | 
| 
         @@ -1,5 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            <div id="paypal-button-container" class="paypal-button-container"></div>
         
     | 
| 
       2 
     | 
    
         
            -
            <script src=" 
     | 
| 
      
 2 
     | 
    
         
            +
            <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
         
     | 
| 
       3 
3 
     | 
    
         
             
            <script type="text/javascript" src="https://www.paypal.com/sdk/js?client-id=<%= payment_method.preferred_api_key %>¤cy=<%= @order.currency %>"></script>
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            <script type="text/javascript">
         
     | 
    
        data/config/locales/de.yml
    CHANGED
    
    | 
         @@ -15,6 +15,7 @@ de: 
     | 
|
| 
       15 
15 
     | 
    
         
             
                  refund_unsuccessful: "PayPal Erstattung nicht erfolgreich"
         
     | 
| 
       16 
16 
     | 
    
         
             
                  actions:
         
     | 
| 
       17 
17 
     | 
    
         
             
                    refund: "Erstatten"
         
     | 
| 
      
 18 
     | 
    
         
            +
                  status: 'Toestand'
         
     | 
| 
       18 
19 
     | 
    
         
             
                  flash:
         
     | 
| 
       19 
20 
     | 
    
         
             
                    cancel: "Sie wollen PayPal doch nicht benutzen? Kein Problem."
         
     | 
| 
       20 
21 
     | 
    
         
             
                    connection_failed: "Verbindung zu Paypal nicht erfolgreich."
         
     | 
    
        data/config/locales/en.yml
    CHANGED
    
    
    
        data/config/locales/es.yml
    CHANGED
    
    
    
        data/config/locales/it.yml
    CHANGED
    
    
    
        data/config/locales/pl.yml
    CHANGED
    
    
    
        data/config/locales/pt.yml
    CHANGED
    
    | 
         @@ -15,6 +15,7 @@ pt: 
     | 
|
| 
       15 
15 
     | 
    
         
             
                  refund_unsuccessful: "Não foi possível reembolsar o pagamento de PayPal"
         
     | 
| 
       16 
16 
     | 
    
         
             
                  actions:
         
     | 
| 
       17 
17 
     | 
    
         
             
                    refund: "Reembolso"
         
     | 
| 
      
 18 
     | 
    
         
            +
                  status: Status
         
     | 
| 
       18 
19 
     | 
    
         
             
                  flash:
         
     | 
| 
       19 
20 
     | 
    
         
             
                    cancel: "Não pretende usar PayPal? Não há problema."
         
     | 
| 
       20 
21 
     | 
    
         
             
                    connection_failed: "Não foi possível estabelecer ligação com o PayPal."
         
     | 
| 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            Gem::Specification.new do |s|
         
     | 
| 
       2 
2 
     | 
    
         
             
              s.name = "spree_paypal_api_checkout".freeze
         
     | 
| 
       3 
     | 
    
         
            -
              s.version = "0.1. 
     | 
| 
      
 3 
     | 
    
         
            +
              s.version = "0.1.3"
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
         
     | 
| 
       6 
6 
     | 
    
         
             
              s.require_paths = ["lib".freeze]
         
     | 
| 
         @@ -8,7 +8,7 @@ Gem::Specification.new do |s| 
     | 
|
| 
       8 
8 
     | 
    
         
             
              s.date = "2022-02-22"
         
     | 
| 
       9 
9 
     | 
    
         
             
              s.description = "Adds PayPal API Checkout as a Payment Method to Spree Commerce".freeze
         
     | 
| 
       10 
10 
     | 
    
         
             
              s.email = "gems@spreecommerce.com".freeze
         
     | 
| 
       11 
     | 
    
         
            -
              s.files = [".gitignore".freeze, "Gemfile".freeze, "README.md".freeze, "Rakefile".freeze, "app/assets/javascripts/spree/backend/spree_paypal_checkout.js".freeze, "app/assets/javascripts/spree/frontend/spree_paypal_checkout.js".freeze, "app/assets/stylesheets/spree/backend/spree_paypal_checkout.css".freeze, "app/assets/stylesheets/spree/frontend/spree_paypal_checkout.css".freeze, "app/controllers/spree/admin/payments_controller_decorator.rb".freeze, "app/controllers/spree/admin/paypal_checkout_payments_controller.rb".freeze, "app/controllers/spree/paypal_checkout_controller.rb".freeze, "app/models/spree/gateway/pay_pal_checkout.rb".freeze, "app/models/spree/paypal_api_checkout.rb".freeze, "app/views/spree/admin/payments/_paypal_checkout_complete.html.erb".freeze, "app/views/spree/admin/payments/paypal_checkout_refund.html.erb".freeze, "app/views/spree/admin/payments/source_forms/_paypal_checkout.html.erb".freeze, "app/views/spree/admin/payments/source_views/_paypal_checkout.html.erb".freeze, "app/views/spree/checkout/payment/_paypal_checkout.html.erb".freeze, "config/locales/de.yml".freeze, "config/locales/en.yml".freeze, "config/locales/es.yml".freeze, "config/locales/it.yml".freeze, "config/locales/pl.yml".freeze, "config/locales/pt.yml".freeze, "config/routes.rb".freeze, "db/migrate/20220620042734_create_spree_paypal_api_checkouts.rb".freeze, "lib/generators/spree_paypal_api_checkout/install/install_generator.rb".freeze, "lib/spree_paypal_api_checkout.rb".freeze, "lib/spree_paypal_api_checkout/engine.rb".freeze, "lib/spree_paypal_api_checkout/version.rb".freeze, "script/rails".freeze, "spree_paypal_api_checkout.gemspec".freeze]
         
     | 
| 
      
 11 
     | 
    
         
            +
              s.files = [".gitignore".freeze, "Gemfile".freeze, "README.md".freeze, "Rakefile".freeze, "app/assets/javascripts/spree/backend/spree_paypal_checkout.js".freeze, "app/assets/javascripts/spree/frontend/spree_paypal_checkout.js".freeze, "app/assets/stylesheets/spree/backend/spree_paypal_checkout.css".freeze, "app/assets/stylesheets/spree/frontend/spree_paypal_checkout.css".freeze, "app/controllers/spree/admin/payments_controller_decorator.rb".freeze, "app/models/spree/log_entry_decorator.rb".freeze, "app/controllers/spree/admin/paypal_checkout_payments_controller.rb".freeze, "app/controllers/spree/paypal_checkout_controller.rb".freeze, "app/models/spree/gateway/pay_pal_checkout.rb".freeze, "app/models/spree/paypal_api_checkout.rb".freeze, "app/views/spree/admin/payments/_paypal_checkout_complete.html.erb".freeze, "app/views/spree/admin/payments/paypal_checkout_refund.html.erb".freeze, "app/views/spree/admin/payments/source_forms/_paypal_checkout.html.erb".freeze, "app/views/spree/admin/payments/source_views/_paypal_checkout.html.erb".freeze, "app/views/spree/checkout/payment/_paypal_checkout.html.erb".freeze, "app/views/spree/admin/log_entries/_paypal_checkout.html.erb".freeze, "app/views/spree/admin/log_entries/index.html.erb".freeze, "config/locales/de.yml".freeze, "config/locales/en.yml".freeze, "config/locales/es.yml".freeze, "config/locales/it.yml".freeze, "config/locales/pl.yml".freeze, "config/locales/pt.yml".freeze, "config/routes.rb".freeze, "db/migrate/20220620042734_create_spree_paypal_api_checkouts.rb".freeze, "lib/generators/spree_paypal_api_checkout/install/install_generator.rb".freeze, "lib/spree_paypal_api_checkout.rb".freeze, "lib/spree_paypal_api_checkout/engine.rb".freeze, "lib/spree_paypal_api_checkout/version.rb".freeze, "script/rails".freeze, "spree_paypal_api_checkout.gemspec".freeze]
         
     | 
| 
       12 
12 
     | 
    
         
             
              s.homepage = "http://www.spreecommerce.com".freeze
         
     | 
| 
       13 
13 
     | 
    
         
             
              s.required_ruby_version = Gem::Requirement.new(">= 2.2.2".freeze)
         
     | 
| 
       14 
14 
     | 
    
         
             
              s.requirements = ["none".freeze]
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: spree_paypal_api_checkout
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.1.3
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Spree Commerce
         
     | 
| 
         @@ -362,7 +362,10 @@ files: 
     | 
|
| 
       362 
362 
     | 
    
         
             
            - app/controllers/spree/admin/paypal_checkout_payments_controller.rb
         
     | 
| 
       363 
363 
     | 
    
         
             
            - app/controllers/spree/paypal_checkout_controller.rb
         
     | 
| 
       364 
364 
     | 
    
         
             
            - app/models/spree/gateway/pay_pal_checkout.rb
         
     | 
| 
      
 365 
     | 
    
         
            +
            - app/models/spree/log_entry_decorator.rb
         
     | 
| 
       365 
366 
     | 
    
         
             
            - app/models/spree/paypal_api_checkout.rb
         
     | 
| 
      
 367 
     | 
    
         
            +
            - app/views/spree/admin/log_entries/_paypal_checkout.html.erb
         
     | 
| 
      
 368 
     | 
    
         
            +
            - app/views/spree/admin/log_entries/index.html.erb
         
     | 
| 
       366 
369 
     | 
    
         
             
            - app/views/spree/admin/payments/_paypal_checkout_complete.html.erb
         
     | 
| 
       367 
370 
     | 
    
         
             
            - app/views/spree/admin/payments/paypal_checkout_refund.html.erb
         
     | 
| 
       368 
371 
     | 
    
         
             
            - app/views/spree/admin/payments/source_forms/_paypal_checkout.html.erb
         
     |