secure_net_recurring 1.0.0 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 5b95f059abf4c4f5878bf2fd8a4f728d64659762
4
+ data.tar.gz: a158f7cca1e71d3ebd482647f3d42487fcc5c91e
5
+ SHA512:
6
+ metadata.gz: f3e6421f41e35754f8df63f78bea28b3406e5862fdceacae24dad800ecfce4a07281ff7ecc86a98ce0ffd6972f3be0343e5be377f65b57c87d2db6f0d24d3d4f
7
+ data.tar.gz: cac9f0e666faacf05f8a3e2ab18f3a3d19beffe9110f11908bf0ed72ecc953537b8e96d146045823f75eec960576d197cc1364348b267e8d1f755dcc94be4f43
data/README ADDED
@@ -0,0 +1,63 @@
1
+ No more talk, just read SecureNet's document and follow it. Below is the information that extracted from "Gateway Implementation Guide v4 1 5 - 2013-01-07.pdf"
2
+
3
+ MERCHANT_KEY
4
+ GROUP_ID
5
+ SECUREKEY
6
+ SECURENETID
7
+
8
+ CARD
9
+ CARDCODE
10
+ CARDNUMBER
11
+ EXPDATE
12
+
13
+ INSTALLMENT
14
+ AMOUNT
15
+ AUTOCALC_OPTION (A—automatic M—manual)
16
+ BALLOON_AMOUNT (Balloon amount)
17
+ BALLOON_OPTION (AutoBill offers the capability of the balloon payment to be applied to the first or last payment, as following: 0 - add balloon amount to first payment 1 - add balloon amount to last payment)
18
+ COUNT (Number of total installments for installment plan. 1-99.)
19
+ REMAINDER_OPTION (AutoBill offers the ability to choose first or last payment if installments are not equally divided, as following: 0 - add remainder to first payment 1 - add remainder to last payment)
20
+
21
+
22
+ RECURRING
23
+ AMOUNT (Total value to be charged to the payment method specified. Include decimal point followed by decimal amount.)
24
+ NOEND_FLAG (0 = Recurring bill has an end date; 1 = Recurring bill has no end date)
25
+
26
+
27
+ OPTIONS
28
+ CYCLE
29
+ DAY (Required if CYCLE=M, Q, B, or Y)
30
+ FREQUENCY (If CYCLE=M: 1 – 11 (i.e. 2 = every 2 months))
31
+
32
+
33
+ PLAN_AB (This object defines the information that can be submitted to the Gateway for AutoBill transaction processing.)
34
+ CUSTOMERID (Contains customer ID associated with payment plan. It cannot be a valid card number.)
35
+ INSTALLMENT
36
+ MERCHANT_KEY
37
+ PAYMENTID (SecureNet Vault Payment ID. Must be enabled on the account. It cannot be a valid card number.)
38
+ RECURRING
39
+ SCHEDULE (Array of PAYMENT_AB)
40
+ STARTDATE (Plan start date. MMDDYYYY. Verify the date is on or after current date.)
41
+ TYPE (Using the “Recurring AutoBill” payments can be scheduled for daily, weekly, monthly, quarterly, and yearly recurrence.Set TYPE to one of the following: REC—for recurring INS—for installment VAR—for variable.)
42
+
43
+
44
+ TRANSACTION
45
+ MERCHANT_KEY
46
+ CARD
47
+ CHECK
48
+ CUSTOMER_BILL
49
+ CUSTOMER_SHIP
50
+ ENCRYPTION
51
+ LEVEL2
52
+ LEVEL3
53
+ MPI
54
+ AUTO
55
+ PETROLEUM
56
+ HOTEL
57
+ PRODUCT
58
+ SERVICE
59
+ USERDEFINED
60
+ SECONDARY_MERCHANT KEY
61
+ TERMINAL
62
+ HEALTHCARE
63
+ IMAGE
@@ -1,3 +1,3 @@
1
1
  module SecureNetRecurring
2
- VERSION = "1.0.0"
2
+ VERSION = "1.5.0"
3
3
  end
@@ -4,12 +4,88 @@ module ActiveMerchant
4
4
  module Billing
5
5
  class SecureNetGateway < Gateway
6
6
 
7
+ class_attribute :recurring_url
8
+
7
9
  #self.test_url = 'https://certify.securenet.com/API/gateway.svc/webHttp/ProcessTransaction'
8
10
  self.recurring_url = 'https://gateway.securenet.com/API/data/service.svc/webHttp/AddABAccount'
9
11
 
10
- def recurring
11
- puts self.recurring_url
12
+ def recurring(money, creditcard, options = {})
13
+ recurring_commit(build_recurring_plan_ab(creditcard, options, :recurring, money))
14
+ end
15
+
16
+ private
17
+ def recurring_commit(request)
18
+ xml = build_request(request)
19
+ url = self.recurring_url
20
+ data = ssl_post(url, xml, "Content-Type" => "text/xml")
21
+ response = parse(data)
22
+
23
+ Response.new(success?(response), message_from(response), response,
24
+ :test => test?,
25
+ :authorization => build_authorization(response),
26
+ :avs_result => { :code => response[:avs_result_code] },
27
+ :cvv_result => response[:card_code_response_code]
28
+ )
29
+ end
30
+
31
+ def build_request(request)
32
+ xml = Builder::XmlMarkup.new
33
+
34
+ xml.instruct!
35
+ xml.tag!("PLAN_AB", XML_ATTRIBUTES) do
36
+ xml << request
37
+ end
38
+
39
+ xml.target!
40
+ end
41
+
42
+ def build_recurring_plan_ab(creditcard, options, action, money)
43
+ xml = Builder::XmlMarkup.new
44
+
45
+ xml.tag! 'CUSTOMERID', creditcard.number
46
+ add_options(xml, creditcard)
47
+ add_installment(xml, creditcard, money)
48
+ add_merchant_key(xml, options)
49
+ xml.tag! 'PAYMENTID', creditcard.number
50
+ add_recurring(xml, creditcard, money)
51
+ add_schedule(xml, creditcard)
52
+ xml.tag! 'STARTDATE', "02202014"
53
+ xml.tag! 'TYPE', "REC"
54
+
55
+ xml.target!
56
+ end
57
+
58
+ def add_options(xml, creditcard)
59
+ xml.tag!("OPTIONS") do
60
+ xml.tag! 'CYCLE', 'M'
61
+ xml.tag! 'DAY', 5 #Integer / 2
62
+ xml.tag! 'FREQUENCY', 1 #Integer / 2
63
+ end
64
+ end
65
+
66
+ def add_installment(xml, creditcard, money)
67
+ xml.tag!("INSTALLMENT") do
68
+ xml.tag! 'AMOUNT', amount(money)
69
+ xml.tag! 'AUTOCALC_OPTION', 'A'
70
+ xml.tag! 'BALLOON_AMOUNT', 0
71
+ xml.tag! 'BALLOON_OPTION', 1
72
+ xml.tag! 'COUNT', 1
73
+ xml.tag! 'REMAINDER_OPTION', 1
74
+ end
12
75
  end
76
+
77
+ def add_recurring(xml, creditcard, money)
78
+ xml.tag!("RECURRING") do
79
+ xml.tag! 'AMOUNT', amount(money)
80
+ xml.tag! 'NOEND_FLAG', 1
81
+ end
82
+ end
83
+
84
+ def add_schedule(xml, creditcard)
85
+ xml.tag!("SCHEDULE") do
86
+ end
87
+ end
88
+
13
89
  end
14
90
  end
15
91
  end
@@ -9,7 +9,7 @@ Gem::Specification.new do |s|
9
9
  s.authors = ["wenbo"]
10
10
  s.email = ["yiyun6674@hotmail.com"]
11
11
  s.homepage = "http://rubygems.org/gems/secure_net_recurring"
12
- s.summary = "Standing on the shoulder of gem activemerchant,this gem implements SecureNet's AuthoBill feature"
12
+ s.summary = "Standing on the shoulder of gem activemerchant,this gem implements SecureNet's AuthBill feature"
13
13
  s.description = s.summary
14
14
 
15
15
  s.files = `git ls-files`.split("\n")
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: secure_net_recurring
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
5
- prerelease:
4
+ version: 1.5.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - wenbo
@@ -14,7 +13,6 @@ dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: activemerchant
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,13 +20,12 @@ dependencies:
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
29
26
  version: 1.32.1
30
27
  description: Standing on the shoulder of gem activemerchant,this gem implements SecureNet's
31
- AuthoBill feature
28
+ AuthBill feature
32
29
  email:
33
30
  - yiyun6674@hotmail.com
34
31
  executables: []
@@ -36,33 +33,32 @@ extensions: []
36
33
  extra_rdoc_files: []
37
34
  files:
38
35
  - MIT-LICENSE
36
+ - README
39
37
  - lib/secure_net_recurring.rb
40
38
  - lib/secure_net_recurring/version.rb
41
39
  - secure_net_recurring.gemspec
42
40
  homepage: http://rubygems.org/gems/secure_net_recurring
43
41
  licenses: []
42
+ metadata: {}
44
43
  post_install_message:
45
44
  rdoc_options: []
46
45
  require_paths:
47
46
  - lib
48
47
  required_ruby_version: !ruby/object:Gem::Requirement
49
- none: false
50
48
  requirements:
51
- - - ! '>='
49
+ - - '>='
52
50
  - !ruby/object:Gem::Version
53
51
  version: '0'
54
52
  required_rubygems_version: !ruby/object:Gem::Requirement
55
- none: false
56
53
  requirements:
57
- - - ! '>='
54
+ - - '>='
58
55
  - !ruby/object:Gem::Version
59
56
  version: '0'
60
57
  requirements: []
61
58
  rubyforge_project:
62
- rubygems_version: 1.8.25
59
+ rubygems_version: 2.1.11
63
60
  signing_key:
64
- specification_version: 3
61
+ specification_version: 4
65
62
  summary: Standing on the shoulder of gem activemerchant,this gem implements SecureNet's
66
- AuthoBill feature
63
+ AuthBill feature
67
64
  test_files: []
68
- has_rdoc: