paypal 0.5.1 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README +19 -27
- data/Rakefile +1 -1
- data/lib/helper.rb +11 -5
- metadata +2 -2
data/README
CHANGED
@@ -41,43 +41,35 @@ sandbox account to use while the application is running in development mode.
|
|
41
41
|
|
42
42
|
== Example rails controller
|
43
43
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
if notify.complete? and order.total == notify.amount
|
54
|
-
order.status = 'success'
|
55
|
-
|
56
|
-
shop.ship(order)
|
57
|
-
else
|
58
|
-
logger.error("Failed to verify Paypal's notification, please investigate")
|
59
|
-
end
|
60
|
-
|
61
|
-
rescue => e
|
62
|
-
order.status = 'failed'
|
63
|
-
raise
|
64
|
-
ensure
|
44
|
+
class BackendController < ApplicationController
|
45
|
+
|
46
|
+
# Simplification, please write better code then this...
|
47
|
+
def paypal_ipn
|
48
|
+
notify = Paypal::Notification.new(request.raw_post)
|
49
|
+
|
50
|
+
if notify.acknowledge
|
51
|
+
order = Order.find(notify.item_id)
|
52
|
+
order.success = (notify.complete? and order.total == notify.amount) ? 'success' : 'failure'
|
65
53
|
order.save
|
66
54
|
end
|
67
|
-
end
|
68
|
-
|
69
|
-
render :nothing => true
|
70
|
-
end
|
71
|
-
end
|
72
55
|
|
56
|
+
render :nothing => true
|
57
|
+
end
|
58
|
+
end
|
73
59
|
|
74
60
|
== Example paypal forward page
|
75
61
|
|
76
62
|
<%= paypal_form_tag %>
|
77
|
-
<%= paypal_setup "Item 500", Money.us_dollar(50000), "bob@bigbusiness.com" %>
|
63
|
+
<%= paypal_setup "Item 500", Money.us_dollar(50000), "bob@bigbusiness.com", :notify_url => url_for(:path_only => false, :action => 'paypal_ipn') %>
|
78
64
|
|
79
65
|
Please press here to pay $500US using paypal. <br/>
|
80
66
|
<%= submit_tag "Go to paypal >>" %>
|
81
67
|
|
82
68
|
<% end_form_tag %>
|
83
69
|
|
70
|
+
== Changelog
|
71
|
+
|
72
|
+
2005-07-22 -- 0.9.1
|
73
|
+
* 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
|
+
you don't have to do that in the paypal admin interface!
|
75
|
+
* Removed the actual form tag from the paypal_setup generated code to conform better with docs
|
data/Rakefile
CHANGED
data/lib/helper.rb
CHANGED
@@ -34,8 +34,12 @@ module Paypal
|
|
34
34
|
#
|
35
35
|
# The last parameter is a options hash. You can override several things:
|
36
36
|
#
|
37
|
-
# * <tt>:
|
37
|
+
# * <tt>:notify_url</tt> -- default is nil. Supply an url which paypal will send its IPN notification to once a
|
38
|
+
# purchase is made, canceled or any other status changes occure.
|
39
|
+
# * <tt>:return_url</tt> -- default is nil. If provided paypal will redirect a user back to this url after a
|
38
40
|
# successful purchase. Useful for a kind of thankyou page.
|
41
|
+
# * <tt>:cancel_url</tt> -- default is nil. If provided paypal will redirect a user back to this url when
|
42
|
+
# the user cancels the purchase.
|
39
43
|
# * <tt>:item_name</tt> -- default is 'Store purchase'. This is the name of the purchase which will be displayed
|
40
44
|
# on the paypal page.
|
41
45
|
# * <tt>:no_shipping</tt> -- default is '1'. By default we tell paypal that no shipping is required. Usually
|
@@ -46,8 +50,9 @@ module Paypal
|
|
46
50
|
# Examples:
|
47
51
|
#
|
48
52
|
# <%= paypal_setup @order.id, Money.us_dollar(50000), "bob@bigbusiness.com" %>
|
49
|
-
# <%= paypal_setup @order.id, 50.00, "bob@bigbusiness.com", :currency => 'USD' %>
|
50
|
-
# <%= paypal_setup @order.id,
|
53
|
+
# <%= paypal_setup @order.id, '50.00', "bob@bigbusiness.com", :currency => 'USD' %>
|
54
|
+
# <%= paypal_setup @order.id, '50.00', "bob@bigbusiness.com", :currency => 'USD', :notify_url => url_for(:only_path => false, :action => 'paypal_ipn') %>
|
55
|
+
# <%= paypal_setup @order.id, Money.ca_dollar(50000), "bob@bigbusiness.com", :item_name => 'Snowdevil shop purchase', :return_url => paypal_return_url, :cancel_url => paypal_cancel_url, :notify_url => paypal_ipn_url %>
|
51
56
|
#
|
52
57
|
def paypal_setup(item_number, amount, business, options = {})
|
53
58
|
|
@@ -65,9 +70,8 @@ module Paypal
|
|
65
70
|
|
66
71
|
# Build the form
|
67
72
|
returning button = [] do
|
68
|
-
button << form_tag(Paypal::Notification.ipn_url)
|
69
|
-
|
70
73
|
button << tag(:input, :type => 'hidden', :name => 'cmd', :value => "_xclick")
|
74
|
+
button << tag(:input, :type => 'hidden', :name => 'undefined_quantity', :value => 1)
|
71
75
|
button << tag(:input, :type => 'hidden', :name => 'business', :value => business)
|
72
76
|
button << tag(:input, :type => 'hidden', :name => 'amount', :value => amount)
|
73
77
|
button << tag(:input, :type => 'hidden', :name => 'item_number', :value => item_number)
|
@@ -75,6 +79,8 @@ module Paypal
|
|
75
79
|
button << tag(:input, :type => 'hidden', :name => 'no_shipping', :value => params[:no_shipping])
|
76
80
|
button << tag(:input, :type => 'hidden', :name => 'no_note', :value => params[:no_note])
|
77
81
|
button << tag(:input, :type => 'hidden', :name => 'return', :value => params[:return_url]) if params[:return_url]
|
82
|
+
button << tag(:input, :type => 'hidden', :name => 'notify_url', :value => params[:notify_url]) if params[:notify_url]
|
83
|
+
button << tag(:input, :type => 'hidden', :name => 'cancel_return', :value => params[:cancel_url]) if params[:cancel_url]
|
78
84
|
|
79
85
|
# if amount was a object of type money or something compatible we will use its currency,
|
80
86
|
# otherwise get the currency from the options. default is USD
|
metadata
CHANGED