paybox 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,3 @@
1
+ pkg/*
2
+ *.gem
3
+ .bundle
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source "http://rubygems.org"
2
+ gemspec
@@ -0,0 +1,72 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ paybox (0.0.1)
5
+ activemodel
6
+ activesupport
7
+ activevalidators
8
+ httparty
9
+ i18n
10
+
11
+ GEM
12
+ remote: http://rubygems.org/
13
+ specs:
14
+ activemodel (3.0.3)
15
+ activesupport (= 3.0.3)
16
+ builder (~> 2.1.2)
17
+ i18n (~> 0.4)
18
+ activerecord (3.0.3)
19
+ activemodel (= 3.0.3)
20
+ activesupport (= 3.0.3)
21
+ arel (~> 2.0.2)
22
+ tzinfo (~> 0.3.23)
23
+ activesupport (3.0.3)
24
+ activevalidators (1.2.4)
25
+ activemodel (>= 3.0.0)
26
+ activerecord (>= 3.0.0)
27
+ date_validator (= 0.5.9)
28
+ mail
29
+ arel (2.0.6)
30
+ builder (2.1.2)
31
+ crack (0.1.8)
32
+ date_validator (0.5.9)
33
+ activemodel (>= 3.0.0)
34
+ diff-lcs (1.1.2)
35
+ fakeweb (1.3.0)
36
+ httparty (0.6.1)
37
+ crack (= 0.1.8)
38
+ i18n (0.5.0)
39
+ mail (2.2.12)
40
+ activesupport (>= 2.3.6)
41
+ i18n (>= 0.4.0)
42
+ mime-types (~> 1.16)
43
+ treetop (~> 1.4.8)
44
+ mime-types (1.16)
45
+ polyglot (0.3.1)
46
+ rspec (2.2.0)
47
+ rspec-core (~> 2.2)
48
+ rspec-expectations (~> 2.2)
49
+ rspec-mocks (~> 2.2)
50
+ rspec-core (2.2.1)
51
+ rspec-expectations (2.2.0)
52
+ diff-lcs (~> 1.1.2)
53
+ rspec-mocks (2.2.0)
54
+ treetop (1.4.9)
55
+ polyglot (>= 0.3.1)
56
+ tzinfo (0.3.23)
57
+
58
+ PLATFORMS
59
+ ruby
60
+
61
+ DEPENDENCIES
62
+ activemodel
63
+ activesupport
64
+ activevalidators
65
+ bundler
66
+ fakeweb
67
+ httparty
68
+ i18n
69
+ paybox!
70
+ rspec
71
+ rspec-core
72
+ rspec-expectations
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2010 Franck Verrot
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.
@@ -0,0 +1,61 @@
1
+ Paybox
2
+ ======
3
+
4
+
5
+ Installation (Rails 3)
6
+ ----------------------
7
+
8
+ In your Gemfile :
9
+
10
+ gem 'paybox'
11
+
12
+
13
+ Usage
14
+ -----
15
+
16
+ response = Paybox.new(
17
+ :operation => '00057',
18
+ :amount => 1000,
19
+ :user_id => your_db_customer/suscriber_account_id,
20
+ :card_nbr => card_number_or_encrypted_alias,
21
+ :expire => card_expiration_date (mmyy),
22
+ :cvv2 => card_cvv2_code (3 digits)
23
+ )
24
+
25
+ Then you can read response like this, for instance :
26
+
27
+ response.coderesponse = '00000' # => Cool, successful request
28
+ or
29
+ response.commentaire = "PAYBOX : Numéro de porteur invalide" # => Oooops, invalid card number given
30
+
31
+ Todo
32
+ ----
33
+
34
+ Lots of improvements can be made:
35
+
36
+ * Add I18n
37
+ * Tests
38
+ * Documentation
39
+ * ...
40
+
41
+ Note on Patches/Pull Requests
42
+ -----------------------------
43
+
44
+ * Fork the project.
45
+ * Make your feature addition or bug fix.
46
+ * Add tests for it. This is important so I don't break it in a
47
+ future version unintentionally.
48
+ * Commit, do not mess with rakefile, version, or history.
49
+ (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
50
+ * Send me a pull request. Bonus points for topic branches.
51
+
52
+
53
+ Contributors
54
+ ------------
55
+ * Guillaume Barillot, author of the initial implementation
56
+ * Franck Verrot
57
+
58
+ Copyright
59
+ ---------
60
+
61
+ Copyright (c) 2010 Franck Verrot. MIT LICENSE. See LICENSE for details.
@@ -0,0 +1,17 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+ begin
4
+ require 'rspec/core/rake_task'
5
+
6
+ desc "Run specs"
7
+ RSpec::Core::RakeTask.new do |t|
8
+ t.rspec_opts = %w(-fs --color)
9
+ t.ruby_opts = %w(-w)
10
+ end
11
+
12
+ rescue LoadError
13
+ task :spec do
14
+ abort "Run `gem install rspec` to be able to run specs"
15
+ end
16
+ end
17
+ task :default => :spec
@@ -0,0 +1,15 @@
1
+ require 'active_support'
2
+ require 'active_support/all'
3
+ require 'active_model'
4
+ require 'active_model/validations'
5
+ require 'activevalidators'
6
+ require 'httparty'
7
+
8
+ module Paybox
9
+ extend ActiveSupport::Autoload
10
+ autoload :Paybox
11
+ autoload :Transaction
12
+ autoload :Configuration
13
+ autoload :Gateway
14
+ autoload :Operation
15
+ end
@@ -0,0 +1,12 @@
1
+ module Paybox
2
+ module Configuration
3
+ extend ActiveSupport::Concern
4
+
5
+ module ClassMethods
6
+ attr_accessor :site, :rang, :cle
7
+ def configure &block
8
+ yield self
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,11 @@
1
+ module Paybox
2
+ module Gateway
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ include HTTParty
7
+ base_uri 'https://preprod-ppps.paybox.com'
8
+ PROCESS_PATH = '/PPPS.php'
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,26 @@
1
+ module Paybox
2
+ module Operation
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ include ActiveModel::Validations
7
+
8
+ # Payment's details
9
+ attr_accessor :operation #:operation => ":operation . The code of requested operation to be done",
10
+ attr_accessor :amount #:amount => ":amount . The amount of the transaction",
11
+ attr_accessor :user_id #:user_id => "user_id . The id of your user in your own Database",
12
+ attr_accessor :card_nbr #:card_nbr => ":card_nbr . The crypted partial card number in your Database",
13
+ attr_accessor :expire #:expire => ":expire . The expiration date of the card",
14
+ attr_accessor :cvv2 #:cvv2 => ":cvv2 . The CVV2 parameter you should have stored in your DB",
15
+ attr_accessor :numtrans #:numtrans => ":numtrans . The previous transaction number"
16
+
17
+
18
+ validates :operation, :amount, :user_id, :card_nbr, :expire, :cvv2, :presence => true
19
+ validates :card_nbr, :credit_card => { :type => :any }
20
+
21
+ # WARNING :numtrans parameter IS REQUIRED only for operations 00002, 00005, 00013, 00017, 00052, 00055
22
+ NUM_TRANS_REQUIRED_ARRAY = ['00002', '00005', '000013', '00017', '00052', '00055']
23
+ validates :numtrans, :presence => true, :if => Proc.new { |obj| NUM_TRANS_REQUIRED_ARRAY.include?(obj.operation) }
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,93 @@
1
+ module Paybox
2
+ class Paybox
3
+ include Configuration # Class-level configuration like site, rang, cle
4
+ include Gateway # Gateway technical infrastructure
5
+ include Operation # Internal validations
6
+
7
+ # Internal result when the object issues a call to Paybox
8
+ attr_accessor :transaction
9
+
10
+ def initialize(args)
11
+ args.each_pair { |k,v| send("#{k}=",v) }
12
+ end
13
+
14
+ def process
15
+ return false unless self.valid?
16
+
17
+ ##### List of all available operations ###########
18
+ # One-shot operations for customers
19
+ # ------------------------------------------------
20
+ # 00001 = Autorisation,
21
+ # 00002 = Débit,
22
+ # 00003 = Autorisation + Débit,
23
+ # 00004 = Crédit,
24
+ # 00005 = Annulation,
25
+ # 00011 = Vérification de l’existence d’une transaction,
26
+ # 00012 = Transaction sans demande d’autorisation,
27
+ # 00013 = Modification du montant d’une transaction,
28
+ # 00014 = Remboursement,
29
+ # 00017 = Consultation
30
+
31
+ # Recurring Operations on suscriber accounts
32
+ # -----------------------------------------------
33
+ # 00051 = Autorisation seule sur un abonné,
34
+ # 00052 = Débit sur un abonné,
35
+ # 00053 = Autorisation + Débit sur un abonné,
36
+ # 00054 = Crédit sur un abonné,
37
+ # 00055 = Annulation d’une opération sur un abonné,
38
+ # 00056 = Inscription nouvel abonné,
39
+ # 00057 = Modification abonné existant,
40
+ # 00058 = Suppression abonné
41
+ # 00061 = Transaction sans demande d’autorisation (forçage).
42
+
43
+ current_date = Time.now
44
+
45
+ data = {
46
+ :SITE => self.class.site,
47
+ :RANG => self.class.rang,
48
+ :CLE => self.class.cle,
49
+
50
+ :DATEQ => current_date.strftime('%d%m%Y%H%M%S'),
51
+ :NUMQUESTION => current_date.to_i,
52
+ :TYPE => self.operation,
53
+ :MONTANT => self.amount,
54
+ :REFERENCE => "test",
55
+ :REFABONNE => self.user_id,
56
+ :VERSION => '00104',
57
+ :IDENTIFIANT => '2',
58
+ :DEVISE => "978", #EURO
59
+ :PORTEUR => self.card_nbr,
60
+ :DATEVAL => self.expire,
61
+ :CVV => self.cvv2,
62
+ :ACTIVITE => "024",
63
+ :ARCHIVAGE => "Simplissime.fr",
64
+ :DIFFERE => "000",
65
+ :NUMAPPEL => "",
66
+ :NUMTRANS => self.numtrans,
67
+ :AUTORISATION => "",
68
+ :PAYS => "FR"
69
+ }
70
+
71
+ response = self.class.post(PROCESS_PATH, :body => data)
72
+
73
+ # Now we've got a response, let's parse it
74
+ self.transaction = Transaction.new.tap do |trans|
75
+ response.body.split('&').each do |parameter|
76
+ parameter.strip!
77
+ key = parameter.split('=').first
78
+ value = Iconv.conv('utf-8', 'ISO-8859-1', parameter.split('=').last)
79
+
80
+ begin
81
+ #Transforms an attribute FIELD-BLAH into fieldblah
82
+ trans.send("#{key.downcase.tr('-','')}=", value)
83
+ rescue
84
+ warn "The gem doesnt know about the resulting field #{key}"
85
+ warn "Fill-in a ticket if you think this is not expected"
86
+ return false
87
+ end
88
+ end
89
+ end
90
+ true
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,20 @@
1
+ module Paybox
2
+ class Transaction
3
+ attr_accessor :numtrans #'NUMTRANS' #Numéro de la transaction créée (int (10))
4
+ attr_accessor :numappel #'NUMAPPEL' # Numéro de la requête gérée sur Paybox (int (10))
5
+ attr_accessor :numquestion #'NUMQUESTION' # Identifiant unique et sequentiel (un timestamp sur 10 chiffres )
6
+ attr_accessor :site #'SITE' # Numéro d'adhérent fourni par la banque (int (7))
7
+ attr_accessor :rang #'RANG' # Numéro de rang fourni par la banque du commerçant (int (2))
8
+ attr_accessor :identifiant #'IDENTIFIANT' # Champ vide (int (10))
9
+ attr_accessor :autorisation #'AUTORISATION' # Numéro d'autorisation délivré par le centre d'autorisation de la banque du commerçant si le paiement est accepté (varchar (10))
10
+ attr_accessor :codereponse #'CODEREPONSE' # Code réponse concernant l'état de la réponse traité, opération acceptée ou refusée (varchar (10))
11
+ attr_accessor :refabonne #'REFABONNE' # Numéro d'abonné (user) contenu dans la trame question (varchar (250))
12
+ attr_accessor :porteur #'PORTEUR' # Numéro porteur partiel (n° carte crypté), Identique à la trame question (varchar (19))
13
+ attr_accessor :commentaire #'COMMENTAIRE' # Messages divers pour information (varchar(100))
14
+ attr_accessor :pays #'PAYS' # Code Pays du porteur de la carte (format ISO 3166)
15
+ attr_accessor :typecarte #'TYPECARTE' # Type de carte utilisé (varchar(10))
16
+ attr_accessor :sha1 #'SHA-1' # Empreinte SHA-1 de la carte utilisée
17
+ attr_accessor :status #'STATUS' # Etat de la transaction, retourné uniquement avec une question type 17 (=consultation) (varchar (16))
18
+ attr_accessor :remise #'REMISE' # Identifiant Paybox de la remise collectée (uniquement en consultation type 17), (int (9))
19
+ end
20
+ end
@@ -0,0 +1,3 @@
1
+ module Paybox
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,33 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "paybox/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "paybox"
7
+ s.version = Paybox::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Franck Verrot","Guillaume Barillot"]
10
+ s.email = ["franck@verrot.fr"]
11
+ s.homepage = "http://www.verrot.fr"
12
+ s.summary = %q{Payment Gateway to Paybox's services}
13
+ s.description = %q{Payment Gateway to Paybox's services}
14
+
15
+ s.rubyforge_project = "paybox"
16
+
17
+ s.add_dependency 'activesupport'
18
+ s.add_dependency 'activemodel'
19
+ s.add_dependency 'i18n'
20
+ s.add_dependency 'httparty'
21
+ s.add_dependency 'activevalidators'
22
+
23
+ s.add_development_dependency 'bundler'
24
+ s.add_development_dependency 'rspec'
25
+ s.add_development_dependency 'rspec-core'
26
+ s.add_development_dependency 'rspec-expectations'
27
+ s.add_development_dependency 'fakeweb'
28
+
29
+ s.files = `git ls-files`.split("\n")
30
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
31
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
32
+ s.require_paths = ["lib"]
33
+ end
@@ -0,0 +1,16 @@
1
+ NUMTRANS=
2
+ &NUMAPPEL=
3
+ &NUMQUESTION=
4
+ &SITE=
5
+ &RANG=
6
+ &IDENTIFIANT=
7
+ &AUTORISATION=
8
+ &CODEREPONSE=00000
9
+ &REFABONNE=
10
+ &PORTEUR=
11
+ &COMMENTAIRE=
12
+ &PAYS=
13
+ &TYPECARTE=
14
+ &SHA-1=
15
+ &STATUS=
16
+ &REMISE=
@@ -0,0 +1,38 @@
1
+ require File.join(File.dirname(__FILE__), 'spec_helper.rb')
2
+
3
+ TEST_DATA = {
4
+ :user_id => 1,
5
+ :card_nbr => '4111 1111 1111 1111',
6
+ :expire => '1012',
7
+ :cvv2 => '123'
8
+ }
9
+
10
+ describe "Paybox" do
11
+ before(:each) do
12
+ Paybox::Paybox.configure do |configuration|
13
+ configuration.site = '1999888'
14
+ configuration.rang = '99'
15
+ configuration.cle = '1999888I'
16
+ end
17
+ end
18
+
19
+ it "can be configured" do
20
+ Paybox::Paybox.site.should == '1999888'
21
+ Paybox::Paybox.rang.should == '99'
22
+ Paybox::Paybox.cle.should == '1999888I'
23
+ end
24
+
25
+ it "initializes itself and post the data to the GW" do
26
+ paybox = Paybox::Paybox.new(
27
+ :operation => '00057',
28
+ :amount => 1000,
29
+ :user_id => TEST_DATA[:user_id],
30
+ :card_nbr => TEST_DATA[:card_nbr],
31
+ :expire => TEST_DATA[:expire],
32
+ :cvv2 => TEST_DATA[:cvv2]
33
+ )
34
+
35
+ paybox.process.should be(true)
36
+ paybox.transaction.codereponse.should == '00000' #=> Cool, successful request
37
+ end
38
+ end
@@ -0,0 +1,14 @@
1
+ require 'fakeweb'
2
+ require 'paybox'
3
+
4
+ RSpec.configure do |config|
5
+ FakeWeb.allow_net_connect = false
6
+
7
+ config.before :all do
8
+ FakeWeb.register_uri(
9
+ :post,
10
+ 'https://preprod-ppps.paybox.com/PPPS.php',
11
+ :body => File.read(File.join(File.dirname(__FILE__), 'fixtures', 'PPPS.php'))
12
+ )
13
+ end
14
+ end
metadata ADDED
@@ -0,0 +1,213 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: paybox
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 1
9
+ version: 0.0.1
10
+ platform: ruby
11
+ authors:
12
+ - Franck Verrot
13
+ - Guillaume Barillot
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-12-12 00:00:00 +01:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: activesupport
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ segments:
30
+ - 0
31
+ version: "0"
32
+ type: :runtime
33
+ version_requirements: *id001
34
+ - !ruby/object:Gem::Dependency
35
+ name: activemodel
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ none: false
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ segments:
43
+ - 0
44
+ version: "0"
45
+ type: :runtime
46
+ version_requirements: *id002
47
+ - !ruby/object:Gem::Dependency
48
+ name: i18n
49
+ prerelease: false
50
+ requirement: &id003 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ segments:
56
+ - 0
57
+ version: "0"
58
+ type: :runtime
59
+ version_requirements: *id003
60
+ - !ruby/object:Gem::Dependency
61
+ name: httparty
62
+ prerelease: false
63
+ requirement: &id004 !ruby/object:Gem::Requirement
64
+ none: false
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ segments:
69
+ - 0
70
+ version: "0"
71
+ type: :runtime
72
+ version_requirements: *id004
73
+ - !ruby/object:Gem::Dependency
74
+ name: activevalidators
75
+ prerelease: false
76
+ requirement: &id005 !ruby/object:Gem::Requirement
77
+ none: false
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ segments:
82
+ - 0
83
+ version: "0"
84
+ type: :runtime
85
+ version_requirements: *id005
86
+ - !ruby/object:Gem::Dependency
87
+ name: bundler
88
+ prerelease: false
89
+ requirement: &id006 !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ segments:
95
+ - 0
96
+ version: "0"
97
+ type: :development
98
+ version_requirements: *id006
99
+ - !ruby/object:Gem::Dependency
100
+ name: rspec
101
+ prerelease: false
102
+ requirement: &id007 !ruby/object:Gem::Requirement
103
+ none: false
104
+ requirements:
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ segments:
108
+ - 0
109
+ version: "0"
110
+ type: :development
111
+ version_requirements: *id007
112
+ - !ruby/object:Gem::Dependency
113
+ name: rspec-core
114
+ prerelease: false
115
+ requirement: &id008 !ruby/object:Gem::Requirement
116
+ none: false
117
+ requirements:
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ segments:
121
+ - 0
122
+ version: "0"
123
+ type: :development
124
+ version_requirements: *id008
125
+ - !ruby/object:Gem::Dependency
126
+ name: rspec-expectations
127
+ prerelease: false
128
+ requirement: &id009 !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ">="
132
+ - !ruby/object:Gem::Version
133
+ segments:
134
+ - 0
135
+ version: "0"
136
+ type: :development
137
+ version_requirements: *id009
138
+ - !ruby/object:Gem::Dependency
139
+ name: fakeweb
140
+ prerelease: false
141
+ requirement: &id010 !ruby/object:Gem::Requirement
142
+ none: false
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ segments:
147
+ - 0
148
+ version: "0"
149
+ type: :development
150
+ version_requirements: *id010
151
+ description: Payment Gateway to Paybox's services
152
+ email:
153
+ - franck@verrot.fr
154
+ executables: []
155
+
156
+ extensions: []
157
+
158
+ extra_rdoc_files: []
159
+
160
+ files:
161
+ - .gitignore
162
+ - Gemfile
163
+ - Gemfile.lock
164
+ - LICENSE
165
+ - README.md
166
+ - Rakefile
167
+ - lib/paybox.rb
168
+ - lib/paybox/configuration.rb
169
+ - lib/paybox/gateway.rb
170
+ - lib/paybox/operation.rb
171
+ - lib/paybox/paybox.rb
172
+ - lib/paybox/transaction.rb
173
+ - lib/paybox/version.rb
174
+ - paybox.gemspec
175
+ - spec/fixtures/ppps.php
176
+ - spec/paybox_spec.rb
177
+ - spec/spec_helper.rb
178
+ has_rdoc: true
179
+ homepage: http://www.verrot.fr
180
+ licenses: []
181
+
182
+ post_install_message:
183
+ rdoc_options: []
184
+
185
+ require_paths:
186
+ - lib
187
+ required_ruby_version: !ruby/object:Gem::Requirement
188
+ none: false
189
+ requirements:
190
+ - - ">="
191
+ - !ruby/object:Gem::Version
192
+ segments:
193
+ - 0
194
+ version: "0"
195
+ required_rubygems_version: !ruby/object:Gem::Requirement
196
+ none: false
197
+ requirements:
198
+ - - ">="
199
+ - !ruby/object:Gem::Version
200
+ segments:
201
+ - 0
202
+ version: "0"
203
+ requirements: []
204
+
205
+ rubyforge_project: paybox
206
+ rubygems_version: 1.3.7
207
+ signing_key:
208
+ specification_version: 3
209
+ summary: Payment Gateway to Paybox's services
210
+ test_files:
211
+ - spec/fixtures/ppps.php
212
+ - spec/paybox_spec.rb
213
+ - spec/spec_helper.rb