paymentonline 0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. data/LICENSE +26 -0
  2. data/README +5 -0
  3. data/bin/example.rb +89 -0
  4. data/lib/paymentonline.rb +52 -0
  5. metadata +42 -0
data/LICENSE ADDED
@@ -0,0 +1,26 @@
1
+ # Copyright (c) 2005, Payment Online Inc
2
+ # All rights reserved.
3
+
4
+ # Redistribution and use in source and binary forms, with or without
5
+ # modification, are permitted provided that the following conditions are met:
6
+ #
7
+ # * Redistributions of source code must retain the above copyright notice,
8
+ # this list of conditions and the following disclaimer.
9
+ # * Redistributions in binary form must reproduce the above copyright notice,
10
+ # this list of conditions and the following disclaimer in the
11
+ # documentation and/or other materials provided with the distribution.
12
+ # * Neither the name of Payment Online nor the names of its contributors
13
+ # may be used to endorse or promote products derived from this software
14
+ # without specific prior written permission.
15
+ #
16
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17
+ # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18
+ # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19
+ # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
20
+ # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21
+ # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22
+ # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
23
+ # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24
+ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
+
data/README ADDED
@@ -0,0 +1,5 @@
1
+
2
+ This module is for processing transactions using the Direct Connect API from Payment Online. Please contact your account manager
3
+ for any assistance with this module.
4
+
5
+
@@ -0,0 +1,89 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ require 'paymentonline'
5
+
6
+ include PaymentOnline
7
+
8
+ # Payment.new takes two hashes as arguments. The first has just one valid value which is the debug flag. The second hash
9
+ # is uses to pass the Direct Connect API fields and values. Please see the Direct Connect API documentation for details.
10
+
11
+ s = Payment.new({'debug' => true},
12
+ {'mer_id' => '23498237HDBE8',
13
+ 'site_id' => '12345',
14
+ 'trans_type' => 'SALE',
15
+ 'response_api' => 'text_1',
16
+ 'card_exp_mon' => '10',
17
+ 'card_exp_yr' => '02',
18
+ 'card_num' => '5454545454545454',
19
+ 'cvv_value' => '111',
20
+ 'cust_email' => 'orders@mydomain.com',
21
+ 'cust_firstname' => 'Test',
22
+ 'cust_lastname' => 'Customer',
23
+ 'cust_address' => '1234 abc street',
24
+ 'cust_address2' => '',
25
+ 'cust_city' => 'Kirkland',
26
+ 'cust_state' => 'WA',
27
+ 'cust_zip' => '98034',
28
+ 'cust_phone' => nil,
29
+ 'cust_country' => 'US',
30
+ 'cust_username' => nil,
31
+ 'cust_password' => nil,
32
+ 'ship_firstname' => 'Test',
33
+ 'ship_lastname' => 'Customer',
34
+ 'ship_address' => '4321 cba ave',
35
+ 'ship_address2' => nil,
36
+ 'ship_city' => 'Redmond',
37
+ 'ship_state' => 'WA',
38
+ 'ship_zip' => '87654',
39
+ 'ship_country' => 'US',
40
+ 'separate_shipping' => '1',
41
+ 'shipping_charge' => nil,
42
+ 'tax_charge' => nil,
43
+ 'cust_receipt' => 1,
44
+ 'membership_system' => '1',
45
+ 'www_post' => nil,
46
+ 'username' => nil,
47
+ 'password' => nil,
48
+ 'prepaid' => nil,
49
+ 'custom_var1' => nil,
50
+ 'custom_var2' => nil,
51
+ 'custom_var3' => nil,
52
+ 'custom_var4' => nil,
53
+ 'custom_var5' => nil,
54
+ 'custom_var6' => nil})
55
+
56
+ # Create a hash for each item being ordered as follows. Items fields which are not used should be passed as nil.
57
+ item1 = {'item_sku' => 'test1',
58
+ 'item_desc' => 'test1 descript',
59
+ 'item_type' => 'SUB',
60
+ 'item_price' => '1.00',
61
+ 'quantity' => 1,
62
+ 'recur_bill_amount' => '2.00',
63
+ 'bill_cycle' => '1 month',
64
+ 'num_cycles' => 500,
65
+ 'prorate_first_billing' => 0,
66
+ 'first_billing_date' => nil,
67
+ 'recur_bill_day' => nil}
68
+
69
+ item2 = item1.clone
70
+ item2['item_sku'] = 'test2'
71
+
72
+ # call additem to add the item to the order
73
+ s.additem(item1)
74
+ s.additem(item2)
75
+
76
+ # Submit the order for processing
77
+ code,message,r = s.submit
78
+
79
+ # Print out the response
80
+ puts "HTTP CODE: #{code}"
81
+ puts "HTTP RESPONSE: #{message}"
82
+ puts "Payment response code: #{r['response_code']}"
83
+ puts "Payment response: #{r['response']}"
84
+ puts "Payment response text: #{r['response_text']}"
85
+ puts "Payment order id: #{r['order_id']}"
86
+ puts "Payment transaction id: #{r['trans_id']}"
87
+ puts "Payment transaction amount: #{r['trans_amount']}"
88
+ puts "Payment authorization code: #{r['auth_code']}"
89
+ puts "Payment avs result: #{r['avs_result']}"
@@ -0,0 +1,52 @@
1
+
2
+ require 'net/https'
3
+ require 'cgi'
4
+
5
+ module PaymentOnline
6
+
7
+ class Payment
8
+
9
+ FIELDS = ['card_exp_mon','card_exp_yr','card_num','cust_address','cust_address2','cust_city','cust_country','cust_email','cust_firstname','cust_lastname','cust_username','cust_password','cust_phone','cust_receipt','cust_state','cust_zip','custom_var1','custom_var2','cvv_value','membership_system','mer_id','password','prepaid','response_api','separate_shipping','ship_address','ship_address2','ship_city','ship_country','ship_firstname','ship_lastname','ship_state','ship_zip','shipping_charge','site_id','tax_charge','trans_type','username','www_post','custom_var1','custom_var2','custom_var3','custom_var4','custom_var5','custom_var6']
10
+
11
+ ITEMFIELDS = ['item_sku','item_desc','item_type','item_price','quantity','recur_bill_amount','bill_cycle','num_cycles','prorate_first_billing','first_billing_date','recur_bill_day']
12
+
13
+ def initialize(options = {},orderinfo = {})
14
+ postarray = []
15
+ @postdata = nil
16
+ @orderitems = []
17
+ @customerdata = []
18
+ @debug = options['debug']
19
+ @debug == true ? @debug = true : @debug = false
20
+ value = nil
21
+ FIELDS.each do |field|
22
+ unless orderinfo[field].nil?
23
+ value = CGI.escape(orderinfo[field].to_s)
24
+ @customerdata << "#{field}=#{value}".to_s
25
+ end
26
+ end
27
+ end
28
+
29
+ def additem(item)
30
+ @oitem = []
31
+ ITEMFIELDS.each do |field|
32
+ item[field] = '' if item[field].nil?
33
+ puts "#{field}=#{item[field]}" if @debug
34
+ @oitem << item[field]
35
+ end
36
+ @orderitems << @oitem.join(';')
37
+ end
38
+
39
+ def submit
40
+ r = {}
41
+ itemlist = CGI.escape(@orderitems.join('|'))
42
+ @postdata = "itemlist=#{itemlist}&" + @customerdata.join('&')
43
+ puts @postdata if @debug
44
+ site = Net::HTTP.new( 'paygw.sea.paymentonline.com', 443 )
45
+ site.use_ssl = true
46
+ response = site.post('/transact', @postdata)
47
+ (r['response_code'],r['response'],r['response_text'],r['auth_code'],r['avs_result'],r['order_id'],r['trans_id'],r['trans_amount']) = response.body.split(',')
48
+ return response.code,response.message,r
49
+ end
50
+ end
51
+ end
52
+
metadata ADDED
@@ -0,0 +1,42 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.8.11
3
+ specification_version: 1
4
+ name: paymentonline
5
+ version: !ruby/object:Gem::Version
6
+ version: "0.1"
7
+ date: 2005-12-02 00:00:00 -08:00
8
+ summary: Ruby interface for the Payment Online Direct Connect API
9
+ require_paths:
10
+ - lib
11
+ email: chris@paymentonline.com
12
+ homepage:
13
+ rubyforge_project:
14
+ description:
15
+ autorequire: paymentonline
16
+ default_executable:
17
+ bindir: bin
18
+ has_rdoc: true
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
+ requirements:
21
+ -
22
+ - ">"
23
+ - !ruby/object:Gem::Version
24
+ version: 0.0.0
25
+ version:
26
+ platform: ruby
27
+ signing_key:
28
+ cert_chain:
29
+ authors:
30
+ - Payment Online Inc
31
+ files:
32
+ - README
33
+ - LICENSE
34
+ - lib/paymentonline.rb
35
+ - bin/example.rb
36
+ test_files: []
37
+ rdoc_options: []
38
+ extra_rdoc_files: []
39
+ executables: []
40
+ extensions: []
41
+ requirements: []
42
+ dependencies: []