paypal-express 0.3.1 → 0.4.0.alpha

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.1
1
+ 0.4.0.alpha
data/lib/paypal.rb CHANGED
@@ -6,7 +6,7 @@ require 'restclient_with_cert'
6
6
 
7
7
  module Paypal
8
8
 
9
- API_VERSION = '72.0'
9
+ API_VERSION = '78.0'
10
10
  ENDPOINT = {
11
11
  :production => 'https://www.paypal.com/cgi-bin/webscr',
12
12
  :sandbox => 'https://www.sandbox.paypal.com/cgi-bin/webscr'
@@ -73,6 +73,7 @@ require 'paypal/payment/response'
73
73
  require 'paypal/payment/response/info'
74
74
  require 'paypal/payment/response/item'
75
75
  require 'paypal/payment/response/payer'
76
+ require 'paypal/payment/response/reference'
76
77
  require 'paypal/payment/response/refund'
77
78
  require 'paypal/payment/response/ship_to'
78
79
  require 'paypal/payment/recurring'
@@ -18,7 +18,13 @@ module Paypal
18
18
  :BUILD => :build,
19
19
  :CORRELATIONID => :colleration_id,
20
20
  :TIMESTAMP => :timestamp,
21
- :VERSION => :version
21
+ :VERSION => :version,
22
+ :ORDERTIME => :order_time,
23
+ :PENDINGREASON => :pending_reason,
24
+ :PAYMENTSTATUS => :payment_status,
25
+ :PAYMENTTYPE => :payment_type,
26
+ :REASONCODE => :reason_code,
27
+ :TRANSACTIONTYPE => :transaction_type
22
28
  }
23
29
  attr_accessor *@@attribute_mapping.values
24
30
  attr_accessor :raw, :details
@@ -72,4 +78,4 @@ module Paypal
72
78
  end
73
79
  end
74
80
  end
75
- end
81
+ end
@@ -2,6 +2,8 @@ module Paypal
2
2
  module Express
3
3
  class Request < NVP::Request
4
4
 
5
+ # Common
6
+
5
7
  def setup(payment_requests, return_url, cancel_url, options = {})
6
8
  params = {
7
9
  :RETURNURL => return_url,
@@ -35,6 +37,9 @@ module Paypal
35
37
  Response.new response
36
38
  end
37
39
 
40
+
41
+ # Recurring Payment Specific
42
+
38
43
  def subscribe!(token, recurring_profile)
39
44
  params = {
40
45
  :TOKEN => token
@@ -76,6 +81,36 @@ module Paypal
76
81
  renew!(profile_id, :Reactivate, options)
77
82
  end
78
83
 
84
+
85
+ # Reference Transaction Specific
86
+
87
+ def agree!(token, options = {})
88
+ params = {
89
+ :TOKEN => token
90
+ }
91
+ if options[:max_amount]
92
+ params[:MAXAMT] = Util.formatted_amount options[:max_amount]
93
+ end
94
+ response = self.request :CreateBillingAgreement, params
95
+ Response.new response
96
+ end
97
+
98
+ def charge!(reference_id, amount, options = {})
99
+ params = {
100
+ :REFERENCEID => reference_id,
101
+ :AMT => Util.formatted_amount(amount),
102
+ :PAYMENTACTION => options[:payment_action] || :Sale
103
+ }
104
+ if options[:currency_code]
105
+ params[:CURRENCYCODE] = options[:currency_code]
106
+ end
107
+ response = self.request :DoReferenceTransaction, params
108
+ Response.new response
109
+ end
110
+
111
+
112
+ # Refund Specific
113
+
79
114
  def refund!(transaction_id, options = {})
80
115
  params = {
81
116
  :TRANSACTIONID => transaction_id,
@@ -5,7 +5,6 @@ module Paypal
5
5
  @@attribute_mapping = {
6
6
  :ACK => :ack,
7
7
  :ADDRESSSTATUS => :address_status,
8
- :BILLINGAGREEMENTACCEPTEDSTATUS => :billing_agreement_accepted_status,
9
8
  :BUILD => :build,
10
9
  :CHECKOUTSTATUS => :checkout_status,
11
10
  :CORRELATIONID => :colleration_id,
@@ -15,12 +14,12 @@ module Paypal
15
14
  :NOTIFYURL => :notify_url,
16
15
  :TIMESTAMP => :timestamp,
17
16
  :TOKEN => :token,
18
- :VERSION => :version,
19
- :BILLINGAGREEMENTID => :billing_agreement_id
17
+ :VERSION => :version
20
18
  }
21
19
  attr_accessor *@@attribute_mapping.values
22
20
  attr_accessor :shipping_options_is_default, :success_page_redirect_requested, :insurance_option_selected
23
- attr_accessor :amount, :description, :ship_to, :payer, :recurring, :payment_responses, :payment_info, :items, :refund
21
+ attr_accessor :amount, :description, :ship_to, :payer, :recurring, :billing_agreement, :refund
22
+ attr_accessor :payment_responses, :payment_info, :items
24
23
 
25
24
  def initialize(attributes = {})
26
25
  attrs = attributes.dup
@@ -37,7 +36,8 @@ module Paypal
37
36
  :insurance => attrs.delete(:INSURANCEAMT),
38
37
  :ship_disc => attrs.delete(:SHIPDISCAMT),
39
38
  :shipping => attrs.delete(:SHIPPINGAMT),
40
- :tax => attrs.delete(:TAXAMT)
39
+ :tax => attrs.delete(:TAXAMT),
40
+ :fee => attrs.delete(:FEEAMT)
41
41
  )
42
42
  @ship_to = Payment::Response::ShipTo.new(
43
43
  :owner => attrs.delete(:SHIPADDRESSOWNER),
@@ -60,17 +60,6 @@ module Paypal
60
60
  :email => attrs.delete(:EMAIL)
61
61
  )
62
62
  end
63
- if attrs[:REFUNDTRANSACTIONID]
64
- @refund = Payment::Response::Refund.new(
65
- :transaction_id => attrs.delete(:REFUNDTRANSACTIONID),
66
- :amount => {
67
- :total => attrs.delete(:TOTALREFUNDEDAMOUNT),
68
- :fee => attrs.delete(:FEEREFUNDAMT),
69
- :gross => attrs.delete(:GROSSREFUNDAMT),
70
- :net => attrs.delete(:NETREFUNDAMT)
71
- }
72
- )
73
- end
74
63
  if attrs[:PROFILEID]
75
64
  @recurring = Payment::Recurring.new(
76
65
  :identifier => attrs.delete(:PROFILEID),
@@ -120,6 +109,27 @@ module Paypal
120
109
  )
121
110
  end
122
111
  end
112
+ if attrs[:BILLINGAGREEMENTID]
113
+ @billing_agreement = Payment::Response::Reference.new(
114
+ :identifier => attrs.delete(:BILLINGAGREEMENTID)
115
+ )
116
+ billing_agreement_info = Payment::Response::Info.attribute_mapping.keys.inject({}) do |billing_agreement_info, key|
117
+ billing_agreement_info.merge! key => attrs.delete(key)
118
+ end
119
+ @billing_agreement.info = Payment::Response::Info.new billing_agreement_info
120
+ @billing_agreement.info.amount = @amount
121
+ end
122
+ if attrs[:REFUNDTRANSACTIONID]
123
+ @refund = Payment::Response::Refund.new(
124
+ :transaction_id => attrs.delete(:REFUNDTRANSACTIONID),
125
+ :amount => {
126
+ :total => attrs.delete(:TOTALREFUNDEDAMOUNT),
127
+ :fee => attrs.delete(:FEEREFUNDAMT),
128
+ :gross => attrs.delete(:GROSSREFUNDAMT),
129
+ :net => attrs.delete(:NETREFUNDAMT)
130
+ }
131
+ )
132
+ end
123
133
 
124
134
  # payment_responses
125
135
  payment_responses = []
@@ -1,7 +1,7 @@
1
1
  module Paypal
2
2
  module Payment
3
3
  class Request < Base
4
- attr_optional :action, :currency_code, :description, :notify_url, :billing_type, :billing_agreement_description, :reference_transactions_billing_type, :billing_agreement_id
4
+ attr_optional :action, :currency_code, :description, :notify_url, :billing_type, :billing_agreement_description, :billing_agreement_id
5
5
  attr_accessor :amount, :items
6
6
 
7
7
  def initialize(attributes = {})
@@ -34,8 +34,7 @@ module Paypal
34
34
  # recurring payment doesn't support dynamic notify_url.
35
35
  :"PAYMENTREQUEST_#{index}_NOTIFYURL" => self.notify_url,
36
36
  :"L_BILLINGTYPE#{index}" => self.billing_type,
37
- :"L_BILLINGAGREEMENTDESCRIPTION#{index}" => self.billing_agreement_description,
38
- :"BILLINGTYPE" => self.reference_transactions_billing_type
37
+ :"L_BILLINGAGREEMENTDESCRIPTION#{index}" => self.billing_agreement_description
39
38
  }.delete_if do |k, v|
40
39
  v.blank?
41
40
  end
@@ -0,0 +1,8 @@
1
+ module Paypal
2
+ module Payment
3
+ class Response::Reference < Base
4
+ attr_required :identifier
5
+ attr_accessor :info
6
+ end
7
+ end
8
+ end
@@ -0,0 +1 @@
1
+ BILLINGAGREEMENTID=B%2d45776062X95244343&TIMESTAMP=2011%2d08%2d06T07%3a53%3a50Z&CORRELATIONID=9a16fde4456e1&ACK=Success&VERSION=78%2e0&BUILD=2020243
@@ -1 +1 @@
1
- TOKEN=EC-9E2743126S4330617&SUCCESSPAGEREDIRECTREQUESTED=false&TIMESTAMP=2011-02-08T03:23:55Z&CORRELATIONID=15b93874c358c&ACK=Success&VERSION=66.0&BUILD=1721431&INSURANCEOPTIONSELECTED=false&SHIPPINGOPTIONISDEFAULT=false&PAYMENTINFO_0_TRANSACTIONID=8NC65222871997739&PAYMENTINFO_0_TRANSACTIONTYPE=expresscheckout&PAYMENTINFO_0_PAYMENTTYPE=instant&PAYMENTINFO_0_ORDERTIME=2011-02-08T03:23:54Z&PAYMENTINFO_0_AMT=14.00&PAYMENTINFO_0_FEEAMT=0.85&PAYMENTINFO_0_TAXAMT=0.00&PAYMENTINFO_0_CURRENCYCODE=USD&PAYMENTINFO_0_PAYMENTSTATUS=Completed&PAYMENTINFO_0_PENDINGREASON=None&PAYMENTINFO_0_REASONCODE=None&PAYMENTINFO_0_PROTECTIONELIGIBILITY=Ineligible&PAYMENTINFO_0_PROTECTIONELIGIBILITYTYPE=None&PAYMENTINFO_0_ERRORCODE=0&BILLINGAGREEMENTID=B-1XR87946TC504770W&PAYMENTINFO_0_ACK=Success
1
+ TOKEN=EC-9E2743126S4330617&SUCCESSPAGEREDIRECTREQUESTED=false&TIMESTAMP=2011-02-08T03:23:55Z&CORRELATIONID=15b93874c358c&ACK=Success&VERSION=66.0&BUILD=1721431&INSURANCEOPTIONSELECTED=false&SHIPPINGOPTIONISDEFAULT=false&PAYMENTINFO_0_TRANSACTIONID=8NC65222871997739&PAYMENTINFO_0_TRANSACTIONTYPE=expresscheckout&PAYMENTINFO_0_PAYMENTTYPE=instant&PAYMENTINFO_0_ORDERTIME=2011-02-08T03:23:54Z&PAYMENTINFO_0_AMT=14.00&PAYMENTINFO_0_FEEAMT=0.85&PAYMENTINFO_0_TAXAMT=0.00&PAYMENTINFO_0_CURRENCYCODE=USD&PAYMENTINFO_0_PAYMENTSTATUS=Completed&PAYMENTINFO_0_PENDINGREASON=None&PAYMENTINFO_0_REASONCODE=None&PAYMENTINFO_0_PROTECTIONELIGIBILITY=Ineligible&PAYMENTINFO_0_PROTECTIONELIGIBILITYTYPE=None&PAYMENTINFO_0_ERRORCODE=0&PAYMENTINFO_0_ACK=Success
@@ -0,0 +1 @@
1
+ TOKEN=EC-9E2743126S4330617&SUCCESSPAGEREDIRECTREQUESTED=false&TIMESTAMP=2011-02-08T03:23:55Z&CORRELATIONID=15b93874c358c&ACK=Success&VERSION=66.0&BUILD=1721431&INSURANCEOPTIONSELECTED=false&SHIPPINGOPTIONISDEFAULT=false&PAYMENTINFO_0_TRANSACTIONID=8NC65222871997739&PAYMENTINFO_0_TRANSACTIONTYPE=expresscheckout&PAYMENTINFO_0_PAYMENTTYPE=instant&PAYMENTINFO_0_ORDERTIME=2011-02-08T03:23:54Z&PAYMENTINFO_0_AMT=14.00&PAYMENTINFO_0_FEEAMT=0.85&PAYMENTINFO_0_TAXAMT=0.00&PAYMENTINFO_0_CURRENCYCODE=USD&PAYMENTINFO_0_PAYMENTSTATUS=Completed&PAYMENTINFO_0_PENDINGREASON=None&PAYMENTINFO_0_REASONCODE=None&PAYMENTINFO_0_PROTECTIONELIGIBILITY=Ineligible&PAYMENTINFO_0_PROTECTIONELIGIBILITYTYPE=None&PAYMENTINFO_0_ERRORCODE=0&BILLINGAGREEMENTID=B-1XR87946TC504770W&PAYMENTINFO_0_ACK=Success
@@ -0,0 +1 @@
1
+ TIMESTAMP=2011%2d07%2d19T08%3a59%3a52Z&CORRELATIONID=ed8096a3c3d7d&ACK=Failure&VERSION=72%2e0&BUILD=1982348&L_ERRORCODE0=11451&L_SHORTMESSAGE0=Billing%20Agreement%20Id%20or%20transaction%20Id%20is%20not%20valid&L_LONGMESSAGE0=Billing%20Agreement%20Id%20or%20transaction%20Id%20is%20not%20valid&L_SEVERITYCODE0=Error&TRANSACTIONTYPE=None&PAYMENTTYPE=None&ORDERTIME=1970%2d01%2d01T00%3a00%3a00Z&PAYMENTSTATUS=None&PENDINGREASON=None&REASONCODE=None
@@ -0,0 +1 @@
1
+ BILLINGAGREEMENTID=B%2d7HU5U5U1ULU14U49E&TIMESTAMP=2011%2d07%2d19T08%3a30%3a08Z&CORRELATIONID=12ca85fb3c9d2&ACK=Success&VERSION=72%2e0&BUILD=1982348&TRANSACTIONID=3IV51111LY1211907&TRANSACTIONTYPE=merchtpmt&PAYMENTTYPE=instant&ORDERTIME=2011%2d07%2d19T08%3a30%3a06Z&AMT=192&FEEAMT=47&TAXAMT=0&CURRENCYCODE=JPY&PAYMENTSTATUS=Completed&PENDINGREASON=None&REASONCODE=None&PROTECTIONELIGIBILITY=Ineligible&PROTECTIONELIGIBILITYTYPE=None
@@ -34,7 +34,7 @@ describe Paypal::Express::Request do
34
34
  end
35
35
 
36
36
  let :recurring_payment_request do
37
- Paypal::Payment::Request.new(
37
+ Paypal::Payment::Request.new(
38
38
  :billing_type => :RecurringPayments,
39
39
  :billing_agreement_description => 'Recurring Payment Request'
40
40
  )
@@ -52,6 +52,13 @@ describe Paypal::Express::Request do
52
52
  )
53
53
  end
54
54
 
55
+ let :reference_transaction_request do
56
+ Paypal::Payment::Request.new(
57
+ :billing_type => :MerchantInitiatedBilling,
58
+ :billing_agreement_description => 'Billing Agreement Request'
59
+ )
60
+ end
61
+
55
62
  describe '.new' do
56
63
  context 'when any required parameters are missing' do
57
64
  it 'should raise AttrRequired::AttrMissing' do
@@ -79,7 +86,7 @@ describe Paypal::Express::Request do
79
86
  it 'should return Paypal::Express::Response' do
80
87
  fake_response 'SetExpressCheckout/success'
81
88
  response = instance.setup recurring_payment_request, return_url, cancel_url
82
- response.should be_instance_of(Paypal::Express::Response)
89
+ response.should be_instance_of Paypal::Express::Response
83
90
  end
84
91
 
85
92
  it 'should support no_shipping option' do
@@ -133,13 +140,31 @@ describe Paypal::Express::Request do
133
140
  }
134
141
  end
135
142
  end
143
+
144
+ context 'when reference transaction request given' do
145
+ it 'should call SetExpressCheckout' do
146
+ expect do
147
+ instance.setup reference_transaction_request, return_url, cancel_url
148
+ end.should request_to nvp_endpoint, :post
149
+ instance._method_.should == :SetExpressCheckout
150
+ instance._sent_params_.should == {
151
+ :L_BILLINGTYPE0 => :MerchantInitiatedBilling,
152
+ :L_BILLINGAGREEMENTDESCRIPTION0 => 'Billing Agreement Request',
153
+ :RETURNURL => return_url,
154
+ :CANCELURL => cancel_url,
155
+ :PAYMENTREQUEST_0_AMT => '0.00',
156
+ :PAYMENTREQUEST_0_TAXAMT => "0.00",
157
+ :PAYMENTREQUEST_0_SHIPPINGAMT => "0.00"
158
+ }
159
+ end
160
+ end
136
161
  end
137
162
 
138
163
  describe '#details' do
139
164
  it 'should return Paypal::Express::Response' do
140
165
  fake_response 'GetExpressCheckoutDetails/success'
141
166
  response = instance.details 'token'
142
- response.should be_instance_of(Paypal::Express::Response)
167
+ response.should be_instance_of Paypal::Express::Response
143
168
  end
144
169
 
145
170
  it 'should call GetExpressCheckoutDetails' do
@@ -157,7 +182,7 @@ describe Paypal::Express::Request do
157
182
  it 'should return Paypal::Express::Response' do
158
183
  fake_response 'DoExpressCheckoutPayment/success'
159
184
  response = instance.checkout! 'token', 'payer_id', instant_payment_request
160
- response.should be_instance_of(Paypal::Express::Response)
185
+ response.should be_instance_of Paypal::Express::Response
161
186
  end
162
187
 
163
188
  it 'should call DoExpressCheckoutPayment' do
@@ -180,7 +205,7 @@ describe Paypal::Express::Request do
180
205
  it 'should return Paypal::Express::Response' do
181
206
  fake_response 'CreateRecurringPaymentsProfile/success'
182
207
  response = instance.subscribe! 'token', recurring_profile
183
- response.should be_instance_of(Paypal::Express::Response)
208
+ response.should be_instance_of Paypal::Express::Response
184
209
  end
185
210
 
186
211
  it 'should call CreateRecurringPaymentsProfile' do
@@ -228,7 +253,7 @@ describe Paypal::Express::Request do
228
253
  it 'should return Paypal::Express::Response' do
229
254
  fake_response 'ManageRecurringPaymentsProfileStatus/success'
230
255
  response = instance.renew! 'profile_id', :Cancel
231
- response.should be_instance_of(Paypal::Express::Response)
256
+ response.should be_instance_of Paypal::Express::Response
232
257
  end
233
258
 
234
259
  it 'should call ManageRecurringPaymentsProfileStatus' do
@@ -266,7 +291,7 @@ describe Paypal::Express::Request do
266
291
  it 'should return Paypal::Express::Response' do
267
292
  fake_response 'ManageRecurringPaymentsProfileStatus/success'
268
293
  response = instance.cancel! 'profile_id'
269
- response.should be_instance_of(Paypal::Express::Response)
294
+ response.should be_instance_of Paypal::Express::Response
270
295
  end
271
296
 
272
297
  it 'should call ManageRecurringPaymentsProfileStatus' do
@@ -285,7 +310,7 @@ describe Paypal::Express::Request do
285
310
  it 'should return Paypal::Express::Response' do
286
311
  fake_response 'ManageRecurringPaymentsProfileStatus/success'
287
312
  response = instance.cancel! 'profile_id'
288
- response.should be_instance_of(Paypal::Express::Response)
313
+ response.should be_instance_of Paypal::Express::Response
289
314
  end
290
315
 
291
316
  it 'should call ManageRecurringPaymentsProfileStatus' do
@@ -304,7 +329,7 @@ describe Paypal::Express::Request do
304
329
  it 'should return Paypal::Express::Response' do
305
330
  fake_response 'RefundTransaction/full'
306
331
  response = instance.refund! 'transaction_id'
307
- response.should be_instance_of(Paypal::Express::Response)
332
+ response.should be_instance_of Paypal::Express::Response
308
333
  end
309
334
 
310
335
  it 'should call RefundTransaction' do
@@ -319,4 +344,43 @@ describe Paypal::Express::Request do
319
344
  end
320
345
  end
321
346
 
347
+ describe '#agree!' do
348
+ it 'should return Paypal::Express::Response' do
349
+ fake_response 'CreateBillingAgreement/success'
350
+ response = instance.agree! 'token'
351
+ response.should be_instance_of Paypal::Express::Response
352
+ end
353
+
354
+ it 'should call CreateBillingAgreement' do
355
+ expect do
356
+ instance.agree! 'token'
357
+ end.should request_to nvp_endpoint, :post
358
+ instance._method_.should == :CreateBillingAgreement
359
+ instance._sent_params_.should == {
360
+ :TOKEN => 'token'
361
+ }
362
+ end
363
+ end
364
+
365
+ describe '#charge!' do
366
+ it 'should return Paypal::Express::Response' do
367
+ fake_response 'DoReferenceTransaction/success'
368
+ response = instance.charge! 'billing_agreement_id', 1000
369
+ response.should be_instance_of Paypal::Express::Response
370
+ end
371
+
372
+ it 'should call DoReferenceTransaction' do
373
+ expect do
374
+ instance.charge! 'billing_agreement_id', 1000, :currency_code => :JPY
375
+ end.should request_to nvp_endpoint, :post
376
+ instance._method_.should == :DoReferenceTransaction
377
+ instance._sent_params_.should == {
378
+ :REFERENCEID => 'billing_agreement_id',
379
+ :AMT => '1000.00',
380
+ :PAYMENTACTION => :Sale,
381
+ :CURRENCYCODE => :JPY
382
+ }
383
+ end
384
+ end
385
+
322
386
  end
@@ -79,9 +79,20 @@ describe Paypal::NVP::Response do
79
79
  response = request.checkout! 'token', 'payer_id', payment_request
80
80
  response.payment_responses.size.should == 0
81
81
  response.payment_info.size.should == 1
82
- response.billing_agreement_id.should == 'B-1XR87946TC504770W'
83
82
  response.payment_info.first.should be_instance_of(Paypal::Payment::Response::Info)
84
83
  end
84
+
85
+ context 'when billing_agreement is included' do
86
+ before do
87
+ fake_response 'DoExpressCheckoutPayment/success_with_billing_agreement'
88
+ end
89
+
90
+ it 'should have billing_agreement' do
91
+ Paypal.logger.should_not_receive(:warn)
92
+ response = request.checkout! 'token', 'payer_id', payment_request
93
+ response.billing_agreement.identifier.should == 'B-1XR87946TC504770W'
94
+ end
95
+ end
85
96
  end
86
97
 
87
98
  context 'when CreateRecurringPaymentsProfile response given' do
@@ -31,12 +31,11 @@ describe Paypal::Payment::Request do
31
31
  )
32
32
  end
33
33
 
34
- let :recurring_request_with_reference_transaction do
34
+ let :reference_transaction_request do
35
35
  Paypal::Payment::Request.new(
36
36
  :currency_code => :JPY,
37
- :billing_type => :RecurringPayments,
38
- :billing_agreement_description => 'Recurring Payment Request',
39
- :reference_transactions_billing_type => :MerchantInitiatedBillingSingleAgreement
37
+ :billing_type => :MerchantInitiatedBillingSingleAgreement,
38
+ :billing_agreement_description => 'Reference Transaction Request'
40
39
  )
41
40
  end
42
41
 
@@ -57,9 +56,9 @@ describe Paypal::Payment::Request do
57
56
  end
58
57
 
59
58
  it 'should handle Recurring Payment parameters' do
60
- recurring_request_with_reference_transaction.currency_code.should == :JPY
61
- recurring_request_with_reference_transaction.billing_type.should == :RecurringPayments
62
- recurring_request_with_reference_transaction.billing_agreement_description.should == 'Recurring Payment Request'
59
+ reference_transaction_request.currency_code.should == :JPY
60
+ reference_transaction_request.billing_type.should == :MerchantInitiatedBillingSingleAgreement
61
+ reference_transaction_request.billing_agreement_description.should == 'Reference Transaction Request'
63
62
  end
64
63
  end
65
64
 
@@ -95,15 +94,14 @@ describe Paypal::Payment::Request do
95
94
  }
96
95
  end
97
96
 
98
- it 'should handle Recurring Payment with Reference Transactions parameters' do
99
- recurring_request_with_reference_transaction.to_params.should == {
97
+ it 'should handle Reference Transactions parameters' do
98
+ reference_transaction_request.to_params.should == {
100
99
  :PAYMENTREQUEST_0_AMT => "0.00",
101
100
  :PAYMENTREQUEST_0_TAXAMT => "0.00",
102
101
  :PAYMENTREQUEST_0_SHIPPINGAMT => "0.00",
103
102
  :PAYMENTREQUEST_0_CURRENCYCODE => :JPY,
104
- :L_BILLINGTYPE0 => :RecurringPayments,
105
- :L_BILLINGAGREEMENTDESCRIPTION0 => "Recurring Payment Request",
106
- :BILLINGTYPE => :MerchantInitiatedBillingSingleAgreement,
103
+ :L_BILLINGTYPE0 => :MerchantInitiatedBillingSingleAgreement,
104
+ :L_BILLINGAGREEMENTDESCRIPTION0 => "Reference Transaction Request"
107
105
  }
108
106
  end
109
107
  end
metadata CHANGED
@@ -1,13 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paypal-express
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
5
- prerelease:
6
- segments:
7
- - 0
8
- - 3
9
- - 1
10
- version: 0.3.1
4
+ prerelease: 6
5
+ version: 0.4.0.alpha
11
6
  platform: ruby
12
7
  authors:
13
8
  - nov matake
@@ -15,7 +10,7 @@ autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
12
 
18
- date: 2011-06-27 00:00:00 Z
13
+ date: 2011-08-06 00:00:00 Z
19
14
  dependencies:
20
15
  - !ruby/object:Gem::Dependency
21
16
  name: activesupport
@@ -25,10 +20,6 @@ dependencies:
25
20
  requirements:
26
21
  - - ">="
27
22
  - !ruby/object:Gem::Version
28
- hash: 5
29
- segments:
30
- - 2
31
- - 3
32
23
  version: "2.3"
33
24
  type: :runtime
34
25
  version_requirements: *id001
@@ -40,9 +31,6 @@ dependencies:
40
31
  requirements:
41
32
  - - ">="
42
33
  - !ruby/object:Gem::Version
43
- hash: 3
44
- segments:
45
- - 0
46
34
  version: "0"
47
35
  type: :runtime
48
36
  version_requirements: *id002
@@ -54,9 +42,6 @@ dependencies:
54
42
  requirements:
55
43
  - - ">="
56
44
  - !ruby/object:Gem::Version
57
- hash: 3
58
- segments:
59
- - 0
60
45
  version: "0"
61
46
  type: :runtime
62
47
  version_requirements: *id003
@@ -68,11 +53,6 @@ dependencies:
68
53
  requirements:
69
54
  - - ">="
70
55
  - !ruby/object:Gem::Version
71
- hash: 25
72
- segments:
73
- - 0
74
- - 0
75
- - 3
76
56
  version: 0.0.3
77
57
  type: :runtime
78
58
  version_requirements: *id004
@@ -84,10 +64,6 @@ dependencies:
84
64
  requirements:
85
65
  - - ">="
86
66
  - !ruby/object:Gem::Version
87
- hash: 27
88
- segments:
89
- - 0
90
- - 8
91
67
  version: "0.8"
92
68
  type: :development
93
69
  version_requirements: *id005
@@ -99,10 +75,6 @@ dependencies:
99
75
  requirements:
100
76
  - - ">="
101
77
  - !ruby/object:Gem::Version
102
- hash: 25
103
- segments:
104
- - 0
105
- - 9
106
78
  version: "0.9"
107
79
  type: :development
108
80
  version_requirements: *id006
@@ -114,9 +86,6 @@ dependencies:
114
86
  requirements:
115
87
  - - ">="
116
88
  - !ruby/object:Gem::Version
117
- hash: 7
118
- segments:
119
- - 2
120
89
  version: "2"
121
90
  type: :development
122
91
  version_requirements: *id007
@@ -128,11 +97,6 @@ dependencies:
128
97
  requirements:
129
98
  - - ">="
130
99
  - !ruby/object:Gem::Version
131
- hash: 27
132
- segments:
133
- - 1
134
- - 3
135
- - 0
136
100
  version: 1.3.0
137
101
  type: :development
138
102
  version_requirements: *id008
@@ -176,14 +140,19 @@ files:
176
140
  - lib/paypal/payment/response/info.rb
177
141
  - lib/paypal/payment/response/item.rb
178
142
  - lib/paypal/payment/response/payer.rb
143
+ - lib/paypal/payment/response/reference.rb
179
144
  - lib/paypal/payment/response/refund.rb
180
145
  - lib/paypal/payment/response/ship_to.rb
181
146
  - lib/paypal/util.rb
182
147
  - paypal-express.gemspec
148
+ - spec/fake_response/CreateBillingAgreement/success.txt
183
149
  - spec/fake_response/CreateRecurringPaymentsProfile/failure.txt
184
150
  - spec/fake_response/CreateRecurringPaymentsProfile/success.txt
185
151
  - spec/fake_response/DoExpressCheckoutPayment/failure.txt
186
152
  - spec/fake_response/DoExpressCheckoutPayment/success.txt
153
+ - spec/fake_response/DoExpressCheckoutPayment/success_with_billing_agreement.txt
154
+ - spec/fake_response/DoReferenceTransaction/failure.txt
155
+ - spec/fake_response/DoReferenceTransaction/success.txt
187
156
  - spec/fake_response/GetExpressCheckoutDetails/failure.txt
188
157
  - spec/fake_response/GetExpressCheckoutDetails/success.txt
189
158
  - spec/fake_response/GetRecurringPaymentsProfileDetails/failure.txt
@@ -228,33 +197,29 @@ required_ruby_version: !ruby/object:Gem::Requirement
228
197
  requirements:
229
198
  - - ">="
230
199
  - !ruby/object:Gem::Version
231
- hash: 3
232
- segments:
233
- - 0
234
200
  version: "0"
235
201
  required_rubygems_version: !ruby/object:Gem::Requirement
236
202
  none: false
237
203
  requirements:
238
204
  - - ">="
239
205
  - !ruby/object:Gem::Version
240
- hash: 23
241
- segments:
242
- - 1
243
- - 3
244
- - 6
245
206
  version: 1.3.6
246
207
  requirements: []
247
208
 
248
209
  rubyforge_project:
249
- rubygems_version: 1.7.2
210
+ rubygems_version: 1.8.5
250
211
  signing_key:
251
212
  specification_version: 3
252
213
  summary: PayPal Express Checkout API Client for Instance, Recurring and Digital Goods Payment.
253
214
  test_files:
215
+ - spec/fake_response/CreateBillingAgreement/success.txt
254
216
  - spec/fake_response/CreateRecurringPaymentsProfile/failure.txt
255
217
  - spec/fake_response/CreateRecurringPaymentsProfile/success.txt
256
218
  - spec/fake_response/DoExpressCheckoutPayment/failure.txt
257
219
  - spec/fake_response/DoExpressCheckoutPayment/success.txt
220
+ - spec/fake_response/DoExpressCheckoutPayment/success_with_billing_agreement.txt
221
+ - spec/fake_response/DoReferenceTransaction/failure.txt
222
+ - spec/fake_response/DoReferenceTransaction/success.txt
258
223
  - spec/fake_response/GetExpressCheckoutDetails/failure.txt
259
224
  - spec/fake_response/GetExpressCheckoutDetails/success.txt
260
225
  - spec/fake_response/GetRecurringPaymentsProfileDetails/failure.txt