activemerchant-paymentech-orbital 0.1.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/.document +5 -0
- data/.gitignore +5 -0
- data/LICENSE +20 -0
- data/README.rdoc +18 -0
- data/Rakefile +55 -0
- data/VERSION +1 -0
- data/activemerchant-paymentech-orbital.gemspec +79 -0
- data/lib/active_merchant/billing/paymentech_orbital.rb +113 -0
- data/lib/active_merchant/billing/paymentech_orbital/request.rb +67 -0
- data/lib/active_merchant/billing/paymentech_orbital/request/end_of_day.rb +22 -0
- data/lib/active_merchant/billing/paymentech_orbital/request/new_order.rb +121 -0
- data/lib/active_merchant/billing/paymentech_orbital/request/profile_management.rb +82 -0
- data/lib/active_merchant/billing/paymentech_orbital/request/void.rb +39 -0
- data/lib/active_merchant/billing/paymentech_orbital/response.rb +100 -0
- data/lib/activemerchant-paymentech-orbital.rb +9 -0
- data/test/activemerchant-paymentech-orbital_test.rb +7 -0
- data/test/factories.rb +170 -0
- data/test/mocks/active_merchant/billing/gateway.rb +9 -0
- data/test/options.rb +85 -0
- data/test/payment_orbital/gateway_test.rb +131 -0
- data/test/payment_orbital/request/end_of_day_test.rb +30 -0
- data/test/payment_orbital/request/new_order_test.rb +40 -0
- data/test/payment_orbital/request/profile_management_test.rb +47 -0
- data/test/payment_orbital/request/void_test.rb +28 -0
- data/test/payment_orbital/request_test.rb +28 -0
- data/test/test_helper.rb +22 -0
- metadata +100 -0
data/.document
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2009 John Corrigan
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
= activemerchant-paymentech-orbital
|
2
|
+
|
3
|
+
A gem to provide a ruby interface for Chase Paymentech Orbital payment gateway.
|
4
|
+
|
5
|
+
== Note on Patches/Pull Requests
|
6
|
+
|
7
|
+
* Fork the project.
|
8
|
+
* Make your feature addition or bug fix.
|
9
|
+
* Add tests for it. This is important so I don't break it in a
|
10
|
+
future version unintentionally.
|
11
|
+
* Commit, do not mess with rakefile, version, or history.
|
12
|
+
(if you want to have your own version, that is fine but
|
13
|
+
bump version in a commit by itself I can ignore when I pull)
|
14
|
+
* Send me a pull request. Bonus points for topic branches.
|
15
|
+
|
16
|
+
== Copyright
|
17
|
+
|
18
|
+
Copyright (c) 2009 John Corrigan. See LICENSE for details.
|
data/Rakefile
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'rake'
|
2
|
+
|
3
|
+
begin
|
4
|
+
require 'jeweler'
|
5
|
+
Jeweler::Tasks.new do |gem|
|
6
|
+
gem.name = "activemerchant-paymentech-orbital"
|
7
|
+
gem.summary = "A gem to provide a ruby interface for Chase Paymentech Orbital payment gateway."
|
8
|
+
gem.description = "A gem to provide a ruby interface for Chase Paymentech Orbital payment gateway."
|
9
|
+
gem.email = "john@mintdigital.com"
|
10
|
+
gem.homepage = "http://github.com/johnideal/activemerchant-paymentech-orbital"
|
11
|
+
gem.authors = ["John Corrigan"]
|
12
|
+
gem.add_dependency("activemerchant", "= 1.4.2")
|
13
|
+
end
|
14
|
+
Jeweler::GemcutterTasks.new
|
15
|
+
rescue LoadError
|
16
|
+
puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
|
17
|
+
end
|
18
|
+
|
19
|
+
require 'rake/testtask'
|
20
|
+
Rake::TestTask.new(:test) do |test|
|
21
|
+
test.libs << 'test'
|
22
|
+
test.pattern = 'test/**/*_test.rb'
|
23
|
+
test.verbose = true
|
24
|
+
end
|
25
|
+
|
26
|
+
begin
|
27
|
+
require 'rcov/rcovtask'
|
28
|
+
Rcov::RcovTask.new do |test|
|
29
|
+
test.libs << 'test'
|
30
|
+
test.pattern = 'test/**/*_test.rb'
|
31
|
+
test.verbose = true
|
32
|
+
end
|
33
|
+
rescue LoadError
|
34
|
+
task :rcov do
|
35
|
+
abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
task :test => :check_dependencies
|
40
|
+
|
41
|
+
task :default => :test
|
42
|
+
|
43
|
+
require 'rake/rdoctask'
|
44
|
+
Rake::RDocTask.new do |rdoc|
|
45
|
+
if File.exist?('VERSION')
|
46
|
+
version = File.read('VERSION')
|
47
|
+
else
|
48
|
+
version = ""
|
49
|
+
end
|
50
|
+
|
51
|
+
rdoc.rdoc_dir = 'rdoc'
|
52
|
+
rdoc.title = "activemerchant-paymentech-orbital #{version}"
|
53
|
+
rdoc.rdoc_files.include('README*')
|
54
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
55
|
+
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.1.0
|
@@ -0,0 +1,79 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{activemerchant-paymentech-orbital}
|
8
|
+
s.version = "0.1.0"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["John Corrigan"]
|
12
|
+
s.date = %q{2009-12-03}
|
13
|
+
s.description = %q{A gem to provide a ruby interface for Chase Paymentech Orbital payment gateway.}
|
14
|
+
s.email = %q{john@mintdigital.com}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE",
|
17
|
+
"README.rdoc"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".document",
|
21
|
+
".gitignore",
|
22
|
+
"LICENSE",
|
23
|
+
"README.rdoc",
|
24
|
+
"Rakefile",
|
25
|
+
"VERSION",
|
26
|
+
"activemerchant-paymentech-orbital.gemspec",
|
27
|
+
"lib/active_merchant/billing/paymentech_orbital.rb",
|
28
|
+
"lib/active_merchant/billing/paymentech_orbital/request.rb",
|
29
|
+
"lib/active_merchant/billing/paymentech_orbital/request/end_of_day.rb",
|
30
|
+
"lib/active_merchant/billing/paymentech_orbital/request/new_order.rb",
|
31
|
+
"lib/active_merchant/billing/paymentech_orbital/request/profile_management.rb",
|
32
|
+
"lib/active_merchant/billing/paymentech_orbital/request/void.rb",
|
33
|
+
"lib/active_merchant/billing/paymentech_orbital/response.rb",
|
34
|
+
"lib/activemerchant-paymentech-orbital.rb",
|
35
|
+
"test/activemerchant-paymentech-orbital_test.rb",
|
36
|
+
"test/factories.rb",
|
37
|
+
"test/mocks/active_merchant/billing/gateway.rb",
|
38
|
+
"test/options.rb",
|
39
|
+
"test/payment_orbital/gateway_test.rb",
|
40
|
+
"test/payment_orbital/request/end_of_day_test.rb",
|
41
|
+
"test/payment_orbital/request/new_order_test.rb",
|
42
|
+
"test/payment_orbital/request/profile_management_test.rb",
|
43
|
+
"test/payment_orbital/request/void_test.rb",
|
44
|
+
"test/payment_orbital/request_test.rb",
|
45
|
+
"test/test_helper.rb"
|
46
|
+
]
|
47
|
+
s.homepage = %q{http://github.com/johnideal/activemerchant-paymentech-orbital}
|
48
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
49
|
+
s.require_paths = ["lib"]
|
50
|
+
s.rubygems_version = %q{1.3.5}
|
51
|
+
s.summary = %q{A gem to provide a ruby interface for Chase Paymentech Orbital payment gateway.}
|
52
|
+
s.test_files = [
|
53
|
+
"test/activemerchant-paymentech-orbital_test.rb",
|
54
|
+
"test/factories.rb",
|
55
|
+
"test/mocks/active_merchant/billing/gateway.rb",
|
56
|
+
"test/options.rb",
|
57
|
+
"test/payment_orbital/gateway_test.rb",
|
58
|
+
"test/payment_orbital/request/end_of_day_test.rb",
|
59
|
+
"test/payment_orbital/request/new_order_test.rb",
|
60
|
+
"test/payment_orbital/request/profile_management_test.rb",
|
61
|
+
"test/payment_orbital/request/void_test.rb",
|
62
|
+
"test/payment_orbital/request_test.rb",
|
63
|
+
"test/test_helper.rb"
|
64
|
+
]
|
65
|
+
|
66
|
+
if s.respond_to? :specification_version then
|
67
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
68
|
+
s.specification_version = 3
|
69
|
+
|
70
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
71
|
+
s.add_runtime_dependency(%q<activemerchant>, ["= 1.4.2"])
|
72
|
+
else
|
73
|
+
s.add_dependency(%q<activemerchant>, ["= 1.4.2"])
|
74
|
+
end
|
75
|
+
else
|
76
|
+
s.add_dependency(%q<activemerchant>, ["= 1.4.2"])
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
@@ -0,0 +1,113 @@
|
|
1
|
+
module ActiveMerchant #:nodoc:
|
2
|
+
module Billing #:nodoc:
|
3
|
+
module PaymentechOrbital
|
4
|
+
class Gateway < ActiveMerchant::Billing::Gateway
|
5
|
+
cattr_accessor :currency_code, :currency_exponent, :headers, :urls
|
6
|
+
|
7
|
+
self.urls = {
|
8
|
+
:test => [
|
9
|
+
'https://orbitalvar1.paymentech.net/authorize',
|
10
|
+
'https://orbitalvar2.paymentech.net/authorize'
|
11
|
+
],
|
12
|
+
:live => [
|
13
|
+
'https://orbital1.paymentech.net/authorize',
|
14
|
+
'https://orbital2.paymentech.net/authorize'
|
15
|
+
]
|
16
|
+
}
|
17
|
+
|
18
|
+
# Currency information for the api.
|
19
|
+
self.currency_code = "840"
|
20
|
+
self.currency_exponent = "2"
|
21
|
+
|
22
|
+
# Money format
|
23
|
+
self.money_format = :cents
|
24
|
+
|
25
|
+
# The countries the gateway supports merchants from as 2 digit ISO country codes
|
26
|
+
self.supported_countries = ['US']
|
27
|
+
|
28
|
+
# The card types supported by the payment gateway
|
29
|
+
self.supported_cardtypes = [:visa, :master, :american_express, :discover]
|
30
|
+
|
31
|
+
# The homepage URL of the gateway
|
32
|
+
self.homepage_url = 'http://www.example.net/'
|
33
|
+
|
34
|
+
# The name of the gateway
|
35
|
+
self.display_name = 'Paymentect Orbital Gateway'
|
36
|
+
|
37
|
+
# Headers
|
38
|
+
self.headers = {
|
39
|
+
"MIME-Version" => "1.0",
|
40
|
+
"Content-Type" => "Application/PTI46",
|
41
|
+
"Content-transfer-encoding" => "text",
|
42
|
+
"Request-number" => "1",
|
43
|
+
"Document-type" => "Request"
|
44
|
+
}
|
45
|
+
|
46
|
+
attr_reader :request, :response
|
47
|
+
|
48
|
+
def initialize(options = {})
|
49
|
+
requires!(options, :login, :password, :merchant_id, :bin, :terminal_id)
|
50
|
+
@options = options.merge({
|
51
|
+
:currency_code => self.class.currency_code,
|
52
|
+
:currency_exponent => self.class.currency_exponent
|
53
|
+
})
|
54
|
+
super
|
55
|
+
end
|
56
|
+
|
57
|
+
def authorize(money, credit_card=nil, options = {})
|
58
|
+
@request = Request::NewOrder.new("A", money, credit_card, options.merge(@options))
|
59
|
+
|
60
|
+
commit('authonly', @request)
|
61
|
+
end
|
62
|
+
|
63
|
+
def purchase(money, credit_card=nil, options = {})
|
64
|
+
@request = Request::NewOrder.new("AC", money, credit_card, options.merge(@options))
|
65
|
+
|
66
|
+
commit('sale', @request)
|
67
|
+
end
|
68
|
+
|
69
|
+
def refund(money, credit_card=nil, options={})
|
70
|
+
@request = Request::NewOrder.new("R", money, credit_card, options.merge(@options))
|
71
|
+
|
72
|
+
commit('refund', @request)
|
73
|
+
end
|
74
|
+
|
75
|
+
def profile(action, credit_card=nil, options={})
|
76
|
+
@request = Request::ProfileManagement.new(action, credit_card, options.merge(@options))
|
77
|
+
|
78
|
+
commit("profile-#{action}", @request)
|
79
|
+
end
|
80
|
+
|
81
|
+
def void(tx_ref_num, tx_ref_idx, money=nil, options={})
|
82
|
+
@request = Request::Void.new(tx_ref_num, tx_ref_idx, money, options.merge(@options))
|
83
|
+
|
84
|
+
commit('void', @request)
|
85
|
+
end
|
86
|
+
|
87
|
+
def end_of_day(options={})
|
88
|
+
@request = Request::EndOfDay.new(options.merge(@options))
|
89
|
+
|
90
|
+
commit('end of day', @request)
|
91
|
+
end
|
92
|
+
|
93
|
+
private
|
94
|
+
def commit(action, request)
|
95
|
+
resp = ssl_post(endpoint_url, request.to_xml, headers)
|
96
|
+
|
97
|
+
@response ||= Response.new(resp, request.request_type, {
|
98
|
+
:test => test?
|
99
|
+
})
|
100
|
+
end
|
101
|
+
|
102
|
+
def headers
|
103
|
+
self.class.headers.merge(request.headers)
|
104
|
+
end
|
105
|
+
|
106
|
+
def endpoint_url
|
107
|
+
self.class.urls[Base.gateway_mode][0]
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'ostruct'
|
2
|
+
|
3
|
+
module ActiveMerchant
|
4
|
+
module Billing
|
5
|
+
module PaymentechOrbital
|
6
|
+
module Request
|
7
|
+
class Base
|
8
|
+
attr_reader :gateway, :options
|
9
|
+
|
10
|
+
def initialize(options={})
|
11
|
+
@options = OpenStruct.new(options)
|
12
|
+
end
|
13
|
+
|
14
|
+
def to_xml
|
15
|
+
@_xml ||= build_request
|
16
|
+
end
|
17
|
+
alias :xml :to_xml
|
18
|
+
|
19
|
+
def headers
|
20
|
+
@_headers ||= options.headers || {}
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
delegate :login, :password, :merchant_id,
|
25
|
+
:bin, :terminal_id, :currency_code,
|
26
|
+
:currency_exponent, :customer_ref_num,
|
27
|
+
:order_id, :to => :options
|
28
|
+
|
29
|
+
def address
|
30
|
+
@_address ||= options.billing_address || options.address || {}
|
31
|
+
end
|
32
|
+
|
33
|
+
def full_street_address
|
34
|
+
"#{address[:address1]} #{address[:address2]}".strip
|
35
|
+
end
|
36
|
+
|
37
|
+
# Implement me. I should be the parent tag for the request.
|
38
|
+
def request_type; "RequestType"; end
|
39
|
+
|
40
|
+
def build_request
|
41
|
+
xml = Builder::XmlMarkup.new(:indent => 2)
|
42
|
+
|
43
|
+
xml.instruct!(:xml, :version => '1.0', :encoding => 'UTF-8')
|
44
|
+
xml.tag! "Request" do
|
45
|
+
xml.tag! request_type do
|
46
|
+
add_authentication(xml)
|
47
|
+
|
48
|
+
request_body(xml)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
xml.target!
|
53
|
+
end
|
54
|
+
|
55
|
+
# Implement me. I should take the provided
|
56
|
+
# xml builder and add tags to the request.
|
57
|
+
def request_body(xml); xml; end
|
58
|
+
|
59
|
+
def add_authentication(xml)
|
60
|
+
xml.tag! "OrbitalConnectionUsername", login
|
61
|
+
xml.tag! "OrbitalConnectionPassword", password
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module ActiveMerchant
|
2
|
+
module Billing
|
3
|
+
module PaymentechOrbital
|
4
|
+
module Request
|
5
|
+
class EndOfDay < PaymentechOrbital::Request::Base
|
6
|
+
def request_type; "EndOfDay"; end
|
7
|
+
|
8
|
+
private
|
9
|
+
def request_body(xml)
|
10
|
+
add_meta_info(xml)
|
11
|
+
end
|
12
|
+
|
13
|
+
def add_meta_info(xml)
|
14
|
+
xml.tag! "BIN", bin
|
15
|
+
xml.tag! "MerchantID", merchant_id
|
16
|
+
xml.tag! "TerminalID", terminal_id
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,121 @@
|
|
1
|
+
module ActiveMerchant
|
2
|
+
module Billing
|
3
|
+
module PaymentechOrbital
|
4
|
+
module Request
|
5
|
+
class NewOrder < PaymentechOrbital::Request::Base
|
6
|
+
attr_reader :message_type, :money, :credit_card
|
7
|
+
|
8
|
+
def initialize(message_type, money, credit_card, options)
|
9
|
+
@message_type = message_type
|
10
|
+
@money = money
|
11
|
+
@credit_card = credit_card
|
12
|
+
super(options)
|
13
|
+
end
|
14
|
+
|
15
|
+
delegate :industry_type, :mb_type, :recurring_start_date,
|
16
|
+
:recurring_end_date, :recurring_end_date_flag,
|
17
|
+
:recurring_max_billings, :recurring_frequency,
|
18
|
+
:deferred_bill_date, :soft_descriptors,
|
19
|
+
:to => :options
|
20
|
+
|
21
|
+
def request_type; "NewOrder"; end
|
22
|
+
|
23
|
+
def recurring?
|
24
|
+
industry_type == "RC"
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
def request_body(xml)
|
29
|
+
add_meta_info(xml)
|
30
|
+
add_credit_card(xml)
|
31
|
+
add_billing_address(xml)
|
32
|
+
add_profile_management_options(xml)
|
33
|
+
add_order_information(xml)
|
34
|
+
add_soft_descriptor_info(xml)
|
35
|
+
add_managed_billing_info(xml)
|
36
|
+
end
|
37
|
+
|
38
|
+
def add_meta_info(xml)
|
39
|
+
xml.tag! "IndustryType", industry_type || "EC"
|
40
|
+
xml.tag! "MessageType", message_type
|
41
|
+
xml.tag! "BIN", bin
|
42
|
+
xml.tag! "MerchantID", merchant_id
|
43
|
+
xml.tag! "TerminalID", terminal_id
|
44
|
+
end
|
45
|
+
|
46
|
+
def add_credit_card(xml)
|
47
|
+
if credit_card
|
48
|
+
xml.tag! "CardBrand", credit_card.respond_to?(:brand) ? credit_card.brand : credit_card.type
|
49
|
+
xml.tag! "AccountNum", credit_card.number
|
50
|
+
xml.tag! "Exp", "#{credit_card.month}#{credit_card.year}"
|
51
|
+
add_currency(xml)
|
52
|
+
xml.tag! "CardSecValInd", "1"
|
53
|
+
xml.tag! "CardSecVal", credit_card.verification_value
|
54
|
+
else
|
55
|
+
xml.tag! "AccountNum", nil
|
56
|
+
add_currency(xml)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def add_currency(xml)
|
61
|
+
xml.tag! "CurrencyCode", currency_code
|
62
|
+
xml.tag! "CurrencyExponent", currency_exponent
|
63
|
+
end
|
64
|
+
|
65
|
+
def add_billing_address(xml)
|
66
|
+
xml.tag! "AVSzip", address[:zip]
|
67
|
+
if full_street_address.length < 30
|
68
|
+
xml.tag! "AVSaddress1", full_street_address
|
69
|
+
else
|
70
|
+
xml.tag! "AVSaddress1", address[:address1]
|
71
|
+
xml.tag! "AVSaddress2", address[:address2]
|
72
|
+
end
|
73
|
+
xml.tag! "AVScity", address[:city]
|
74
|
+
xml.tag! "AVSstate", address[:state]
|
75
|
+
xml.tag! "AVSphoneNum" , address[:phone]
|
76
|
+
xml.tag! "AVSname", address[:name]
|
77
|
+
xml.tag! "AVScountryCode", address[:country]
|
78
|
+
end
|
79
|
+
|
80
|
+
def add_profile_management_options(xml)
|
81
|
+
if customer_ref_num
|
82
|
+
xml.tag! "CustomerRefNum", customer_ref_num
|
83
|
+
else
|
84
|
+
xml.tag! "CustomerProfileFromOrderInd", "A"
|
85
|
+
xml.tag! "CustomerProfileOrderOverrideInd", "NO"
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def add_order_information(xml)
|
90
|
+
xml.tag! "OrderID", order_id
|
91
|
+
xml.tag! "Amount", money
|
92
|
+
end
|
93
|
+
|
94
|
+
def add_soft_descriptor_info(xml)
|
95
|
+
if soft_descriptors
|
96
|
+
xml.tag! "SDMerchantName", soft_descriptors[:merchant_name]
|
97
|
+
xml.tag! "SDProductDescription", soft_descriptors[:production_description]
|
98
|
+
xml.tag! "SDMerchantCity", soft_descriptors[:merchant_city]
|
99
|
+
xml.tag! "SDMerchantPhone", soft_descriptors[:merchant_phone]
|
100
|
+
xml.tag! "SDMerchantURL", soft_descriptors[:merchant_url]
|
101
|
+
xml.tag! "SDMerchantEmail", soft_descriptors[:merchant_email]
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
def add_managed_billing_info(xml)
|
106
|
+
if recurring?
|
107
|
+
xml.tag! "MBType", mb_type || "R"
|
108
|
+
xml.tag! "MBOrderIdGenerationMethod", "DI"
|
109
|
+
xml.tag! "MBRecurringStartDate", recurring_start_date || (Date.today + 1).strftime("%m%d%Y")
|
110
|
+
xml.tag! "MBRecurringEndDate", recurring_end_date
|
111
|
+
xml.tag! "MBRecurringNoEndDateFlag", recurring_end_date_flag || (recurring_end_date ? "N" : "Y")
|
112
|
+
xml.tag! "MBRecurringMaxBillings", recurring_max_billings
|
113
|
+
xml.tag! "MBRecurringFrequency", recurring_frequency
|
114
|
+
xml.tag! "MBDeferredBillDate", deferred_bill_date
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|