ideal-mollie 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -1,4 +1,14 @@
1
1
  # Changelog
2
2
 
3
+ - **26 January 2012**: version 0.0.3
4
+ - Added `Bank`, `Order` and `OrderResult`. Should be easier then hashes.
5
+ - Added example to the README
6
+ - Now you can override the return_url within the controller
7
+
8
+ - **25 January 2012**: version 0.0.2
9
+ - Dependecies fixed
10
+ - Tests fixed
11
+ - Automation with Travis and Gemnasium
12
+
3
13
  - **25 January 2012**: version 0.0.1
4
14
  - Initial release
data/README.md CHANGED
@@ -34,20 +34,95 @@ git clone --depth 1 git://github.com/manuelvanrijn/ideal-mollie.git ideal-mollie
34
34
 
35
35
  Add the following config parameters to your environment config file
36
36
 
37
- ```
37
+ ```yaml
38
38
  config.ideal_mollie.partner_id = 123456
39
39
  config.ideal_mollie.report_url = "http://example.org/report"
40
40
  config.ideal_mollie.return_url = "http://example.org/return"
41
41
  config.ideal_mollie.test_mode = false
42
42
  ```
43
+ ## Rails Example
44
+
45
+ Below you will find a simple `TransactionController` and a view to display the bank selectbox. Note that this is just a very basic example.
46
+
47
+ ### Transaction Controller
48
+
49
+ ```ruby
50
+ class TransactionsController < ApplicationController
51
+ def index
52
+ @banks = IdealMollie.banks
53
+ end
54
+
55
+ def start
56
+ # redirect to banks if there is no bank_id given
57
+ redirect_to transaction_path if params[:bank_id].nil?
58
+ bank_id = params[:bank_id]
59
+
60
+ # 10,00 EUR
61
+ request = IdealMollie.new_order(1000, 'some payment description', bank_id)
62
+
63
+ transaction_id = request.transaction_id
64
+
65
+ # TODO: store the transaction_id like:
66
+ # For example:
67
+ # my_order = MyOrderObject.find(id)
68
+ # my_order.transaction_id = transaction_id
69
+ # my_order.save
70
+
71
+ redirect_to request.url
72
+ end
73
+
74
+ def check
75
+ transaction_id = params[:transaction_id]
76
+ response = IdealMollie.check_order(transaction_id)
77
+
78
+ if response.payed
79
+ # TODO: store the result information for the payed payment
80
+ # For example:
81
+ # my_order = MyOrder.find_by_transaction_id(transaction_id)
82
+ # my_order.payed = true
83
+ # my_order.payed_on = Time.now
84
+ # my_order.customer_name = response.customer_name
85
+ # my_order.customer_account = response.customer_account
86
+ # my_order.customer_city = response.customer_city
87
+ # my_order.save
88
+ else
89
+ # canceled or re-checking?
90
+ if my_order.payed.nil?
91
+ # TODO: store the result information for the canceled payment
92
+ # For example:
93
+ # my_order = MyOrder.find_by_transaction_id(transaction_id)
94
+ # my_order.payed = false
95
+ # my_order.save
96
+ end
97
+ end
98
+ render :nothing => true
99
+ end
100
+
101
+ def result
102
+ # TODO show the result
103
+ # For example:
104
+ # my_order = MyOrderObject.find(id)
105
+ #if @my_order.payed
106
+ render :text => "Thank you for your payment."
107
+ else
108
+ render :text => "Transaction has been cancelled or couldn't complete"
109
+ end
110
+ end
111
+ end
112
+ ```
43
113
 
44
- ### Example Controller
114
+ ### View (transactions/index.html.erb)
45
115
 
46
- TODO
116
+ ```erb
117
+ <%= form_tag transaction_start_path, :method => :post do %>
118
+ <%= select_tag "bank_id", options_from_collection_for_select(@banks, "id", "name") %>
119
+ <%= button_submit_tag "Checkout" %>
120
+ <% end %>
121
+ ```
47
122
 
48
123
  ## Changelog
49
124
 
50
- A details overview could be found in the [CHANGELOG](https://github.com/manuelvanrijn/ideal-mollie/blob/master/CHANGELOG.md).
125
+ A detailed overview of can be found in the [CHANGELOG](https://github.com/manuelvanrijn/ideal-mollie/blob/master/CHANGELOG.md).
51
126
 
52
127
  ## Copyright
53
128
 
data/ideal-mollie.gemspec CHANGED
@@ -15,6 +15,7 @@ Gem::Specification.new do |s|
15
15
 
16
16
  s.files = `git ls-files`.split("\n")
17
17
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
19
  s.require_paths = ["lib"]
19
20
 
20
21
  s.add_development_dependency "rspec"
data/lib/ideal-mollie.rb CHANGED
@@ -4,9 +4,12 @@ require "faraday_middleware"
4
4
  require "multi_xml"
5
5
 
6
6
  # Files
7
+ require "ideal-mollie/bank"
7
8
  require "ideal-mollie/config"
8
- require "ideal-mollie/ideal_exception"
9
9
  require "ideal-mollie/engine" if defined?(Rails) && Rails::VERSION::MAJOR == 3
10
+ require "ideal-mollie/ideal_exception"
11
+ require "ideal-mollie/order"
12
+ require "ideal-mollie/order_result"
10
13
 
11
14
  #
12
15
  # IdealMollie Module
@@ -19,115 +22,61 @@ module IdealMollie
19
22
  #
20
23
  # @example
21
24
  # IdealMollie.banks
22
- # # => [{:id=>"9999", :name=>"TBM Bank"}, ...]
23
25
  #
24
- # @return [Array] list of supported banks.
26
+ # @return [Array<IdealMollie::Bank>] list of supported +Bank+'s.
25
27
  def self.banks
26
28
  response = IdealMollie.request("banklist")
27
29
 
28
30
  banks = response["bank"]
29
31
  banks = [banks] unless banks.is_a?Array # to array if it isn't already
30
32
 
31
- banks.map do |bank|
32
- {:id => bank["bank_id"], :name => bank["bank_name"]}
33
- end
33
+ banks.inject([]) { |result, bank| result << IdealMollie::Bank.new(bank); result }
34
34
  end
35
35
 
36
36
  #
37
- # Create a new payment
37
+ # Create a new order.
38
38
  #
39
39
  # @visibility public
40
40
  #
41
41
  # @param [int] amount The amount of money to transfer (defined in cents).
42
42
  # @param [String] description The description of the payment on the bank transfer.
43
43
  # @param [String] bank_id The id of the bank selected from one of the supported banks.
44
+ # @param [String] return_url Optional override of the return url specified in the Config
44
45
  #
45
46
  # @example
47
+ # IdealMollie.new_order(1000, "Ordernumber #123: new gadget", "0031")
46
48
  #
47
- # IdealMollie.new_payment(1000, "Ordernumber #123: new gadget", "0031")
48
- # # => {
49
- # # :transaction_id=>"72457c865d4b800eb8b0f3ba928ff495",
50
- # # :amount=>1000,
51
- # # :currency=>"EUR",
52
- # # :URL=>"http://www.mollie.nl/partners/ideal-test-bank?order_nr=M738907M05885973&transaction_id=72457c865d4b800eb8b0f3ba928ff495&trxid=0073890705885973",
53
- # # :message=>"Your iDEAL-payment has successfully been setup. Your customer should visit the given URL to make the payment"
54
- # # }
55
- #
56
- # @return [Hash] the transaction object
57
- def self.new_payment(amount, description, bank_id)
58
- response = IdealMollie.request("fetch", {
59
- :partnerid => Config.partner_id,
60
- :reporturl => Config.report_url,
61
- :returnurl => Config.return_url,
62
- :description => description,
63
- :amount => amount,
64
- :bank_id => bank_id
65
- })
66
- order = response["order"]
49
+ # @example
50
+ # IdealMollie.new_order(1000, "Ordernumber #123: new gadget", "0031", "http://override.url/controller/return_action")
51
+ # @return [IdealMollie::Order] the +Order+.
52
+ def self.new_order(amount, description, bank_id, return_url=nil)
53
+ params = new_order_params(amount, description, bank_id, return_url)
54
+ response = IdealMollie.request("fetch", params)
67
55
 
68
- result = {
69
- :transaction_id => order["transaction_id"],
70
- :amount => order["amount"].to_i,
71
- :currency => order["currency"],
72
- :url => order["URL"],
73
- :message => order["message"]
74
- }
75
- result
56
+ IdealMollie::Order.new(response["order"])
76
57
  end
77
58
 
78
59
  #
79
- # Check the status of a transaction.
60
+ # Check the status of a order.
80
61
  #
81
62
  # @visibility public
82
63
  #
83
64
  # @param [String] transaction_id the transaction to verify.
84
65
  #
85
66
  # @example
86
- # IdealMollie.check_payment("4b99662febb42ce6f889d9c57f5cf3fa")
87
- # # => {
88
- # # :transaction_id => '4b99662febb42ce6f889d9c57f5cf3fa',
89
- # # :amount => 1465,
90
- # # :currency => "EUR",
91
- # # :payed => true,
92
- # # :consumer => {
93
- # # :name => "Hr J Janssen",
94
- # # :account => "P001234567",
95
- # # :city => "Amsterdam"
96
- # # },
97
- # # :message => "This iDEAL-order has successfuly been payed for,
98
- # # and this is the first time you check it.",
99
- # # :status => "Expired"
100
- # # }
67
+ # IdealMollie.check_order("4b99662febb42ce6f889d9c57f5cf3fa")
101
68
  #
102
69
  # @note Once a transaction is payed, only the next time you verify the
103
- # transaction will the value of 'payed' be 'true'.
104
- # Else it will be 'false'.
70
+ # transaction will the value of +payed+ be +true+.
71
+ # Else it will be +false+.
105
72
  #
106
- # @return [Hash] the status of the transaction.
107
- def self.check_payment(transaction_id)
73
+ # @return [IdealMollie::OrderResult] the +OrderResult+.
74
+ def self.check_order(transaction_id)
108
75
  response = IdealMollie.request("check", {
109
76
  :partnerid => Config.partner_id,
110
77
  :transaction_id => transaction_id
111
78
  })
112
- order = response["order"]
113
-
114
- result = {
115
- :transaction_id => order["transaction_id"],
116
- :amount => order["amount"].to_i,
117
- :currency => order["currency"],
118
- :payed => order["payed"] == "true" ? true : false,
119
- :message => order["message"],
120
- :status => order["status"]
121
- }
122
- if order.has_key?("consumer")
123
- consumer = order["consumer"]
124
- result.merge!(:consumer => {
125
- :name => consumer["consumerName"],
126
- :account => consumer["consumerAccount"],
127
- :city => consumer["consumerCity"]
128
- })
129
- end
130
- result
79
+ IdealMollie::OrderResult.new(response["order"])
131
80
  end
132
81
 
133
82
  class << self
@@ -142,7 +91,7 @@ module IdealMollie
142
91
  #
143
92
  # @raise [IdealMollie::IdealException] When a error is returned by Mollie
144
93
  #
145
- # @return [Hash] the returned XML as a Hash
94
+ # @return [Hash] the returned XML as a +Hash+
146
95
  def request(action, params={})
147
96
  params.merge!(:a => action)
148
97
  params.merge!(:testmode => Config.test_mode)
@@ -158,6 +107,28 @@ module IdealMollie
158
107
  response
159
108
  end
160
109
 
110
+ #
111
+ # Builds a +Hash+ with the parameters, that are needed for making a new order
112
+ # Makes sure the +return_url+ is set to the correct value
113
+ #
114
+ # @param [int] amount The amount of money to transfer (defined in cents).
115
+ # @param [String] description The description of the payment on the bank transfer.
116
+ # @param [String] bank_id The id of the bank selected from one of the supported banks.
117
+ # @param [String] return_url Optional override of the return url specified in the Config
118
+ #
119
+ # @return [Hash] the parameter +Hash+ for the new order.
120
+ def new_order_params(amount, description, bank_id, return_url=nil)
121
+ return_url = Config.return_url if return_url.nil?
122
+ {
123
+ :partnerid => Config.partner_id,
124
+ :reporturl => Config.report_url,
125
+ :returnurl => return_url,
126
+ :description => description,
127
+ :amount => amount,
128
+ :bank_id => bank_id
129
+ }
130
+ end
131
+
161
132
  private
162
133
 
163
134
  def connection
@@ -0,0 +1,27 @@
1
+ module IdealMollie
2
+ #
3
+ # Object representing a "Bank" object with attributes provided by Mollie
4
+ #
5
+ # @example
6
+ # Bank.new({
7
+ # :bank_id => "0031"
8
+ # :bank_name => "ABN AMRO"
9
+ # })
10
+ class Bank
11
+ # @return [String] The id of the bank provided by Mollie.
12
+ attr_accessor :id
13
+ # @return [String] The name of the bank.
14
+ attr_accessor :name
15
+
16
+ #
17
+ # Initializer to transform a +Hash+ into an Bank object
18
+ #
19
+ # @param [Hash] values
20
+ def initialize(values=nil)
21
+ return if values.nil?
22
+
23
+ @id = values["bank_id"].to_s
24
+ @name = values["bank_name"].to_s
25
+ end
26
+ end
27
+ end
@@ -3,9 +3,18 @@
3
3
  #
4
4
  module IdealMollie::Config
5
5
  class << self
6
- attr_accessor :partner_id, :report_url, :return_url, :test_mode
6
+ # @return [int] You Mollie partner id.
7
+ # @note You can find you partner id here: https://www.mollie.nl/beheer/betaaldiensten/documentatie/ideal/
8
+ attr_accessor :partner_id
9
+ # @return [String] The url Mollie uses to report the status of the payment
10
+ attr_accessor :report_url
11
+ # @return [String] The url Mollie sends you to when a transaction is finished
12
+ attr_accessor :return_url
13
+ # @return [Boolean] Test mode switch
14
+ attr_accessor :test_mode
7
15
 
8
16
  # Set's the default value's to nil and false
17
+ # @return [Hash] configuration options
9
18
  def init!
10
19
  @defaults = {
11
20
  :@partner_id => nil,
@@ -16,11 +25,13 @@ module IdealMollie::Config
16
25
  end
17
26
 
18
27
  # Resets the value's to there previous value (instance_variable)
28
+ # @return [Hash] configuration options
19
29
  def reset!
20
30
  @defaults.each { |key, value| instance_variable_set(key, value) }
21
31
  end
22
32
 
23
33
  # Set's the new value's as instance variables
34
+ # @return [Hash] configuration options
24
35
  def update!
25
36
  @defaults.each do |key, value|
26
37
  instance_variable_set(key, value) unless instance_variable_defined?(key)
@@ -1,6 +1,7 @@
1
1
  module IdealMollie
2
2
  #
3
- # Simpel extend on the Rails::Engine to add support for a new config section within the environment configs
3
+ # Simpel extend on the +Rails::Engine+ to add support for a new config section within
4
+ # the environment configs
4
5
  #
5
6
  # @example
6
7
  # # /config/environments/development.rb
@@ -3,10 +3,15 @@ module IdealMollie
3
3
  # Exception class specific for the IdealMollie error that might occur
4
4
  #
5
5
  class IdealException < Exception
6
- attr_accessor :errorcode, :message, :type
6
+ # @return [String] The errorcode
7
+ attr_accessor :errorcode
8
+ # @return [String] The error description
9
+ attr_accessor :message
10
+ # @return [String] The error type
11
+ attr_accessor :type
7
12
 
8
- # @param [String] errorcode The errorcode
9
- # @param [String] message The error description
13
+ # @param [String] errorcode The error code
14
+ # @param [String] message The error message
10
15
  # @param [String] type The error type
11
16
  def initialize(errorcode, message, type)
12
17
  self.errorcode = errorcode
@@ -0,0 +1,41 @@
1
+ module IdealMollie
2
+ #
3
+ # Object representing a "Order" object with attributes provided by Mollie
4
+ #
5
+ # @example
6
+ # Order.new({
7
+ # :transaction_id => "c9f93e5c2bd6c1e7c5bee5c5580c6f83"
8
+ # :amount => "1000",
9
+ # :currency => "EUR"
10
+ # :url => "https://www.abnamro.nl/nl/ideal/identification.do?randomizedstring=8433910909&trxid=30000217841224"
11
+ # :message => "Your iDEAL-payment has successfully been setup. Your customer should visit the given URL to make the payment"
12
+ # })
13
+ #
14
+ # @note The amount is always specified in *cents*. So 10,00 EUR would be 1000.
15
+ class Order
16
+ # @return [String] A unique id generated by Mollie.
17
+ attr_accessor :transaction_id
18
+ # @return [int] The amount of money for the transaction.
19
+ attr_accessor :amount
20
+ # @return [String] The currency for the transaction.
21
+ attr_accessor :currency
22
+ # @return [String] The url to the bank, to complete payment.
23
+ attr_accessor :url
24
+ # @return [String] A message with additional information about the Order.
25
+ attr_accessor :message
26
+
27
+ #
28
+ # Initializer to transform a +Hash+ into an Order object
29
+ #
30
+ # @param [Hash] values
31
+ def initialize(values=nil)
32
+ return if values.nil?
33
+
34
+ @transaction_id = values["transaction_id"].to_s if values.has_key?("transaction_id")
35
+ @amount = values["amount"].to_i if values.has_key?("amount")
36
+ @currency = values["currency"].to_s if values.has_key?("currency")
37
+ @url = values["URL"].to_s if values.has_key?("URL")
38
+ @message = values["message"].to_s if values.has_key?("message")
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,52 @@
1
+ module IdealMollie
2
+ #
3
+ # Object representing a "OrderResult" object with attributes provided by Mollie
4
+ #
5
+ # @example
6
+ # Order.new({
7
+ # :transaction_id => "4b99662febb42ce6f889d9c57f5cf3fa",
8
+ # :amount => 1465,
9
+ # :currency => "EUR",
10
+ # :payed => true,
11
+ # :consumer => {
12
+ # :consumerName => "Hr J Janssen",
13
+ # :consumerAccount => "P001234567",
14
+ # :consumerCity => "Amsterdam"
15
+ # },
16
+ # :message => "This iDEAL-order has successfuly been payed for,
17
+ # and this is the first time you check it.",
18
+ # :status => "Expired"
19
+ # })
20
+ class OrderResult < Order
21
+ # @return [Boolean] Order was payed.
22
+ attr_accessor :payed
23
+ # @return [String] The name of the customer.
24
+ attr_accessor :customer_name
25
+ # @return [String] The bankaccount number of the customer.
26
+ attr_accessor :customer_account
27
+ # @return [String] The city of the customer.
28
+ attr_accessor :customer_city
29
+ # @return [String] Status of the Order.
30
+ attr_accessor :status
31
+
32
+ #
33
+ # Initializer to transform a +Hash+ into an OrderResult object
34
+ #
35
+ # @param [Hash] values
36
+ def initialize(values=nil)
37
+ return if values.nil?
38
+
39
+ super(values)
40
+
41
+ @payed = values["payed"] == "true" ? true : false if values.has_key?("payed")
42
+ @status = values["status"].to_s if values.has_key?("status")
43
+
44
+ if values.has_key?("consumer")
45
+ consumer = values["consumer"]
46
+ @customer_name = consumer["consumerName"].to_s if consumer.has_key?("consumerName")
47
+ @customer_account = consumer["consumerAccount"].to_s if consumer.has_key?("consumerAccount")
48
+ @customer_city = consumer["consumerCity"].to_s if consumer.has_key?("consumerCity")
49
+ end
50
+ end
51
+ end
52
+ end
@@ -1,4 +1,4 @@
1
1
  module IdealMollie
2
2
  # Version number of IdealMollie
3
- VERSION = "0.0.2"
3
+ VERSION = "0.0.3"
4
4
  end
data/spec/config_spec.rb CHANGED
@@ -8,6 +8,7 @@ describe IdealMollie::Config do
8
8
  @config.report_url = "http://example.org/report"
9
9
  @config.return_url = "http://example.org/return"
10
10
  end
11
+
11
12
  describe "#reset!" do
12
13
  it "should reset the values" do
13
14
  @config.reset!
@@ -17,6 +18,7 @@ describe IdealMollie::Config do
17
18
  @config.return_url.should be_nil
18
19
  end
19
20
  end
21
+
20
22
  describe "#update!" do
21
23
  it "should update" do
22
24
  @config.test_mode = false
@@ -1,15 +1,16 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe IdealMollie::IdealException do
4
- context "#new_payment" do
4
+ context "#new_order" do
5
5
  it "should throw exception when no config is set" do
6
- VCR.use_cassette("new_payment") do
6
+ VCR.use_cassette("new_order") do
7
7
  config = IdealMollie::Config
8
8
  config.reset!
9
- expect { IdealMollie.new_payment(1234, "exception test", "0031") }.
9
+ expect { IdealMollie.new_order(1234, "exception test", "0031") }.
10
10
  to raise_error(IdealMollie::IdealException, /A fetch was issued without specification of 'partnerid'./)
11
11
  end
12
12
  end
13
+
13
14
  it "should throw an exception when a unknown account is specified" do
14
15
  config = IdealMollie::Config
15
16
  config.test_mode = false
@@ -17,13 +18,14 @@ describe IdealMollie::IdealException do
17
18
  config.report_url = "http://example.org/report"
18
19
  config.return_url = "http://example.org/return"
19
20
 
20
- VCR.use_cassette("new_payment") do
21
- expect { IdealMollie.new_payment(1234, "exception test", "0031") }.
21
+ VCR.use_cassette("new_order") do
22
+ expect { IdealMollie.new_order(1234, "exception test", "0031") }.
22
23
  to raise_error(IdealMollie::IdealException, /This account does not exist or is suspended./)
23
24
  end
24
25
  end
25
26
  end
26
- context "#check_payment" do
27
+
28
+ context "#check_order" do
27
29
  it "should raise an exception when a invalid transaction_id is asked" do
28
30
  config = IdealMollie::Config
29
31
  config.test_mode = false
@@ -31,8 +33,8 @@ describe IdealMollie::IdealException do
31
33
  config.report_url = "http://example.org/report"
32
34
  config.return_url = "http://example.org/return"
33
35
 
34
- VCR.use_cassette("check_payment") do
35
- expect { IdealMollie.check_payment("482d599bbcc7795727650330ad65fe9b") }.
36
+ VCR.use_cassette("check_order") do
37
+ expect { IdealMollie.check_order("482d599bbcc7795727650330ad65fe9b") }.
36
38
  to raise_error(IdealMollie::IdealException, /This is an unknown order./)
37
39
  end
38
40
  end
@@ -17,49 +17,57 @@ describe IdealMollie do
17
17
  banks.count > 0
18
18
 
19
19
  bank = banks.first
20
- bank[:id].should eq "0031"
21
- bank[:name].should eq "ABN AMRO"
20
+ bank.id.should eq "0031"
21
+ bank.name.should eq "ABN AMRO"
22
22
  end
23
23
  end
24
24
  end
25
25
 
26
- context "#new_payment" do
27
- it "should return a transaction hash with the correct values" do
28
- VCR.use_cassette("new_payment") do
29
- payment = IdealMollie.new_payment(1000, "test", "0031")
30
- payment[:transaction_id].should eq "c9f93e5c2bd6c1e7c5bee5c5580c6f83"
31
- payment[:amount].should eq 1000
32
- payment[:currency].should eq "EUR"
33
- payment[:url].should eq "https://www.abnamro.nl/nl/ideal/identification.do?randomizedstring=8433910909&trxid=30000217841224"
34
- payment[:message].should eq "Your iDEAL-payment has successfully been setup. Your customer should visit the given URL to make the payment"
26
+ context "#new_order" do
27
+ it "should return a Order with the correct values" do
28
+ VCR.use_cassette("new_order") do
29
+ order = IdealMollie.new_order(1000, "test", "0031")
30
+ order.transaction_id.should eq "c9f93e5c2bd6c1e7c5bee5c5580c6f83"
31
+ order.amount.should eq 1000
32
+ order.currency.should eq "EUR"
33
+ order.url.should eq "https://www.abnamro.nl/nl/ideal/identification.do?randomizedstring=8433910909&trxid=30000217841224"
34
+ order.message.should eq "Your iDEAL-payment has successfully been setup. Your customer should visit the given URL to make the payment"
35
35
  end
36
36
  end
37
+ it "should override the return url when specified" do
38
+ params = IdealMollie.new_order_params(1200, "test", "0031")
39
+ params[:returnurl].should eq "http://example.org/return"
40
+
41
+ params = IdealMollie.new_order_params(1200, "test", "0031", "http://another.example.org/return")
42
+ params[:returnurl].should eq "http://another.example.org/return"
43
+ end
37
44
  end
38
45
 
39
- context "#check_payment" do
40
- it "should return a payment response with the correct values" do
41
- VCR.use_cassette("check_payment") do
42
- payment = IdealMollie.check_payment("c9f93e5c2bd6c1e7c5bee5c5580c6f83")
43
- payment[:transaction_id].should eq "c9f93e5c2bd6c1e7c5bee5c5580c6f83"
44
- payment[:amount].should eq 1000
45
- payment[:currency].should eq "EUR"
46
- payment[:payed].should eq false
47
- payment[:message].should eq "This iDEAL-order wasn't payed for, or was already checked by you. (We give payed=true only once, for your protection)"
48
- payment[:status].should eq "CheckedBefore"
46
+ context "#check_order" do
47
+ it "should return a OrderResult with the correct values" do
48
+ VCR.use_cassette("check_order") do
49
+ order_result = IdealMollie.check_order("c9f93e5c2bd6c1e7c5bee5c5580c6f83")
50
+ order_result.transaction_id.should eq "c9f93e5c2bd6c1e7c5bee5c5580c6f83"
51
+ order_result.amount.should eq 1000
52
+ order_result.currency.should eq "EUR"
53
+ order_result.payed.should eq false
54
+ order_result.message.should eq "This iDEAL-order wasn't payed for, or was already checked by you. (We give payed=true only once, for your protection)"
55
+ order_result.status.should eq "CheckedBefore"
49
56
  end
50
57
  end
51
- it "should mark the transaction as payed and contain the consumer information when called by mollie" do
52
- VCR.use_cassette("check_payment") do
53
- payment = IdealMollie.check_payment("482d599bbcc7795727650330ad65fe9b")
54
- payment[:transaction_id].should eq "482d599bbcc7795727650330ad65fe9b"
55
- payment[:amount].should eq 1000
56
- payment[:currency].should eq "EUR"
57
- payment[:payed].should eq true
58
- payment[:message].should eq "This iDEAL-order has successfuly been payed for, and this is the first time you check it."
59
- consumer = payment[:consumer]
60
- consumer[:name].should eq "Hr J Janssen"
61
- consumer[:account].should eq "P001234567"
62
- consumer[:city].should eq "Amsterdam"
58
+
59
+ it "should mark the OrderResult as payed and contain the customer information when called by mollie" do
60
+ VCR.use_cassette("check_order") do
61
+ order_result = IdealMollie.check_order("482d599bbcc7795727650330ad65fe9b")
62
+ order_result.transaction_id.should eq "482d599bbcc7795727650330ad65fe9b"
63
+ order_result.amount.should eq 1000
64
+ order_result.currency.should eq "EUR"
65
+ order_result.payed.should eq true
66
+ order_result.message.should eq "This iDEAL-order has successfuly been payed for, and this is the first time you check it."
67
+
68
+ order_result.customer_name.should eq "Hr J Janssen"
69
+ order_result.customer_account.should eq "P001234567"
70
+ order_result.customer_city.should eq "Amsterdam"
63
71
  end
64
72
  end
65
73
  end
data/spec/spec_helper.rb CHANGED
@@ -11,5 +11,4 @@ VCR.config do |c|
11
11
  c.stub_with :fakeweb
12
12
  end
13
13
 
14
- RSpec.configure do |config|
15
- end
14
+ RSpec.configure
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ideal-mollie
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-25 00:00:00.000000000 Z
12
+ date: 2012-01-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &14051060 !ruby/object:Gem::Requirement
16
+ requirement: &12831420 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *14051060
24
+ version_requirements: *12831420
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: vcr
27
- requirement: &14050300 !ruby/object:Gem::Requirement
27
+ requirement: &12830360 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *14050300
35
+ version_requirements: *12830360
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: fakeweb
38
- requirement: &14049580 !ruby/object:Gem::Requirement
38
+ requirement: &12829240 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *14049580
46
+ version_requirements: *12829240
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: yard
49
- requirement: &14048800 !ruby/object:Gem::Requirement
49
+ requirement: &12828120 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *14048800
57
+ version_requirements: *12828120
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: redcarpet
60
- requirement: &14047740 !ruby/object:Gem::Requirement
60
+ requirement: &12826860 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *14047740
68
+ version_requirements: *12826860
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: simplecov
71
- requirement: &14063180 !ruby/object:Gem::Requirement
71
+ requirement: &12825560 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *14063180
79
+ version_requirements: *12825560
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: rake
82
- requirement: &14061480 !ruby/object:Gem::Requirement
82
+ requirement: &12824660 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ~>
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: 0.9.0
88
88
  type: :runtime
89
89
  prerelease: false
90
- version_requirements: *14061480
90
+ version_requirements: *12824660
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: faraday
93
- requirement: &14060640 !ruby/object:Gem::Requirement
93
+ requirement: &12837640 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ~>
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: 0.7.6
99
99
  type: :runtime
100
100
  prerelease: false
101
- version_requirements: *14060640
101
+ version_requirements: *12837640
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: faraday_middleware
104
- requirement: &14059880 !ruby/object:Gem::Requirement
104
+ requirement: &12836900 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ~>
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: 0.8.1
110
110
  type: :runtime
111
111
  prerelease: false
112
- version_requirements: *14059880
112
+ version_requirements: *12836900
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: multi_xml
115
- requirement: &14058840 !ruby/object:Gem::Requirement
115
+ requirement: &12834660 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ~>
@@ -120,10 +120,10 @@ dependencies:
120
120
  version: 0.4.1
121
121
  type: :runtime
122
122
  prerelease: false
123
- version_requirements: *14058840
123
+ version_requirements: *12834660
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: nokogiri
126
- requirement: &14056700 !ruby/object:Gem::Requirement
126
+ requirement: &12848640 !ruby/object:Gem::Requirement
127
127
  none: false
128
128
  requirements:
129
129
  - - ~>
@@ -131,7 +131,7 @@ dependencies:
131
131
  version: 1.5.0
132
132
  type: :runtime
133
133
  prerelease: false
134
- version_requirements: *14056700
134
+ version_requirements: *12848640
135
135
  description: A simple Ruby implementation for handeling iDeal transactions with the
136
136
  Mollie API
137
137
  email:
@@ -151,17 +151,20 @@ files:
151
151
  - Rakefile
152
152
  - ideal-mollie.gemspec
153
153
  - lib/ideal-mollie.rb
154
+ - lib/ideal-mollie/bank.rb
154
155
  - lib/ideal-mollie/config.rb
155
156
  - lib/ideal-mollie/engine.rb
156
157
  - lib/ideal-mollie/ideal_exception.rb
158
+ - lib/ideal-mollie/order.rb
159
+ - lib/ideal-mollie/order_result.rb
157
160
  - lib/ideal-mollie/version.rb
158
161
  - spec/config_spec.rb
159
162
  - spec/ideal_exception_spec.rb
160
163
  - spec/ideal_mollie_spec.rb
161
164
  - spec/spec_helper.rb
162
165
  - spec/vcr_cassettes/banks.yml
163
- - spec/vcr_cassettes/check_payment.yml
164
- - spec/vcr_cassettes/new_payment.yml
166
+ - spec/vcr_cassettes/check_order.yml
167
+ - spec/vcr_cassettes/new_order.yml
165
168
  - spec/vcr_cassettes/request_payment.yml
166
169
  homepage: https://github.com/manuelvanrijn/ideal-mollie
167
170
  licenses: []
@@ -177,7 +180,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
177
180
  version: '0'
178
181
  segments:
179
182
  - 0
180
- hash: 4563146586609171238
183
+ hash: -3816386497103677641
181
184
  required_rubygems_version: !ruby/object:Gem::Requirement
182
185
  none: false
183
186
  requirements:
@@ -186,7 +189,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
186
189
  version: '0'
187
190
  segments:
188
191
  - 0
189
- hash: 4563146586609171238
192
+ hash: -3816386497103677641
190
193
  requirements: []
191
194
  rubyforge_project: ideal-mollie
192
195
  rubygems_version: 1.8.11