paypal 0.9.0 → 1.0.0
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.
- data/README +7 -0
- data/Rakefile +3 -3
- data/lib/helper.rb +22 -5
- data/lib/notification.rb +11 -1
- metadata +4 -4
data/README
CHANGED
@@ -69,6 +69,13 @@ sandbox account to use while the application is running in development mode.
|
|
69
69
|
|
70
70
|
== Changelog
|
71
71
|
|
72
|
+
2005-07-26 -- 0.9.5
|
73
|
+
* Added tax to the helper parameters
|
74
|
+
* fixed bug when money class was used to pass in amount. Cents were always 00 (doh!)
|
75
|
+
* Added invoice and custom optional parameters
|
76
|
+
* Added charset = utf-8 to all paypal posts
|
77
|
+
* Wrongly used undefined_quanitity parameter in 0.9.1, this caused users to be prompted for the quanitity on the paypal checkout page... fixed
|
78
|
+
|
72
79
|
2005-07-22 -- 0.9.1
|
73
80
|
* support for cancel_url as well as notify_url. This means you can now set the IPN callback address from the paypal_setup method and
|
74
81
|
you don't have to do that in the paypal admin interface!
|
data/Rakefile
CHANGED
@@ -5,7 +5,7 @@ require 'rake/rdoctask'
|
|
5
5
|
require 'rake/gempackagetask'
|
6
6
|
require 'rake/contrib/rubyforgepublisher'
|
7
7
|
|
8
|
-
PKG_VERSION = "0.
|
8
|
+
PKG_VERSION = "1.0.0"
|
9
9
|
PKG_NAME = "paypal"
|
10
10
|
PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
|
11
11
|
|
@@ -77,8 +77,8 @@ end
|
|
77
77
|
|
78
78
|
spec = Gem::Specification.new do |s|
|
79
79
|
s.name = PKG_NAME
|
80
|
-
s.version = PKG_VERSION
|
81
|
-
s.summary = "Paypal IPN integration for rails
|
80
|
+
s.version = PKG_VERSION
|
81
|
+
s.description = s.summary = "Paypal IPN integration library for rails and other web applications"
|
82
82
|
s.has_rdoc = true
|
83
83
|
|
84
84
|
s.files = %w(README Rakefile MIT-LICENSE) + Dir['lib/**/*'] + Dir['misc/*'] + Dir['tests/*']
|
data/lib/helper.rb
CHANGED
@@ -16,8 +16,9 @@ module Paypal
|
|
16
16
|
module Helpers
|
17
17
|
|
18
18
|
# Convenience helper. Can replace <%= form_tag Paypal::Notification.ipn_url %>
|
19
|
-
|
20
|
-
|
19
|
+
# takes optional url parameter, default is Paypal::Notification.ipn_url
|
20
|
+
def paypal_form_tag(url = Paypal::Notification.ipn_url)
|
21
|
+
form_tag(url)
|
21
22
|
end
|
22
23
|
|
23
24
|
# This helper creates the hidden form data which is needed for a paypal purchase.
|
@@ -46,6 +47,11 @@ module Paypal
|
|
46
47
|
# the shipping address should be collected in our application, not by paypal.
|
47
48
|
# * <tt>:no_note</tt> -- default is '1'
|
48
49
|
# * <tt>:currency</tt> -- default is 'USD'
|
50
|
+
# * <tt>:tax</tt> -- the tax for the store purchase. Same format as the amount parameter but optional
|
51
|
+
# * <tt>:invoice</tt> -- Unique invoice number. User will never see this. optional
|
52
|
+
# * <tt>:custom</tt> -- Custom field. User will never see this. optional
|
53
|
+
# * <tt>:no_utf8</tt> -- if set to false this prevents the charset = utf-8 hidden field. (I don't know why you
|
54
|
+
# would want to disable this... )
|
49
55
|
#
|
50
56
|
# Examples:
|
51
57
|
#
|
@@ -65,13 +71,20 @@ module Paypal
|
|
65
71
|
}.merge(options)
|
66
72
|
|
67
73
|
# We accept both, strings and money objects as amount
|
68
|
-
amount = amount.cents / 100 if amount.respond_to?(:cents)
|
74
|
+
amount = amount.cents.to_f / 100.0 if amount.respond_to?(:cents)
|
69
75
|
amount = sprintf("%.2f", amount)
|
70
|
-
|
76
|
+
|
77
|
+
# same for tax
|
78
|
+
tax = params[:tax]
|
79
|
+
if tax
|
80
|
+
tax = tax.cents.to_f / 100.0 if tax.respond_to?(:cents)
|
81
|
+
tax = sprintf("%.2f", tax)
|
82
|
+
end
|
83
|
+
|
71
84
|
# Build the form
|
72
85
|
returning button = [] do
|
73
86
|
button << tag(:input, :type => 'hidden', :name => 'cmd', :value => "_xclick")
|
74
|
-
button << tag(:input, :type => 'hidden', :name => '
|
87
|
+
button << tag(:input, :type => 'hidden', :name => 'quantity', :value => 1)
|
75
88
|
button << tag(:input, :type => 'hidden', :name => 'business', :value => business)
|
76
89
|
button << tag(:input, :type => 'hidden', :name => 'amount', :value => amount)
|
77
90
|
button << tag(:input, :type => 'hidden', :name => 'item_number', :value => item_number)
|
@@ -81,10 +94,14 @@ module Paypal
|
|
81
94
|
button << tag(:input, :type => 'hidden', :name => 'return', :value => params[:return_url]) if params[:return_url]
|
82
95
|
button << tag(:input, :type => 'hidden', :name => 'notify_url', :value => params[:notify_url]) if params[:notify_url]
|
83
96
|
button << tag(:input, :type => 'hidden', :name => 'cancel_return', :value => params[:cancel_url]) if params[:cancel_url]
|
97
|
+
button << tag(:input, :type => 'hidden', :name => 'tax', :value => tax) if tax
|
98
|
+
button << tag(:input, :type => 'hidden', :name => 'invoice', :value => params[:invoice]) if params[:invoice]
|
99
|
+
button << tag(:input, :type => 'hidden', :name => 'custom', :value => params[:custom]) if params[:custom]
|
84
100
|
|
85
101
|
# if amount was a object of type money or something compatible we will use its currency,
|
86
102
|
# otherwise get the currency from the options. default is USD
|
87
103
|
button << tag(:input, :type => 'hidden', :name => 'currency_code', :value => amount.respond_to?(:currency) ? amount.currency : params[:currency])
|
104
|
+
button << tag(:input, :type => 'hidden', :name => 'charset', :value => 'utf-8') unless params[:no_utf8]
|
88
105
|
end.join("\n")
|
89
106
|
end
|
90
107
|
|
data/lib/notification.rb
CHANGED
@@ -69,7 +69,7 @@ module Paypal
|
|
69
69
|
# sometimes it can happen that we get the notification much later.
|
70
70
|
# One possible scenario is that our web application was down. In this case paypal tries several
|
71
71
|
# times an hour to inform us about the notification
|
72
|
-
def
|
72
|
+
def received_at
|
73
73
|
Time.parse params['payment_date']
|
74
74
|
end
|
75
75
|
|
@@ -109,6 +109,16 @@ module Paypal
|
|
109
109
|
params['item_number']
|
110
110
|
end
|
111
111
|
|
112
|
+
# This is the invocie which you passed to paypal
|
113
|
+
def invoice
|
114
|
+
params['invoice']
|
115
|
+
end
|
116
|
+
|
117
|
+
# This is the custom field which you passed to paypal
|
118
|
+
def invoice
|
119
|
+
params['invoice']
|
120
|
+
end
|
121
|
+
|
112
122
|
# This combines the gross and currency and returns a proper Money object.
|
113
123
|
# this requires the money library located at http://dist.leetsoft.com/api/money
|
114
124
|
def amount
|
metadata
CHANGED
@@ -3,15 +3,15 @@ rubygems_version: 0.8.10
|
|
3
3
|
specification_version: 1
|
4
4
|
name: paypal
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.
|
7
|
-
date: 2005-
|
8
|
-
summary: Paypal IPN integration for rails
|
6
|
+
version: 1.0.0
|
7
|
+
date: 2005-08-01
|
8
|
+
summary: Paypal IPN integration library for rails and other web applications
|
9
9
|
require_paths:
|
10
10
|
- lib
|
11
11
|
email: tobi@leetsoft.com
|
12
12
|
homepage: http://dist.leetsoft.com/api/paypal
|
13
13
|
rubyforge_project:
|
14
|
-
description:
|
14
|
+
description: Paypal IPN integration library for rails and other web applications
|
15
15
|
autorequire: paypal
|
16
16
|
default_executable:
|
17
17
|
bindir: bin
|