payxml 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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: eb58ae8d982e195dc9254b6e62ca101245acba03
4
+ data.tar.gz: 46164462e34eebf809e4dcb7878ec6b992b960a6
5
+ SHA512:
6
+ metadata.gz: c8b215d4282214c51359b931724efc40fabd5fd9d9c62ef2c573e038971b1fd7b41b4a602937128382286d89880dd722218923fa49f33c4d7c9bd6b626003ea5
7
+ data.tar.gz: d13ffcf41a21f034be757ef76117221b45f5652ca96dcf15edb4e18ad7ce42717174c80a88683ab5f74920b2f53edb76ceaa9ccbd8335e61328421cc02834027
data/.gitignore ADDED
@@ -0,0 +1,9 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.2.3
4
+ before_install: gem install bundler -v 1.11.2
@@ -0,0 +1,49 @@
1
+ # Contributor Code of Conduct
2
+
3
+ As contributors and maintainers of this project, and in the interest of
4
+ fostering an open and welcoming community, we pledge to respect all people who
5
+ contribute through reporting issues, posting feature requests, updating
6
+ documentation, submitting pull requests or patches, and other activities.
7
+
8
+ We are committed to making participation in this project a harassment-free
9
+ experience for everyone, regardless of level of experience, gender, gender
10
+ identity and expression, sexual orientation, disability, personal appearance,
11
+ body size, race, ethnicity, age, religion, or nationality.
12
+
13
+ Examples of unacceptable behavior by participants include:
14
+
15
+ * The use of sexualized language or imagery
16
+ * Personal attacks
17
+ * Trolling or insulting/derogatory comments
18
+ * Public or private harassment
19
+ * Publishing other's private information, such as physical or electronic
20
+ addresses, without explicit permission
21
+ * Other unethical or unprofessional conduct
22
+
23
+ Project maintainers have the right and responsibility to remove, edit, or
24
+ reject comments, commits, code, wiki edits, issues, and other contributions
25
+ that are not aligned to this Code of Conduct, or to ban temporarily or
26
+ permanently any contributor for other behaviors that they deem inappropriate,
27
+ threatening, offensive, or harmful.
28
+
29
+ By adopting this Code of Conduct, project maintainers commit themselves to
30
+ fairly and consistently applying these principles to every aspect of managing
31
+ this project. Project maintainers who do not follow or enforce the Code of
32
+ Conduct may be permanently removed from the project team.
33
+
34
+ This code of conduct applies both within project spaces and in public spaces
35
+ when an individual is representing the project or its community.
36
+
37
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
38
+ reported by contacting a project maintainer at duplessis.nico@gmail.com. All
39
+ complaints will be reviewed and investigated and will result in a response that
40
+ is deemed necessary and appropriate to the circumstances. Maintainers are
41
+ obligated to maintain confidentiality with regard to the reporter of an
42
+ incident.
43
+
44
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage],
45
+ version 1.3.0, available at
46
+ [http://contributor-covenant.org/version/1/3/0/][version]
47
+
48
+ [homepage]: http://contributor-covenant.org
49
+ [version]: http://contributor-covenant.org/version/1/3/0/
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in payxml.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 Nico du Plessis
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,58 @@
1
+ [![Build Status](https://travis-ci.org/nduplessis/payxml.svg?branch=master)](https://travis-ci.org/nduplessis/payxml)
2
+
3
+ # PayXML
4
+
5
+ PayXML is an easy use wrapper for the the PayGate PayXML payment gateway API.
6
+
7
+ https://www.paygate.co.za
8
+
9
+ Compatible with:
10
+ - `PayXML 4.0`
11
+
12
+ ## Installation
13
+
14
+ Add this line to your application's Gemfile:
15
+
16
+ ```ruby
17
+ gem 'payxml'
18
+ ```
19
+
20
+ And then execute:
21
+
22
+ $ bundle
23
+
24
+ Or install it yourself as:
25
+
26
+ $ gem install payxml
27
+
28
+ ## Usage
29
+
30
+ ### Test vs Production
31
+
32
+ ### Example
33
+
34
+ ```ruby
35
+ require 'payxml'
36
+
37
+ payxml = PayXML::PayXML.new( '10011013800', 'test' )
38
+ response = payxml.authorise({customer_name: 'John Doe', customer_reference: 'customer ref 1', credit_card_number: '4000000000000002', expiry_date: '122018', cvv: '123', amount: '30020', currency: 'ZAR', notify_callback_url: 'http://mysite.dev/notify', response_url: 'http://mysite.dev/order-complete'})
39
+
40
+ if response.requires_secure_redirect?
41
+ # redirect to response.secure_redirect_url
42
+ end
43
+ ```
44
+
45
+ ## Development
46
+
47
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
48
+
49
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
50
+
51
+ ## Contributing
52
+
53
+ Bug reports and pull requests are welcome on GitHub at https://github.com/nduplessis/payxml. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
54
+
55
+
56
+ ## License
57
+
58
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "payxml"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
data/lib/payxml.rb ADDED
@@ -0,0 +1,73 @@
1
+ require "payxml/version"
2
+ require "payxml/result_codes"
3
+ require "payxml/credit_card_types"
4
+ require "payxml/message"
5
+ require "payxml/error"
6
+ require "payxml/auth"
7
+ require "nokogiri"
8
+ require 'digest'
9
+ require 'net/http'
10
+
11
+ module PayXML
12
+ class PayXML
13
+ # PayXML API version number
14
+ PAYXML_VERSION_NUMBER = '4.0'
15
+
16
+ PAYXML_URL = 'https://www.paygate.co.za/payxml/process.trans'
17
+
18
+ def initialize(paygate_id, paygate_password)
19
+ @paygate_id = paygate_id
20
+ @paygate_password = paygate_password
21
+ end
22
+
23
+ def authorise(options = {})
24
+ authtx = Auth::Request.new(@paygate_id, @paygate_password)
25
+ authtx.customer_reference = options[:customer_reference]
26
+ authtx.customer_name = options[:customer_name]
27
+ authtx.credit_card_number = options[:credit_card_number]
28
+ authtx.expiry_date = options[:expiry_date]
29
+ authtx.currency = options[:currency]
30
+ authtx.amount = options[:amount]
31
+ authtx.cvv = options[:cvv]
32
+
33
+ authtx.customer_ip_address = options[:customer_ip_address]
34
+ authtx.notify_callback_url = options[:notify_callback_url]
35
+ authtx.response_url = options[:response_url]
36
+
37
+ response = post_request_body(authtx.xml_string)
38
+
39
+ if !(response.body =~ /errorrx/i).nil?
40
+ response_object = Error.allocate
41
+ response_object.parse(response.body)
42
+ else
43
+ response_object = Auth::Response.allocate
44
+ response_object.parse(response.body)
45
+ end
46
+
47
+ response_object
48
+ end
49
+
50
+ def self.checksum(values=[])
51
+ md5 = Digest::MD5.new
52
+ md5 << values.map { |i| i.to_s }.join("|")
53
+ md5.hexdigest
54
+ end
55
+
56
+ protected
57
+ def post_request_body(xml_body)
58
+ uri = URI.parse PAYXML_URL
59
+ request = Net::HTTP::Post.new uri.path
60
+ request.body = xml_body
61
+ request.content_type = 'text/xml'
62
+ http = Net::HTTP.new(uri.host, uri.port)
63
+ http.use_ssl = true
64
+ response = http.request(request)
65
+
66
+ response
67
+ end
68
+
69
+ def validate_response
70
+ end
71
+
72
+ end
73
+ end
@@ -0,0 +1,111 @@
1
+ module PayXML
2
+ module Auth
3
+ class Request < Message
4
+ attr_accessor :customer_name
5
+ attr_accessor :customer_reference
6
+ attr_accessor :budget_period
7
+ attr_accessor :amount
8
+ attr_accessor :currency
9
+ attr_accessor :bno
10
+ attr_accessor :credit_card_number
11
+ attr_accessor :cvv
12
+ attr_accessor :expiry_date
13
+ attr_accessor :customer_ip_address
14
+ attr_accessor :notify_callback_url
15
+ attr_accessor :response_url
16
+
17
+ def initialize(paygate_id, paygate_password)
18
+ super(paygate_id, paygate_password)
19
+
20
+ @budget_period = 0
21
+ @bno = ''
22
+ end
23
+
24
+ def parse(xml_string)
25
+ super(xml_string)
26
+
27
+ doc = Nokogiri::XML(xml_string)
28
+ authtx = doc.xpath("//authtx").first
29
+ self.customer_reference = authtx['cref'] unless authtx['cref'].nil?
30
+ # self.customer_name = authtx['cname']
31
+ # self.credit_card_number = authtx['cc']
32
+ # self.expiry_date = authtx['exp']
33
+ # self.cvv = authtx['cvv']
34
+ # self.budget_period = authtx['budp']
35
+ # self.currency = authtx['cur']
36
+ end
37
+
38
+ protected
39
+ def xml_doc
40
+ doc = super
41
+ protocol = doc.xpath("//protocol").first
42
+ authtx = Nokogiri::XML::Node.new "authtx", doc
43
+
44
+ # Required values
45
+ authtx['cref'] = self.customer_reference
46
+ authtx['cname'] = self.customer_name
47
+ authtx['cc'] = self.credit_card_number
48
+ authtx['exp'] = self.expiry_date
49
+ authtx['cur'] = self.currency
50
+ authtx['amt'] = self.amount.to_s
51
+ authtx['budp'] = self.budget_period.to_s
52
+ authtx['bno'] = self.bno
53
+ authtx['cvv'] = self.cvv
54
+
55
+ # Optional values for 3D sercure auth
56
+ authtx['ip'] = self.customer_ip_address unless self.customer_ip_address.nil?
57
+ authtx['nurl'] = self.notify_callback_url unless self.notify_callback_url.nil?
58
+ authtx['rurl'] = self.response_url unless self.response_url.nil?
59
+
60
+ protocol.add_child(authtx)
61
+
62
+ doc
63
+ end
64
+ end
65
+
66
+ class Response < Message
67
+ attr_reader :customer_reference
68
+ attr_reader :transaction_id
69
+ attr_reader :card_type
70
+ attr_reader :bno
71
+ attr_reader :result_description
72
+ attr_reader :result_code
73
+ attr_reader :transaction_status_description
74
+ attr_reader :transaction_status
75
+ attr_reader :authorisation_code
76
+ attr_reader :risk
77
+ attr_reader :secure_redirect_url
78
+ attr_reader :secure_checksum
79
+
80
+ def requires_secure_redirect?
81
+ !self.secure_redirect_url.nil?
82
+ end
83
+
84
+ def parse(xml_string)
85
+ super(xml_string)
86
+
87
+ doc = Nokogiri::XML(xml_string)
88
+ authrx = doc.xpath("//authrx").first
89
+ securerx = doc.xpath("//securerx").first
90
+ if !authrx.nil?
91
+ @customer_reference = authrx['cref'] unless authrx['cref'].nil?
92
+ @transaction_id = authrx['tid'] unless authrx['tid'].nil?
93
+ @card_type = authrx['ctype'] unless authrx['ctype'].nil?
94
+ @transaction_status = authrx['stat'] unless authrx['stat'].nil?
95
+ @transaction_status_description = authrx['sdesc'] unless authrx['sdesc'].nil?
96
+ @bno = authrx['bno'] unless authrx['bno'].nil?
97
+ @result_code = authrx['res'] unless authrx['res'].nil?
98
+ @result_description = authrx['rdesc'] unless authrx['rdesc'].nil?
99
+ @authorisation_code = authrx['auth'] unless authrx['auth'].nil?
100
+ @risk = authrx['risk'] unless authrx['risk'].nil?
101
+ elsif !securerx.nil?
102
+ @customer_reference = securerx['cref'] unless securerx['cref'].nil?
103
+ @transaction_id = securerx['tid'] unless securerx['tid'].nil?
104
+ @secure_redirect_url = securerx['url'] unless securerx['url'].nil?
105
+ @secure_checksum = securerx['chk'] unless securerx['chk'].nil?
106
+ end
107
+ end
108
+ end
109
+
110
+ end
111
+ end
@@ -0,0 +1,9 @@
1
+ module PayXML
2
+ CREDIT_CARD_TYPES = {
3
+ :unknown => 0,
4
+ :visa => 1,
5
+ :master_card => 2,
6
+ :american_express => 3,
7
+ :diners_club => 4,
8
+ }
9
+ end
@@ -0,0 +1,30 @@
1
+ module PayXML
2
+
3
+ ##
4
+ # Wraps an error message from the API.
5
+ class Error < Message
6
+ attr_reader :code
7
+ attr_reader :description
8
+
9
+ def parse(xml_string)
10
+ super(xml_string)
11
+
12
+ doc = Nokogiri::XML(xml_string)
13
+ errorrx = doc.xpath("//errorrx").first
14
+
15
+ @code = errorrx['ecode']
16
+ @description = errorrx['edesc']
17
+ end
18
+
19
+ protected
20
+ def xml_doc
21
+ doc = super
22
+
23
+ protocol = doc.xpath("//protocol").first
24
+ errorrx = Nokogiri::XML::Node.new "errorrx", doc
25
+ protocol.add_child(errorrx)
26
+
27
+ doc
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,45 @@
1
+ module PayXML
2
+
3
+ ##
4
+ # This class represents the base class for all XML message payloads used
5
+ # for the PayXML API.
6
+
7
+ class Message
8
+ attr_accessor :paygate_id
9
+ attr_accessor :paygate_password
10
+
11
+ PAYXML_VERSION_NUMBER = '4.0'
12
+
13
+ def initialize( paygate_id, paygate_password )
14
+ self.paygate_id = paygate_id
15
+ self.paygate_password = paygate_password
16
+ end
17
+
18
+ def parse(xml_string)
19
+ doc = Nokogiri::XML(xml_string)
20
+ protocol = doc.xpath("//protocol").first
21
+ self.paygate_id = protocol['pgid']
22
+ self.paygate_password = protocol['pwd']
23
+ end
24
+
25
+ def xml_string
26
+ xml_doc.to_s
27
+ end
28
+
29
+ protected
30
+
31
+ def xml_doc
32
+ doc = Nokogiri::XML::Document.new
33
+
34
+ protocol = Nokogiri::XML::Node.new "protocol", doc
35
+ protocol['ver'] = PAYXML_VERSION_NUMBER
36
+ protocol['pgid'] = self.paygate_id
37
+ protocol['pwd'] = self.paygate_password
38
+
39
+ doc << protocol
40
+
41
+ doc
42
+ end
43
+ end
44
+
45
+ end
@@ -0,0 +1,9 @@
1
+ module PayXML
2
+ class Protocol
3
+ attr_accessor :paygate_id
4
+ attr_accessor :password
5
+
6
+ def to_s
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,13 @@
1
+ module PayXML
2
+ RESULT_CODES = {
3
+ :call_for_approval => 900001,
4
+ :card_expired => 900002,
5
+ :insufficient_funds => 900003,
6
+ :invalid_card_number => 900004,
7
+ :bank_interface_timeout => 900005,
8
+ :invalid_card => 900006,
9
+ :declined => 900007,
10
+ :lost_card => 900009,
11
+ :invalid_card_length => 900010,
12
+ }
13
+ end
@@ -0,0 +1,3 @@
1
+ module PayXML
2
+ VERSION = "0.1.0"
3
+ end
data/payxml.gemspec ADDED
@@ -0,0 +1,35 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'payxml/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "payxml"
8
+ spec.version = PayXML::VERSION
9
+ spec.authors = ["Nico du Plessis"]
10
+ spec.email = ["duplessis.nico@gmail.com"]
11
+
12
+ spec.summary = %q{A wrapper for the PayGate PayXML API.}
13
+ spec.description = %q{PayXML is an easy use wrapper for the the PayGate PayXML payment gateway API.}
14
+ spec.homepage = "https://github.com/nduplessis/payxml"
15
+ spec.license = "MIT"
16
+
17
+ # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
18
+ # delete this section to allow pushing this gem to any host.
19
+ # if spec.respond_to?(:metadata)
20
+ # spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
21
+ # else
22
+ # raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
23
+ # end
24
+
25
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
26
+ spec.bindir = "exe"
27
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
+ spec.require_paths = ["lib"]
29
+
30
+ spec.add_development_dependency "bundler", "~> 1.11"
31
+ spec.add_development_dependency "rake", "~> 10.0"
32
+ spec.add_development_dependency "rspec", "~> 3.0"
33
+ spec.add_development_dependency "rspec-mocks"
34
+ spec.add_development_dependency "nokogiri"
35
+ end
metadata ADDED
@@ -0,0 +1,134 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: payxml
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Nico du Plessis
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2016-02-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.11'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.11'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec-mocks
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: nokogiri
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: PayXML is an easy use wrapper for the the PayGate PayXML payment gateway
84
+ API.
85
+ email:
86
+ - duplessis.nico@gmail.com
87
+ executables: []
88
+ extensions: []
89
+ extra_rdoc_files: []
90
+ files:
91
+ - ".gitignore"
92
+ - ".rspec"
93
+ - ".travis.yml"
94
+ - CODE_OF_CONDUCT.md
95
+ - Gemfile
96
+ - LICENSE.txt
97
+ - README.md
98
+ - Rakefile
99
+ - bin/console
100
+ - bin/setup
101
+ - lib/payxml.rb
102
+ - lib/payxml/auth.rb
103
+ - lib/payxml/credit_card_types.rb
104
+ - lib/payxml/error.rb
105
+ - lib/payxml/message.rb
106
+ - lib/payxml/protocol.rb
107
+ - lib/payxml/result_codes.rb
108
+ - lib/payxml/version.rb
109
+ - payxml.gemspec
110
+ homepage: https://github.com/nduplessis/payxml
111
+ licenses:
112
+ - MIT
113
+ metadata: {}
114
+ post_install_message:
115
+ rdoc_options: []
116
+ require_paths:
117
+ - lib
118
+ required_ruby_version: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
123
+ required_rubygems_version: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ version: '0'
128
+ requirements: []
129
+ rubyforge_project:
130
+ rubygems_version: 2.5.2
131
+ signing_key:
132
+ specification_version: 4
133
+ summary: A wrapper for the PayGate PayXML API.
134
+ test_files: []