alertpay 0.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.txt ADDED
@@ -0,0 +1,17 @@
1
+ = alertpay
2
+
3
+ This library simply converts a HTTP/S request into an object.
4
+
5
+ == Resources
6
+
7
+ Install
8
+
9
+ * gem install alertpay
10
+
11
+ Rubyforge project
12
+
13
+ * http://rubyforge.org/projects/alertpay
14
+
15
+ RDocs
16
+
17
+ * http://alertpay.rubyforge.org
data/lib/alertpay.rb ADDED
@@ -0,0 +1,2 @@
1
+ require File.dirname(__FILE__) + '/notification'
2
+ require File.dirname(__FILE__) + '/helpers'
data/lib/helpers.rb ADDED
@@ -0,0 +1,50 @@
1
+ module Alertpay
2
+ module Helpers
3
+ def alertpay_form_tag(url = 'https://www.alertpay.com/PayProcess.aspx', options = {}, &block)
4
+ if block_given?
5
+ form_tag(url, options, &block)
6
+ else
7
+ form_tag(url, options)
8
+ end
9
+ end
10
+
11
+ def alertpay_setup(amount, item_id, merchant, options = {})
12
+ params = {
13
+ :ap_amount => amount,
14
+ :ap_merchant => merchant,
15
+ :ap_itemcode => item_id,
16
+ :ap_quantity => 1
17
+ }
18
+
19
+ if options.include?(:subscription)
20
+ params[:ap_purchasetype] = :subscription
21
+ params[:ap_periodlength] = options[:subscription][:length]
22
+ params[:ap_timeunit] = case options[:subscription][:period]
23
+ when :monthly; 'Month'
24
+ when :yearly; 'Year'
25
+ when :weekly; 'Week'
26
+ when :daily; 'Day'
27
+ end
28
+ else
29
+ params[:ap_purchasetype] = :item
30
+ end
31
+
32
+ if options.include?(:custom)
33
+ options[:custom].each_index {|i| params["apc_#{i.to_i + 1}"] = options[:custom][i] }
34
+ end
35
+
36
+ params[:ap_quantity] = options[:quanity] if options.include?(:quanity)
37
+ params[:ap_itemname] = options[:item_name] if options.include?(:item_name)
38
+ params[:purchase_type] = options[:purchase_type] if options.include?(:purchase_type)
39
+ params[:ap_notifyurl] = options[:notify_url] if options.include?(:notify_url)
40
+ params[:ap_returnurl] = options[:return_url] if options.include?(:return_url)
41
+ params[:ap_cancelurl] = options[:cancel_url] if options.include?(:cancel_url)
42
+
43
+ returning button = [] do
44
+ params.each do |k, v|
45
+ button << tag(:input, :type => :hidden, :name => k.to_s, :value => v.to_s) unless v.nil?
46
+ end
47
+ end.join("\n")
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,84 @@
1
+ require 'cgi'
2
+
3
+ module Alertpay
4
+ class Notification
5
+ attr_accessor :params
6
+ attr_accessor :raw
7
+
8
+ def initialize(post)
9
+ @params = {}
10
+ parse(post)
11
+ end
12
+
13
+ # The type of purchase. E.g. 'item' or 'subscription'.
14
+ def purchase_type
15
+ params['ap_purchasetype']
16
+ end
17
+
18
+ # Security code sent through from alertpay. You are to compare this with a
19
+ # hard coded value that you get from your alertpay profile, which only you
20
+ # should know.
21
+ def security_code
22
+ params['ap_securitycode']
23
+ end
24
+
25
+ # Name of the item that was purchased.
26
+ def item_name
27
+ params['ap_itemname']
28
+ end
29
+
30
+ # Was the payment successful?
31
+ def successful?
32
+ status == 'Success'
33
+ end
34
+
35
+ # The shipping charges for this transaction.
36
+ def shipping
37
+ params['ap_shippingcharges'].to_f
38
+ end
39
+
40
+ # Amount of item purchased.
41
+ def amount
42
+ params['ap_amount'].to_f
43
+ end
44
+
45
+ # Currency that the payment was made in.
46
+ def currency
47
+ params['ap_currency']
48
+ end
49
+
50
+ # Status of the payment. E.g. 'Succes'
51
+ def status
52
+ params['ap_status']
53
+ end
54
+
55
+ # The reference number or transaction ID you can use to refer to this
56
+ # transaction.
57
+ def reference_number
58
+ params['ap_referencenumber']
59
+ end
60
+
61
+ # The email address associated with the merchant that recieved the monies.
62
+ def merchant
63
+ params['ap_merchant']
64
+ end
65
+
66
+ # The item code on the alertpay side
67
+ def item_code
68
+ params['ap_itemcode']
69
+ end
70
+
71
+ # An array containing the 6 custom elements
72
+ def custom
73
+ params.values_at('apc_1', 'apc_2', 'apc_3', 'apc_4', 'apc_5', 'apc_6')
74
+ end
75
+
76
+ private
77
+ def parse(post)
78
+ @raw = post
79
+ CGI.parse(post).each_pair do |k,v|
80
+ params[k] = v.to_s
81
+ end
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,25 @@
1
+ $:.unshift(File.dirname(__FILE__) + '/../lib')
2
+
3
+ require 'test/unit'
4
+ require 'alertpay'
5
+
6
+ class NotificationTest < Test::Unit::TestCase
7
+ def test_parse
8
+ alertpay = Alertpay::Notification.new raw_post
9
+ end
10
+
11
+ def test_successful
12
+ alertpay = Alertpay::Notification.new raw_post
13
+ assert alertpay.successful?
14
+ end
15
+
16
+ def test_custom
17
+ alertpay = Alertpay::Notification.new raw_post
18
+ assert_equal 'Danial Pearce', alertpay.custom[2]
19
+ end
20
+
21
+ private
22
+ def raw_post
23
+ 'ap_merchant=alertpay@tigris.id.au&ap_securitycode=NOT_SECURE&ap_custfirstname=Danial&ap_custlastname=Pearce&ap_custaddress=1 There St&ap_custcity=Melbourne&ap_custstate=VIC&ap_custcountry=AUS&ap_custzip=3000&ap_custemailaddress=alertpay@tigris.id.au&ap_purchasetype=subscription&ap_referencenumber=TEST TRANSACTION&ap_itemname=Jigglets&ap_description=&ap_itemcode=&ap_quantity=1&ap_amount=28&ap_shippingcharges=0&ap_additionalcharges=0&ap_taxamount=0&ap_discountamount=0&ap_totalamount=28&ap_currency=USD&ap_subscriptionreferencenumber=REFERENCE&ap_timeunit=Month&ap_periodlength=1&ap_periodcount=-1&ap_nextrundate=&apc_1=1&apc_2=alertpay@tigris.id.au&apc_3=Danial Pearce&apc_4=&apc_5=&apc_6=&ap_test=1&ap_status=Success'
24
+ end
25
+ end
metadata ADDED
@@ -0,0 +1,50 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.9.4
3
+ specification_version: 1
4
+ name: alertpay
5
+ version: !ruby/object:Gem::Version
6
+ version: "0.1"
7
+ date: 2008-05-08 00:00:00 +10:00
8
+ summary: Common interface to alertpay request params.
9
+ require_paths:
10
+ - lib
11
+ email: danial@statelesssystems.com
12
+ homepage: http://statelesssystems.com
13
+ rubyforge_project:
14
+ description: Common interface to alertpay request params.
15
+ autorequire:
16
+ default_executable:
17
+ bindir: bin
18
+ has_rdoc: true
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
+ requirements:
21
+ - - ">"
22
+ - !ruby/object:Gem::Version
23
+ version: 0.0.0
24
+ version:
25
+ platform: ruby
26
+ signing_key:
27
+ cert_chain:
28
+ post_install_message:
29
+ authors:
30
+ - Danial Pearce
31
+ files:
32
+ - lib/alertpay.rb
33
+ - lib/helpers.rb
34
+ - lib/notification.rb
35
+ - test/notification_test.rb
36
+ - README.txt
37
+ test_files:
38
+ - test/notification_test.rb
39
+ rdoc_options: []
40
+
41
+ extra_rdoc_files:
42
+ - README.txt
43
+ executables: []
44
+
45
+ extensions: []
46
+
47
+ requirements: []
48
+
49
+ dependencies: []
50
+