creative-paypal-express 1.1.0 → 1.2.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 +4 -4
- data/CHANGELOG.md +47 -0
- data/README.md +1 -43
- data/VERSION +1 -1
- data/lib/paypal/express/request.rb +13 -0
- data/spec/fake_response/UpdateRecurringPaymentsProfile/success.txt +1 -0
- data/spec/paypal/express/request_spec.rb +22 -2
- data/spec/spec_helper.rb +2 -4
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e3a1313ca1047f68a9801c63c2c0eae9aaf4bc9d
|
4
|
+
data.tar.gz: 4d9aeedc4d2692e2301079d42c7b3a8db94834ea
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e942250f8683e6f2d07e8d1c140679fce166365c64082df09e120717b81608a1db38f0d0745ac75768d2276b46141a87a80b90bd7297aefef7a120737b335e0c
|
7
|
+
data.tar.gz: b3ebea5d48de225090e9ad354836b91f0bc65f12f55cd90f7ce0659e63f394becc6609af79cf8445f52016ef384b6087d0359a0c80bc96a9f2e366117a8b7106
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
## v1.2.0
|
2
|
+
__Added:__
|
3
|
+
- Ability to amend a created paypal subscription (its amount)
|
4
|
+
|
5
|
+
```rb
|
6
|
+
Paypal::Express::Request.new(params).amend!("profile_id", {amount: 19.95, note: "will show up in email and profile logs"})
|
7
|
+
```
|
8
|
+
|
9
|
+
## v1.1.0 news (not in wiki)
|
10
|
+
### Paypal::Payment::Recurring
|
11
|
+
The helper object can be instantiated by using the :raw key.
|
12
|
+
|
13
|
+
```rb
|
14
|
+
params = {
|
15
|
+
# optional initial payment parameters
|
16
|
+
:INITAMT => "9.00",
|
17
|
+
:FAILEDINITAMTACTION => "CancelOnFailure", # or "ContinueOnFailure"
|
18
|
+
|
19
|
+
# optional trial parameters
|
20
|
+
:TRIALBILLINGPERIOD => "Day",
|
21
|
+
:TRIALBILLINGFREQUENCY => "7",
|
22
|
+
:TRIALAMT => "0.00",
|
23
|
+
:TRIALCURRENCYCODE => "EUR",
|
24
|
+
:TRIALTOTALBILLINGCYCLES => "1",
|
25
|
+
|
26
|
+
# mandatory regular recurring profile parameters
|
27
|
+
:DESC => "Funny Movie Clips Subscription",
|
28
|
+
:PROFILESTARTDATE => "2017-01-25T15:00:00Z",
|
29
|
+
:BILLINGPERIOD => "Day", # "Month", "Year"
|
30
|
+
:BILLINGFREQUENCY => "30",
|
31
|
+
:AMT => "9.00", # two-decimals for cents, whole number for whole currency, like a Euro or Dollar
|
32
|
+
:CURRENCYCODE => "EUR",
|
33
|
+
|
34
|
+
# termination
|
35
|
+
:TOTALBILLINGCYCLES => "0", # optional field, '0' value makes profile last forever
|
36
|
+
:MAXFAILEDPAYMENTS => "3",
|
37
|
+
:AUTOBILLAMT => "AddToNextBilling",
|
38
|
+
|
39
|
+
# Digital goods fields
|
40
|
+
:L_PAYMENTREQUEST_0_ITEMCATEGORY0 => "Digital",
|
41
|
+
:L_PAYMENTREQUEST_0_NAME0 => "Cat Clip Collection",
|
42
|
+
:L_PAYMENTREQUEST_0_AMT0 => "9.00",
|
43
|
+
:L_PAYMENTREQUEST_0_QTY0 => "1",
|
44
|
+
}
|
45
|
+
|
46
|
+
recurring_profile = Paypal::Payment::Recurring.new(raw: params)
|
47
|
+
```
|
data/README.md
CHANGED
@@ -7,11 +7,9 @@ Express Checkout for Digital Goods is also supported.
|
|
7
7
|
## Installation
|
8
8
|
|
9
9
|
```rb
|
10
|
-
gem "creative-paypal-express", "~> 1.
|
10
|
+
gem "creative-paypal-express", "~> 1.2.0"
|
11
11
|
```
|
12
12
|
|
13
|
-
gem install paypal-express
|
14
|
-
|
15
13
|
## Usage
|
16
14
|
|
17
15
|
See Wiki on Github
|
@@ -21,46 +19,6 @@ Play with Sample Rails App
|
|
21
19
|
https://github.com/nov/paypal-express-sample
|
22
20
|
https://paypal-express-sample.heroku.com
|
23
21
|
|
24
|
-
## v1.1.0 news (not in wiki)
|
25
|
-
### Paypal::Payment::Recurring
|
26
|
-
The helper object can be instantiated by using the :raw key.
|
27
|
-
|
28
|
-
```rb
|
29
|
-
params = {
|
30
|
-
# optional initial payment parameters
|
31
|
-
:INITAMT => "9.00",
|
32
|
-
:FAILEDINITAMTACTION => "CancelOnFailure", # or "ContinueOnFailure"
|
33
|
-
|
34
|
-
# optional trial parameters
|
35
|
-
:TRIALBILLINGPERIOD => "Day",
|
36
|
-
:TRIALBILLINGFREQUENCY => "7",
|
37
|
-
:TRIALAMT => "0.00",
|
38
|
-
:TRIALCURRENCYCODE => "EUR",
|
39
|
-
:TRIALTOTALBILLINGCYCLES => "1",
|
40
|
-
|
41
|
-
# mandatory regular recurring profile parameters
|
42
|
-
:DESC => "Funny Movie Clips Subscription",
|
43
|
-
:PROFILESTARTDATE => "2017-01-25T15:00:00Z",
|
44
|
-
:BILLINGPERIOD => "Day", # "Month", "Year"
|
45
|
-
:BILLINGFREQUENCY => "30",
|
46
|
-
:AMT => "9.00", # two-decimals for cents, whole number for whole currency, like a Euro or Dollar
|
47
|
-
:CURRENCYCODE => "EUR",
|
48
|
-
|
49
|
-
# termination
|
50
|
-
:TOTALBILLINGCYCLES => "0", # optional field, '0' value makes profile last forever
|
51
|
-
:MAXFAILEDPAYMENTS => "3",
|
52
|
-
:AUTOBILLAMT => "AddToNextBilling",
|
53
|
-
|
54
|
-
# Digital goods fields
|
55
|
-
:L_PAYMENTREQUEST_0_ITEMCATEGORY0 => "Digital",
|
56
|
-
:L_PAYMENTREQUEST_0_NAME0 => "Cat Clip Collection",
|
57
|
-
:L_PAYMENTREQUEST_0_AMT0 => "9.00",
|
58
|
-
:L_PAYMENTREQUEST_0_QTY0 => "1",
|
59
|
-
}
|
60
|
-
|
61
|
-
recurring_profile = Paypal::Payment::Recurring.new(raw: params)
|
62
|
-
```
|
63
|
-
|
64
22
|
## Note on Patches/Pull Requests
|
65
23
|
|
66
24
|
* Fork the project.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.2.0
|
@@ -127,6 +127,19 @@ module Paypal
|
|
127
127
|
renew!(profile_id, :Reactivate, options)
|
128
128
|
end
|
129
129
|
|
130
|
+
# Expects optional :note option and mandatory :amount option
|
131
|
+
def amend!(profile_id, options={})
|
132
|
+
# Developed according to https://developer.paypal.com/docs/classic/express-checkout/integration-guide/ECRecurringPayments/#modifying-a-recurring-payments-profile
|
133
|
+
# and https://developer.paypal.com/docs/classic/api/merchant/UpdateRecurringPaymentsProfile_API_Operation_NVP/
|
134
|
+
params = {
|
135
|
+
:PROFILEID => profile_id,
|
136
|
+
:NOTE => options[:note],
|
137
|
+
:AMT => options[:amount].presence || (raise ArgumentError.new(":amount option missing!")), # Paypal accepts 19.95 type decimals
|
138
|
+
}
|
139
|
+
|
140
|
+
response = request(:UpdateRecurringPaymentsProfile, params)
|
141
|
+
return Response.new(response)
|
142
|
+
end
|
130
143
|
|
131
144
|
# Reference Transaction Specific
|
132
145
|
|
@@ -0,0 +1 @@
|
|
1
|
+
PROFILEID=I%2dK1VFLRN3VVG0&TIMESTAMP=2017%2d02%2d20T07%3a20%3a44Z&CORRELATIONID=86bde487ccba6&ACK=Success&VERSION=66%2e0&BUILD=1704252
|
@@ -1,5 +1,4 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# rspec spec/paypal/express/request_spec.rb
|
3
2
|
describe Paypal::Express::Request do
|
4
3
|
class Paypal::Express::Request
|
5
4
|
attr_accessor :_sent_params_, :_method_
|
@@ -489,6 +488,27 @@ describe Paypal::Express::Request do
|
|
489
488
|
end
|
490
489
|
end
|
491
490
|
|
491
|
+
describe "#amend!(profile_id, options={})" do
|
492
|
+
it "should raise ArgumentError if :amount not passed" do
|
493
|
+
expect{instance.amend!('profile_id')}.to raise_error(ArgumentError, ":amount option missing!")
|
494
|
+
end
|
495
|
+
|
496
|
+
it "should call UpdateRecurringPaymentsProfile" do
|
497
|
+
expect{instance.amend!('profile_id', {note: "test changes", amount: 19.95})}.
|
498
|
+
to request_to(nvp_endpoint, :post)
|
499
|
+
|
500
|
+
expect(instance._method_).to eq :UpdateRecurringPaymentsProfile
|
501
|
+
expect(instance._sent_params_).to eq({:PROFILEID => 'profile_id', :NOTE => "test changes", :AMT => 19.95})
|
502
|
+
end
|
503
|
+
|
504
|
+
it 'should return Paypal::Express::Response' do
|
505
|
+
fake_response 'UpdateRecurringPaymentsProfile/success'
|
506
|
+
response = instance.amend!('profile_id', {note: "test changes", amount: 19.95})
|
507
|
+
|
508
|
+
expect(response.class).to eq Paypal::Express::Response
|
509
|
+
end
|
510
|
+
end
|
511
|
+
|
492
512
|
describe '#agree!' do
|
493
513
|
it 'should return Paypal::Express::Response' do
|
494
514
|
fake_response 'CreateBillingAgreement/success'
|
data/spec/spec_helper.rb
CHANGED
@@ -50,6 +50,7 @@ def expected_recurring_profile_parameters(options={})
|
|
50
50
|
# :TOTALBILLINGCYCLES => "0", # optional field, '0' value makes profile last forever
|
51
51
|
# :MAXFAILEDPAYMENTS => "3",
|
52
52
|
# :AUTOBILLAMT => "AddToNextBilling",
|
53
|
+
# :AUTOBILLOUTAMT => "AddToNextBilling",
|
53
54
|
#
|
54
55
|
# # Digital goods fields
|
55
56
|
# :L_PAYMENTREQUEST_0_ITEMCATEGORY0 => "Digital",
|
@@ -94,10 +95,7 @@ def auxilary_profile_parameters(options={})
|
|
94
95
|
:TOTALBILLINGCYCLES => "0", # optional field, '0' value makes profile last forever
|
95
96
|
:MAXFAILEDPAYMENTS => "3",
|
96
97
|
:AUTOBILLAMT => "AddToNextBilling",
|
98
|
+
:AUTOBILLOUTAMT => "AddToNextBilling",
|
97
99
|
|
98
|
-
:L_PAYMENTREQUEST_0_ITEMCATEGORY0 => "Digital",
|
99
|
-
:L_PAYMENTREQUEST_0_NAME0 => "Cat Clip Collection",
|
100
|
-
:L_PAYMENTREQUEST_0_AMT0 => "9.00",
|
101
|
-
:L_PAYMENTREQUEST_0_QTY0 => "1",
|
102
100
|
}.merge(options)
|
103
101
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: creative-paypal-express
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- nov matake
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-
|
12
|
+
date: 2017-02-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -136,6 +136,7 @@ files:
|
|
136
136
|
- ".gitignore"
|
137
137
|
- ".rspec"
|
138
138
|
- ".travis.yml"
|
139
|
+
- CHANGELOG.md
|
139
140
|
- Gemfile
|
140
141
|
- LICENSE
|
141
142
|
- README.md
|
@@ -196,6 +197,7 @@ files:
|
|
196
197
|
- spec/fake_response/RefundTransaction/full.txt
|
197
198
|
- spec/fake_response/SetExpressCheckout/failure.txt
|
198
199
|
- spec/fake_response/SetExpressCheckout/success.txt
|
200
|
+
- spec/fake_response/UpdateRecurringPaymentsProfile/success.txt
|
199
201
|
- spec/helpers/fake_response_helper.rb
|
200
202
|
- spec/paypal/exception/api_error_spec.rb
|
201
203
|
- spec/paypal/exception/http_error_spec.rb
|
@@ -270,6 +272,7 @@ test_files:
|
|
270
272
|
- spec/fake_response/RefundTransaction/full.txt
|
271
273
|
- spec/fake_response/SetExpressCheckout/failure.txt
|
272
274
|
- spec/fake_response/SetExpressCheckout/success.txt
|
275
|
+
- spec/fake_response/UpdateRecurringPaymentsProfile/success.txt
|
273
276
|
- spec/helpers/fake_response_helper.rb
|
274
277
|
- spec/paypal/exception/api_error_spec.rb
|
275
278
|
- spec/paypal/exception/http_error_spec.rb
|