yukon 0.1.5 → 0.1.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1c27df50af405633f2233b96c61d1acc57f000d5
4
- data.tar.gz: 603d91ebb73227ab50942ed28ec0b8069fc145a9
3
+ metadata.gz: a06c4256d86b894eed2f152747d778ad41952f47
4
+ data.tar.gz: d52ffd6563490f959bfbd32d82bafeba6f289a40
5
5
  SHA512:
6
- metadata.gz: 3c2c4e7ae60abd9e57d54dd6bcef51c0f1c7182fa8f04fcdbcd0ec1f8ab0ee0160e9f5998663ac8b4c87c62902e61902322b803a8ea9edc50bc666e426ed9a17
7
- data.tar.gz: 66359f45a6039af5510af81614440a6f69cfb4eb74ee0abb9379f2909372d8059ccec5bee4bb7c836bd5d96b4938c82f15ff152b73f8b2fd8443b137ea1f6a30
6
+ metadata.gz: 536baa757caaf9bde63aa38ed9c5e9ec3cf23de4575a577dd25189fe59a5a06bae5cf18f60a0e8f538adfbf28d5b798d1f2ecfb2d124b74a3453a6756a6fdef8
7
+ data.tar.gz: 5262a50dad2ca135e8aa6591122e086f71852eb7a33ef337bb32c397009bd1b24040f8dccf0faf9e1ad2d29c723f416a49d3182a2a2b87e96540a28bb28c4d73
@@ -0,0 +1,12 @@
1
+ development: &default
2
+ username: jb-us-seller_api1.paypal.com
3
+ password: WX4WTU3S8MY44S7F
4
+ signature: AFcWxV21C7fd0v3bYYYRCpSSRl31A7yDhhsPUU2XhtMoZXsWHFxu-RWy
5
+ app_id: APP-80W284485P519543T
6
+ http_timeout: 30
7
+ mode: sandbox
8
+ test:
9
+ <<: *default
10
+ production:
11
+ <<: *default
12
+ mode: live
data/config/paypal.yml ADDED
@@ -0,0 +1,12 @@
1
+ development: &default
2
+ username: bparan_1360459336_biz_api1.gmail.com
3
+ password: 1360459362
4
+ signature: AiPC9BjkCyDFQXbSkoZcgqH3hpacARbNPHYwGcAEv3pAorm.KuIxgJw8
5
+ app_id: APP-80W284485P519543T
6
+ http_timeout: 30
7
+ mode: sandbox
8
+ test:
9
+ <<: *default
10
+ production:
11
+ <<: *default
12
+ mode: live
data/errors.txt ADDED
@@ -0,0 +1,40 @@
1
+ Problem : Security header is not valid", "ErrorCode"=>"10002"
2
+
3
+ Possible Solution under test:
4
+
5
+ This error is shown when you are not properly logged into the sandbox account on paypal's site.
6
+
7
+ 0. Login to www.paypal.com
8
+ 1. Go to https://developer.paypal.com/developer/accounts
9
+ 2. Copy API credentials for a sandox user with Business-Pro account.
10
+
11
+
12
+
13
+
14
+ 1. Login to sandbox.paypal.com
15
+ 2. Got to your site and checkout
16
+ 3. When sent to paypal, login as one of your buyer test accounts
17
+
18
+
19
+
20
+
21
+
22
+
23
+ Resources
24
+
25
+ 1. Bogus gateway to test PayPal
26
+ https://github.com/sideshowcoder/active_merchant/blob/192f49762172dc41450d7a3605158d45eb55b83b/lib/active_merchant/billing/gateways/paypal_bogus.rb
27
+ 2. Classic API Endpoints
28
+ https://developer.paypal.com/webapps/developer/docs/classic/api/endpoints/
29
+ 3. Merchant SDK Ruby
30
+ https://github.com/paypal/merchant-sdk-ruby
31
+ 4. How to create and process an order using Express Checkout
32
+ https://developer.paypal.com/docs/classic/express-checkout/ht_ec-orderAuthPayment-curl-etc/
33
+ 5. Sample Webapp that generates SDK code to use
34
+ https://paypal-sdk-samples.herokuapp.com/merchant/get_express_checkout_details
35
+
36
+ curl -s --insecure https://api-3t.sandbox.paypal.com/nvp -d "USER=bparan_1360459336_biz_api1.gmail.com&PWD=1360459362&SIGNATURE=AiPC9BjkCyDFQXbSkoZcgqH3hpacARbNPHYwGcAEv3pAorm.KuIxgJw8&METHOD=GetExpressCheckoutDetails&VERSION=98&TOKEN=EC-5N9794560K105682F"
37
+
38
+
39
+ TOKEN=EC-5N9794560K105682F
40
+ &BILLINGAGREEMENTACCEPTEDSTATUS=0&CHECKOUTSTATUS=PaymentActionNotInitiated&TIMESTAMP=2015-08-16T22:01:37Z&CORRELATIONID=b69a2af4426d&ACK=Success&VERSION=98&BUILD=000000&CURRENCYCODE=USD&AMT=10.00&SHIPPINGAMT=0.00&HANDLINGAMT=0.00&TAXAMT=0.00&INSURANCEAMT=0.00&SHIPDISCAMT=0.00&PAYMENTREQUEST_0_CURRENCYCODE=USD&PAYMENTREQUEST_0_AMT=10.00&PAYMENTREQUEST_0_SHIPPINGAMT=0.00&PAYMENTREQUEST_0_HANDLINGAMT=0.00&PAYMENTREQUEST_0_TAXAMT=0.00&PAYMENTREQUEST_0_INSURANCEAMT=0.00&PAYMENTREQUEST_0_SHIPDISCAMT=0.00&PAYMENTREQUEST_0_INSURANCEOPTIONOFFERED=false&PAYMENTREQUEST_0_ADDRESSNORMALIZATIONSTATUS=None&PAYMENTREQUESTINFO_0_ERRORCODE=0
@@ -0,0 +1,14 @@
1
+ require 'active_merchant'
2
+
3
+ module Yukon
4
+
5
+ class PaymentGateway
6
+
7
+ def self.create(credentials, mode)
8
+ ActiveMerchant::Billing::Base.mode = mode
9
+ ActiveMerchant::Billing::PaypalExpressGateway.new(credentials)
10
+ end
11
+
12
+ end
13
+
14
+ end
@@ -0,0 +1,40 @@
1
+ module Yukon
2
+ class PaymentProcessor
3
+ # Step 1 : SetExpressCheckout
4
+ # price (in cents), buyer_ip, return_url, cancel_return_url, notify_url (optional)
5
+ def self.set_express_checkout(price, ip, return_url, cancel_return_url)
6
+ response = express_gateway.setup_purchase(price,
7
+ ip: ip,
8
+ return_url: return_url,
9
+ cancel_return_url: cancel_return_url)
10
+ response
11
+ end
12
+
13
+ # End of Step 1 : Redirect to Paypal URL : args - response
14
+ def self.redirect_url_for(response)
15
+ express_gateway.redirect_url_for(response.token)
16
+ end
17
+
18
+ # Step 2 : GetExpressCheckoutDetails : args - token
19
+ def self.details_for(token)
20
+ express_gateway.details_for(token)
21
+ end
22
+
23
+ # Step 3 : DoExpressCheckoutPayment
24
+ def self.complete_purchase(price, options)
25
+ express_gateway.purchase(price, options)
26
+ end
27
+
28
+ private
29
+
30
+ def self.express_gateway
31
+ paypal_credentials = {
32
+ login: Yukon.login,
33
+ password: Yukon.password,
34
+ signature: Yukon.signature
35
+ }
36
+ PaymentGateway.create(paypal_credentials, Yukon.mode)
37
+ end
38
+ end
39
+
40
+ end
data/lib/yukon/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Yukon
2
- VERSION = "0.1.5"
2
+ VERSION = "0.1.6"
3
3
  end
data/stest.rb ADDED
@@ -0,0 +1,79 @@
1
+ require 'paypal-sdk-merchant'
2
+
3
+ PayPal::SDK.load('config/paypal.yml', ENV['RACK_ENV'] || 'development')
4
+ @api = PayPal::SDK::Merchant::API.new
5
+
6
+ # Build SetExpressCheckout request object
7
+ @set_express_checkout = @api.build_set_express_checkout({
8
+ :SetExpressCheckoutRequestDetails => {
9
+ :ReturnURL => "https://paypal-sdk-samples.herokuapp.com/merchant/do_express_checkout_payment",
10
+ :CancelURL => "https://paypal-sdk-samples.herokuapp.com/merchant/set_express_checkout",
11
+ :PaymentDetails => [{
12
+ :OrderTotal => {
13
+ :currencyID => "USD",
14
+ :value => "5.27" },
15
+ :NotifyURL => "https://paypal-sdk-samples.herokuapp.com/merchant/ipn_notify",
16
+ :PaymentDetailsItem => [{
17
+ :Name => "Item Name",
18
+ :Quantity => 1,
19
+ :Amount => {
20
+ :currencyID => "USD",
21
+ :value => "5.27" },
22
+ :ItemCategory => "Physical" }],
23
+ :PaymentAction => "Sale" }] } })
24
+
25
+ # Make API call & get response
26
+ @set_express_checkout_response = @api.set_express_checkout(@set_express_checkout)
27
+
28
+ # Access Response
29
+ if @set_express_checkout_response.success?
30
+ p "Express Token : #{@set_express_checkout_response.Token}"
31
+ else
32
+ p @set_express_checkout_response.Errors
33
+ end
34
+
35
+ p @set_express_checkout_response.inspect
36
+
37
+
38
+ # If the customer approves the payment, call GetExpressCheckoutDetails to obtain the PayerID (which uniquely identifies the customer), and any other details you might need for transaction processing.
39
+
40
+ # Build GetExpressCheckout request object
41
+ @get_express_checkout_details = @api.build_get_express_checkout_details({Token: @set_express_checkout_response.Token })
42
+
43
+ # Make API call & get response
44
+ @get_express_checkout_details_response = @api.get_express_checkout_details(@get_express_checkout_details)
45
+
46
+ # Access Response
47
+ if @get_express_checkout_details_response.success?
48
+ p "*" * 80
49
+ p 'PayerID'
50
+ p @get_express_checkout_details_response.GetExpressCheckoutDetailsResponseDetails.PayerInfo.PayerID
51
+ p "*" * 80
52
+ else
53
+ p @get_express_checkout_details_response.Errors
54
+ end
55
+
56
+ # Build DoExpressCheckout request object
57
+ @do_express_checkout_payment = @api.build_do_express_checkout_payment({
58
+ :DoExpressCheckoutPaymentRequestDetails => {
59
+ :PaymentAction => "Sale",
60
+ :Token => @set_express_checkout_response.Token,
61
+ :PayerID => "TWLK53YN7GDM6",
62
+ :PaymentDetails => [{
63
+ :OrderTotal => {
64
+ :currencyID => "USD",
65
+ :value => "5.27" },
66
+ :NotifyURL => "https://paypal-sdk-samples.herokuapp.com/merchant/ipn_notify" }] } })
67
+
68
+ # Make API call & get response
69
+ @do_express_checkout_payment_response = @api.do_express_checkout_payment(@do_express_checkout_payment)
70
+
71
+ # Access Response
72
+ if @do_express_checkout_payment_response.success?
73
+ p "Processed payment successfully"
74
+ p @do_express_checkout_payment_response.DoExpressCheckoutPaymentResponseDetails
75
+ p @do_express_checkout_payment_response.FMFDetails
76
+ else
77
+ p @do_express_checkout_payment_response.Errors
78
+ end
79
+
data/tester.rb ADDED
@@ -0,0 +1,28 @@
1
+ require 'active_merchant'
2
+
3
+
4
+ login = 'bparan_1360459336_biz_api1.gmail.com'
5
+ password = '1360459362'
6
+ signature = 'AiPC9BjkCyDFQXbSkoZcgqH3hpacARbNPHYwGcAEv3pAorm.KuIxgJw8'
7
+
8
+ paypal_gateway = ActiveMerchant::Billing::PaypalExpressGateway.new(login: login, password: password, signature: signature)
9
+
10
+ purchase = paypal_gateway.setup_purchase(100,
11
+ ip: '127.0.0.1',
12
+ return_url: "http://localhost:3000/return",
13
+ cancel_return_url: "http://localhost:3000/cancel",
14
+ notify_url: 'http://localhost:3000/notify',
15
+ currency: 'USD',
16
+ items: [{ name: 'Sample item', quantity: 1, amount: 100, description: 'Sample'}],
17
+ allow_guest_checkout: true)
18
+
19
+ puts purchase.inspect
20
+
21
+
22
+ Credentials Test
23
+
24
+ curl -s --insecure https://api-3t.sandbox.paypal.com/nvp -d "USER=jb-us-seller_api1.paypal.com&PWD=WX4WTU3S8MY44S7F&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31A7yDhhsPUU2XhtMoZXsWHFxu-RWy&METHOD=SetExpressCheckout&VERSION=98&PAYMENTREQUEST_0_AMT=10&PAYMENTREQUEST_0_CURRENCYCODE=USD&PAYMENTREQUEST_0_PAYMENTACTION=SALE&cancelUrl=http://www.example.com/cancel.html&returnUrl=http://www.example.com/success.html"
25
+ TOKEN=EC%2d0L846157FP9914800&TIMESTAMP=2015%2d08%2d16T20%3a59%3a43Z&CORRELATIONID=d458bf3649e94&ACK=Success&VERSION=98&BUILD=000000
26
+
27
+ My Credetials response:
28
+ TOKEN=EC%2d7E679406DY7307812&TIMESTAMP=2015%2d08%2d16T20%3a54%3a43Z&CORRELATIONID=61233e65728ce&ACK=Success&VERSION=98&BUILD=000000
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yukon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bala Paranj
@@ -84,13 +84,20 @@ files:
84
84
  - Rakefile
85
85
  - bin/console
86
86
  - bin/setup
87
+ - config/paypal-sample.yml
88
+ - config/paypal.yml
89
+ - errors.txt
87
90
  - lib/yukon.rb
88
91
  - lib/yukon/cart.rb
89
92
  - lib/yukon/end_point.rb
90
93
  - lib/yukon/express_checkout.rb
94
+ - lib/yukon/payment_gateway.rb
95
+ - lib/yukon/payment_processor.rb
91
96
  - lib/yukon/paypal_express_gateway.rb
92
97
  - lib/yukon/paypal_express_gateway_factory.rb
93
98
  - lib/yukon/version.rb
99
+ - stest.rb
100
+ - tester.rb
94
101
  - yukon.gemspec
95
102
  homepage: http://www.rubyplus.com
96
103
  licenses: