paypal-sdk-rest 1.7.5 → 2.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (235) hide show
  1. checksums.yaml +5 -5
  2. data/Gemfile +4 -14
  3. data/README.md +45 -255
  4. data/lib/lib.rb +88 -0
  5. data/lib/paypal/core/access_token.rb +20 -0
  6. data/lib/paypal/core/paypal_environment.rb +38 -0
  7. data/lib/paypal/core/paypal_http_client.rb +51 -0
  8. data/lib/paypal/core/token_requests.rb +40 -0
  9. data/lib/paypal/core/version.rb +3 -0
  10. data/lib/v1/billing_agreements/agreement_bill_balance_request.rb +35 -0
  11. data/lib/v1/billing_agreements/agreement_cancel_request.rb +35 -0
  12. data/lib/v1/billing_agreements/agreement_create_request.rb +33 -0
  13. data/lib/v1/billing_agreements/agreement_execute_request.rb +31 -0
  14. data/lib/v1/billing_agreements/agreement_get_request.rb +31 -0
  15. data/lib/v1/billing_agreements/agreement_re_activate_request.rb +35 -0
  16. data/lib/v1/billing_agreements/agreement_set_balance_request.rb +35 -0
  17. data/lib/v1/billing_agreements/agreement_suspend_request.rb +35 -0
  18. data/lib/v1/billing_agreements/agreement_transactions_request.rb +41 -0
  19. data/lib/v1/billing_agreements/agreement_update_request.rb +35 -0
  20. data/lib/v1/billing_plans/plan_create_request.rb +33 -0
  21. data/lib/v1/billing_plans/plan_get_request.rb +31 -0
  22. data/lib/v1/billing_plans/plan_list_request.rb +49 -0
  23. data/lib/v1/billing_plans/plan_update_request.rb +35 -0
  24. data/lib/v1/identity/user_consent.rb +45 -0
  25. data/lib/v1/identity/userinfo_get_request.rb +33 -0
  26. data/lib/v1/invoices/invoice_cancel_request.rb +35 -0
  27. data/lib/v1/invoices/invoice_create_request.rb +33 -0
  28. data/lib/v1/invoices/invoice_delete_external_payment_request.rb +33 -0
  29. data/lib/v1/invoices/invoice_delete_external_refund_request.rb +33 -0
  30. data/lib/v1/invoices/invoice_delete_request.rb +31 -0
  31. data/lib/v1/invoices/invoice_get_request.rb +31 -0
  32. data/lib/v1/invoices/invoice_list_request.rb +44 -0
  33. data/lib/v1/invoices/invoice_next_invoice_number_request.rb +29 -0
  34. data/lib/v1/invoices/invoice_qr_code_request.rb +46 -0
  35. data/lib/v1/invoices/invoice_record_payment_request.rb +35 -0
  36. data/lib/v1/invoices/invoice_record_refund_request.rb +35 -0
  37. data/lib/v1/invoices/invoice_remind_request.rb +35 -0
  38. data/lib/v1/invoices/invoice_search_request.rb +33 -0
  39. data/lib/v1/invoices/invoice_send_request.rb +36 -0
  40. data/lib/v1/invoices/invoice_update_request.rb +40 -0
  41. data/lib/v1/invoices/template_create_request.rb +33 -0
  42. data/lib/v1/invoices/template_delete_request.rb +31 -0
  43. data/lib/v1/invoices/template_get_request.rb +31 -0
  44. data/lib/v1/invoices/template_list_request.rb +34 -0
  45. data/lib/v1/invoices/template_update_request.rb +35 -0
  46. data/lib/v1/orders/orders_cancel_request.rb +31 -0
  47. data/lib/v1/orders/orders_create_request.rb +33 -0
  48. data/lib/v1/orders/orders_get_request.rb +31 -0
  49. data/lib/v1/orders/orders_pay_request.rb +35 -0
  50. data/lib/v1/payment_experience/web_profile_create_request.rb +33 -0
  51. data/lib/v1/payment_experience/web_profile_delete_request.rb +31 -0
  52. data/lib/v1/payment_experience/web_profile_get_request.rb +31 -0
  53. data/lib/v1/payment_experience/web_profile_list_request.rb +29 -0
  54. data/lib/v1/payment_experience/web_profile_partial_update_request.rb +35 -0
  55. data/lib/v1/payment_experience/web_profile_update_request.rb +35 -0
  56. data/lib/v1/payments/authorization_capture_request.rb +35 -0
  57. data/lib/v1/payments/authorization_get_request.rb +31 -0
  58. data/lib/v1/payments/authorization_reauthorize_request.rb +35 -0
  59. data/lib/v1/payments/authorization_void_request.rb +31 -0
  60. data/lib/v1/payments/capture_get_request.rb +31 -0
  61. data/lib/v1/payments/capture_refund_request.rb +35 -0
  62. data/lib/v1/payments/order_authorize_request.rb +35 -0
  63. data/lib/v1/payments/order_capture_request.rb +35 -0
  64. data/lib/v1/payments/order_get_request.rb +31 -0
  65. data/lib/v1/payments/order_void_request.rb +31 -0
  66. data/lib/v1/payments/payment_create_request.rb +33 -0
  67. data/lib/v1/payments/payment_execute_request.rb +35 -0
  68. data/lib/v1/payments/payment_get_request.rb +31 -0
  69. data/lib/v1/payments/payment_list_request.rb +69 -0
  70. data/lib/v1/payments/payment_update_request.rb +35 -0
  71. data/lib/v1/payments/refund_get_request.rb +31 -0
  72. data/lib/v1/payments/sale_get_request.rb +31 -0
  73. data/lib/v1/payments/sale_refund_request.rb +35 -0
  74. data/lib/v1/sync/search_get_request.rb +99 -0
  75. data/lib/v1/vault/credit_card_create_request.rb +33 -0
  76. data/lib/v1/vault/credit_card_delete_request.rb +31 -0
  77. data/lib/v1/vault/credit_card_get_request.rb +31 -0
  78. data/lib/v1/vault/credit_card_list_request.rb +79 -0
  79. data/lib/v1/vault/credit_card_update_request.rb +35 -0
  80. data/lib/v1/webhooks/available_event_type_list_request.rb +29 -0
  81. data/lib/v1/webhooks/event_get_request.rb +31 -0
  82. data/lib/v1/webhooks/event_list_request.rb +54 -0
  83. data/lib/v1/webhooks/event_resend_request.rb +35 -0
  84. data/lib/v1/webhooks/simulate_event_request.rb +33 -0
  85. data/lib/v1/webhooks/webhook_create_request.rb +33 -0
  86. data/lib/v1/webhooks/webhook_delete_request.rb +31 -0
  87. data/lib/v1/webhooks/webhook_get_request.rb +31 -0
  88. data/lib/v1/webhooks/webhook_list_event_subscriptions_request.rb +31 -0
  89. data/lib/v1/webhooks/webhook_list_request.rb +34 -0
  90. data/lib/v1/webhooks/webhook_update_request.rb +35 -0
  91. data/lib/v1/webhooks/webhook_verify_signature_request.rb +33 -0
  92. data/spec/integration/test_harness.rb +25 -0
  93. data/spec/integration/v1/billing_agreements/agreement_create_spec.rb +63 -0
  94. data/spec/integration/v1/billing_plans/plan_create_spec.rb +12 -0
  95. data/spec/integration/v1/billing_plans/plan_get_spec.rb +16 -0
  96. data/spec/integration/v1/billing_plans/plan_helper.rb +71 -0
  97. data/spec/integration/v1/billing_plans/plan_list_spec.rb +16 -0
  98. data/spec/integration/v1/billing_plans/plan_update_spec.rb +19 -0
  99. data/spec/integration/v1/identity/userinfo_get_spec.rb +65 -0
  100. data/spec/integration/v1/invoices/invoice_cancel_spec.rb +23 -0
  101. data/spec/integration/v1/invoices/invoice_create_spec.rb +15 -0
  102. data/spec/integration/v1/invoices/invoice_delete_external_payment_spec.rb +23 -0
  103. data/spec/integration/v1/invoices/invoice_delete_external_refund_spec.rb +21 -0
  104. data/spec/integration/v1/invoices/invoice_delete_spec.rb +16 -0
  105. data/spec/integration/v1/invoices/invoice_get_spec.rb +18 -0
  106. data/spec/integration/v1/invoices/invoice_helper.rb +171 -0
  107. data/spec/integration/v1/invoices/invoice_list_spec.rb +20 -0
  108. data/spec/integration/v1/invoices/invoice_next_invoice_number_spec.rb +14 -0
  109. data/spec/integration/v1/invoices/invoice_qr_code_spec.rb +18 -0
  110. data/spec/integration/v1/invoices/invoice_record_payment_spec.rb +14 -0
  111. data/spec/integration/v1/invoices/invoice_record_refund_spec.rb +14 -0
  112. data/spec/integration/v1/invoices/invoice_remind_spec.rb +22 -0
  113. data/spec/integration/v1/invoices/invoice_search_spec.rb +20 -0
  114. data/spec/integration/v1/invoices/invoice_send_spec.rb +15 -0
  115. data/spec/integration/v1/invoices/invoice_update_spec.rb +26 -0
  116. data/spec/integration/v1/invoices/template_create_spec.rb +14 -0
  117. data/spec/integration/v1/invoices/template_delete_spec.rb +15 -0
  118. data/spec/integration/v1/invoices/template_get_spec.rb +18 -0
  119. data/spec/integration/v1/invoices/template_list_spec.rb +15 -0
  120. data/spec/integration/v1/invoices/template_update_spec.rb +62 -0
  121. data/spec/integration/v1/orders/orders_cancel_spec.rb +15 -0
  122. data/spec/integration/v1/orders/orders_create_spec.rb +17 -0
  123. data/spec/integration/v1/orders/orders_get_spec.rb +18 -0
  124. data/spec/integration/v1/orders/orders_helper.rb +36 -0
  125. data/spec/integration/v1/orders/orders_pay_spec.rb +19 -0
  126. data/spec/integration/v1/payment_experience/pe_helper.rb +35 -0
  127. data/spec/integration/v1/payment_experience/web_profile_create_spec.rb +20 -0
  128. data/spec/integration/v1/payment_experience/web_profile_delete_spec.rb +15 -0
  129. data/spec/integration/v1/payment_experience/web_profile_get_spec.rb +17 -0
  130. data/spec/integration/v1/payment_experience/web_profile_list_spec.rb +18 -0
  131. data/spec/integration/v1/payment_experience/web_profile_partial_update_spec.rb +32 -0
  132. data/spec/integration/v1/payment_experience/web_profile_update_spec.rb +44 -0
  133. data/spec/integration/v1/payments/authorization_capture_spec.rb +17 -0
  134. data/spec/integration/v1/payments/authorization_get_spec.rb +18 -0
  135. data/spec/integration/v1/payments/authorization_reauthorize_spec.rb +26 -0
  136. data/spec/integration/v1/payments/authorization_void_spec.rb +19 -0
  137. data/spec/integration/v1/payments/capture_get_spec.rb +20 -0
  138. data/spec/integration/v1/payments/capture_refund_spec.rb +27 -0
  139. data/spec/integration/v1/payments/order_authorize_spec.rb +20 -0
  140. data/spec/integration/v1/payments/order_capture_spec.rb +21 -0
  141. data/spec/integration/v1/payments/order_get_spec.rb +14 -0
  142. data/spec/integration/v1/payments/order_void_spec.rb +14 -0
  143. data/spec/integration/v1/payments/payment_create_spec.rb +13 -0
  144. data/spec/integration/v1/payments/payment_execute_spec.rb +19 -0
  145. data/spec/integration/v1/payments/payment_get_spec.rb +17 -0
  146. data/spec/integration/v1/payments/payment_list_spec.rb +16 -0
  147. data/spec/integration/v1/payments/payment_update_spec.rb +28 -0
  148. data/spec/integration/v1/payments/payments_helper.rb +72 -0
  149. data/spec/integration/v1/payments/refund_get_spec.rb +19 -0
  150. data/spec/integration/v1/payments/sale_get_spec.rb +18 -0
  151. data/spec/integration/v1/payments/sale_refund_spec.rb +18 -0
  152. data/spec/integration/v1/sync/search_get_spec.rb +34 -0
  153. data/spec/integration/v1/vault/credit_card_create_spec.rb +16 -0
  154. data/spec/integration/v1/vault/credit_card_delete_spec.rb +16 -0
  155. data/spec/integration/v1/vault/credit_card_get_spec.rb +17 -0
  156. data/spec/integration/v1/vault/credit_card_list_spec.rb +18 -0
  157. data/spec/integration/v1/vault/credit_card_update_spec.rb +26 -0
  158. data/spec/integration/v1/vault/vault_helper.rb +28 -0
  159. data/spec/integration/v1/webhooks/available_event_type_list_spec.rb +16 -0
  160. data/spec/integration/v1/webhooks/webhook_create_spec.rb +12 -0
  161. data/spec/integration/v1/webhooks/webhook_delete_spec.rb +13 -0
  162. data/spec/integration/v1/webhooks/webhook_get_spec.rb +16 -0
  163. data/spec/integration/v1/webhooks/webhook_helper.rb +43 -0
  164. data/spec/integration/v1/webhooks/webhook_list_event_subscriptions_spec.rb +16 -0
  165. data/spec/integration/v1/webhooks/webhook_list_spec.rb +15 -0
  166. data/spec/integration/v1/webhooks/webhook_update_spec.rb +29 -0
  167. data/spec/integration/v1/webhooks/webhook_verify_signature_spec.rb +20 -0
  168. data/spec/spec_helper.rb +97 -28
  169. data/spec/unit/paypal_http_client_spec.rb +264 -0
  170. metadata +257 -126
  171. data/Rakefile +0 -15
  172. data/data/DigiCertHighAssuranceEVRootCA.pem +0 -23
  173. data/data/DigiCertSHA2ExtendedValidationServerCA.pem +0 -28
  174. data/data/paypal.crt +0 -171
  175. data/lib/generators/paypal/sdk/USAGE +0 -3
  176. data/lib/generators/paypal/sdk/install_generator.rb +0 -17
  177. data/lib/generators/paypal/sdk/templates/paypal.rb +0 -2
  178. data/lib/generators/paypal/sdk/templates/paypal.yml +0 -29
  179. data/lib/paypal-sdk/core/api/base.rb +0 -169
  180. data/lib/paypal-sdk/core/api/data_types/array_with_block.rb +0 -44
  181. data/lib/paypal-sdk/core/api/data_types/base.rb +0 -225
  182. data/lib/paypal-sdk/core/api/data_types/enum.rb +0 -26
  183. data/lib/paypal-sdk/core/api/data_types/simple_types.rb +0 -52
  184. data/lib/paypal-sdk/core/api/ipn.rb +0 -66
  185. data/lib/paypal-sdk/core/api/rest.rb +0 -177
  186. data/lib/paypal-sdk/core/api.rb +0 -20
  187. data/lib/paypal-sdk/core/authentication.rb +0 -66
  188. data/lib/paypal-sdk/core/config.rb +0 -253
  189. data/lib/paypal-sdk/core/credential/base.rb +0 -27
  190. data/lib/paypal-sdk/core/credential/certificate.rb +0 -32
  191. data/lib/paypal-sdk/core/credential/signature.rb +0 -22
  192. data/lib/paypal-sdk/core/credential/third_party/subject.rb +0 -25
  193. data/lib/paypal-sdk/core/credential/third_party/token.rb +0 -39
  194. data/lib/paypal-sdk/core/credential.rb +0 -16
  195. data/lib/paypal-sdk/core/exceptions.rb +0 -112
  196. data/lib/paypal-sdk/core/logging.rb +0 -50
  197. data/lib/paypal-sdk/core/openid_connect/api.rb +0 -50
  198. data/lib/paypal-sdk/core/openid_connect/data_types.rb +0 -73
  199. data/lib/paypal-sdk/core/openid_connect/get_api.rb +0 -28
  200. data/lib/paypal-sdk/core/openid_connect/request_data_type.rb +0 -52
  201. data/lib/paypal-sdk/core/openid_connect/set_api.rb +0 -36
  202. data/lib/paypal-sdk/core/openid_connect.rb +0 -140
  203. data/lib/paypal-sdk/core/util/http_helper.rb +0 -171
  204. data/lib/paypal-sdk/core/util/oauth_signature.rb +0 -64
  205. data/lib/paypal-sdk/core/util/ordered_hash.rb +0 -165
  206. data/lib/paypal-sdk/core/util.rb +0 -11
  207. data/lib/paypal-sdk/rest/api.rb +0 -23
  208. data/lib/paypal-sdk/rest/data_types.rb +0 -2597
  209. data/lib/paypal-sdk/rest/error_hash.rb +0 -39
  210. data/lib/paypal-sdk/rest/get_api.rb +0 -20
  211. data/lib/paypal-sdk/rest/request_data_type.rb +0 -53
  212. data/lib/paypal-sdk/rest/set_api.rb +0 -42
  213. data/lib/paypal-sdk/rest/version.rb +0 -7
  214. data/lib/paypal-sdk/rest.rb +0 -39
  215. data/lib/paypal-sdk-core.rb +0 -38
  216. data/lib/paypal-sdk-rest.rb +0 -2
  217. data/spec/README.md +0 -22
  218. data/spec/config/cacert.pem +0 -171
  219. data/spec/config/cert_key.pem +0 -33
  220. data/spec/config/paypal.yml +0 -35
  221. data/spec/config/sample_data.yml +0 -3
  222. data/spec/core/api/data_type_spec.rb +0 -289
  223. data/spec/core/api/rest_spec.rb +0 -211
  224. data/spec/core/config_spec.rb +0 -192
  225. data/spec/core/logging_spec.rb +0 -28
  226. data/spec/core/openid_connect_spec.rb +0 -153
  227. data/spec/invoice_examples_spec.rb +0 -38
  228. data/spec/payments_examples_spec.rb +0 -437
  229. data/spec/payouts_examples_spec.rb +0 -74
  230. data/spec/rest/data_types_spec.rb +0 -62
  231. data/spec/rest/error_hash_spec.rb +0 -83
  232. data/spec/subscription_examples_spec.rb +0 -227
  233. data/spec/support/sample_data.rb +0 -5
  234. data/spec/web_profile_examples_spec.rb +0 -106
  235. data/spec/webhooks_examples_spec.rb +0 -93
@@ -0,0 +1,19 @@
1
+ require_relative '../../test_harness'
2
+ require_relative './payments_helper'
3
+
4
+ include PayPal::V1::Payments
5
+
6
+ describe PaymentExecuteRequest do
7
+ it 'successfully makes a request', :skip => 'payer must approve payment in order flows' do
8
+ create_response = PaymentsHelper::create_payment('order', 'paypal')
9
+
10
+ request = PaymentExecuteRequest.new(create_response.result.id)
11
+ request.request_body({
12
+ :payer_id => 'some-payer-id'
13
+ })
14
+
15
+ resp = TestHarness::client.execute(request)
16
+ expect(resp.status_code).to eq(200)
17
+ expect(resp.result).not_to be_nil
18
+ end
19
+ end
@@ -0,0 +1,17 @@
1
+ require_relative '../../test_harness'
2
+ require_relative './payments_helper'
3
+
4
+ include PayPal::V1::Payments
5
+
6
+ describe PaymentGetRequest do
7
+ it 'successfully makes a request' do
8
+ create_response = PaymentsHelper::create_payment('authorize')
9
+
10
+ request = PaymentGetRequest.new(create_response.result.id)
11
+
12
+ resp = TestHarness::client.execute(request)
13
+ expect(resp.status_code).to eq(200)
14
+ expect(resp.result).not_to be_nil
15
+ expect(resp.result.id).to eq(create_response.result.id)
16
+ end
17
+ end
@@ -0,0 +1,16 @@
1
+ require_relative '../../test_harness'
2
+ require_relative './payments_helper'
3
+
4
+ include PayPal::V1::Payments
5
+
6
+ describe PaymentListRequest do
7
+ it 'successfully makes a request' do
8
+ request = PaymentListRequest.new()
9
+ request.count(10)
10
+
11
+ resp = TestHarness::client.execute(request)
12
+ expect(resp.status_code).to eq(200)
13
+ expect(resp.result).not_to be_nil
14
+ expect(resp.result.payments.count <= 10).to be(true)
15
+ end
16
+ end
@@ -0,0 +1,28 @@
1
+ require_relative '../../test_harness'
2
+ require_relative './payments_helper'
3
+
4
+ include PayPal::V1::Payments
5
+
6
+ describe PaymentUpdateRequest do
7
+ it 'successfully makes a request' do
8
+ create_response = PaymentsHelper::create_payment('sale', payment_method='paypal')
9
+
10
+ request = PaymentUpdateRequest.new(create_response.result.id)
11
+ request.request_body([{
12
+ :path => '/transactions/0/amount',
13
+ :op => 'replace',
14
+ :value => {
15
+ :currency => 'USD',
16
+ :total => '11'
17
+ }
18
+ }])
19
+
20
+ resp = TestHarness::client.execute(request)
21
+ expect(resp.status_code).to eq(200)
22
+ expect(resp.result).not_to be_nil
23
+
24
+ get_response = TestHarness::exec(PaymentGetRequest.new(create_response.result.id))
25
+
26
+ expect(get_response.result.transactions[0].amount.total).to eq('11.00')
27
+ end
28
+ end
@@ -0,0 +1,72 @@
1
+ require_relative '../../test_harness'
2
+
3
+ include PayPal::V1::Payments
4
+
5
+ module PaymentsHelper
6
+ class << self
7
+ FAKE_ID = 'O-2FK09787H36911800'
8
+
9
+ def create_auth_capture(auth_id)
10
+ body = {
11
+ :amount => {
12
+ :total => '10',
13
+ :currency => 'USD'
14
+ },
15
+ :is_final_capture => true
16
+ }
17
+
18
+ TestHarness::exec(AuthorizationCaptureRequest.new(auth_id), body)
19
+ end
20
+
21
+ def create_payment(intent, payment_method='credit_card', invoice_number=nil)
22
+ body = {
23
+ :intent => intent,
24
+ :transactions => [{
25
+ :amount => {
26
+ :total => '10',
27
+ :currency => 'USD',
28
+ }
29
+ }],
30
+ :redirect_urls => {
31
+ :cancel_url => 'http://example.com/cancel',
32
+ :return_url => 'http://example.com/return',
33
+ }
34
+ }
35
+
36
+ if invoice_number
37
+ body[:transactions][0][:invoice_number] = invoice_number
38
+ end
39
+
40
+ if payment_method == 'credit_card'
41
+ body[:payer] = {
42
+ :payment_method => 'credit_card',
43
+ :funding_instruments => [{
44
+ :credit_card => {
45
+ :billing_address => {
46
+ :line1 => '123 example ave',
47
+ :line2 => 'apt 4',
48
+ :city => 'Anytown',
49
+ :state => 'CA',
50
+ :postal_code => '12345',
51
+ :country_code => 'US'
52
+ },
53
+ :cvv2 => '617',
54
+ :expire_month => 1,
55
+ :expire_year => 2020,
56
+ :first_name => 'Joe',
57
+ :last_name => 'Shopper',
58
+ :type => 'visa',
59
+ :number => '4422009910903049'
60
+ }
61
+ }]
62
+ }
63
+ else
64
+ body[:payer] = {
65
+ :payment_method => 'paypal'
66
+ }
67
+ end
68
+
69
+ TestHarness::exec(PaymentCreateRequest.new, body)
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,19 @@
1
+ require_relative '../../test_harness'
2
+ require_relative './payments_helper'
3
+
4
+ include PayPal::V1::Payments
5
+
6
+ describe RefundGetRequest do
7
+ it 'successfully makes a request' do
8
+ create_response = PaymentsHelper::create_payment('sale')
9
+ sale_id = create_response.result.transactions[0].related_resources[0].sale.id
10
+
11
+ refund_response = TestHarness::exec(SaleRefundRequest.new(sale_id), {})
12
+ request = RefundGetRequest.new(refund_response.result.id)
13
+
14
+ resp = TestHarness::client.execute(request)
15
+
16
+ expect(resp.status_code).to eq(200)
17
+ expect(resp.result).not_to be_nil
18
+ end
19
+ end
@@ -0,0 +1,18 @@
1
+ require_relative '../../test_harness'
2
+ require_relative './payments_helper'
3
+
4
+ include PayPal::V1::Payments
5
+
6
+ describe SaleGetRequest do
7
+ it 'successfully makes a request' do
8
+ create_response = PaymentsHelper::create_payment('sale')
9
+ sale_id = create_response.result.transactions[0].related_resources[0].sale.id
10
+
11
+ request = SaleGetRequest.new(sale_id)
12
+ resp = TestHarness::client.execute(request)
13
+
14
+ expect(resp.status_code).to eq(200)
15
+ expect(resp.result).not_to be_nil
16
+ expect(resp.result.id).to eq(sale_id)
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ require_relative '../../test_harness'
2
+ require_relative './payments_helper'
3
+
4
+ include PayPal::V1::Payments
5
+
6
+ describe SaleRefundRequest do
7
+ it 'successfully makes a request' do
8
+ create_response = PaymentsHelper::create_payment('sale')
9
+ sale_id = create_response.result.transactions[0].related_resources[0].sale.id
10
+
11
+ request = SaleRefundRequest.new(sale_id)
12
+ request.request_body({})
13
+
14
+ resp = TestHarness::client.execute(request)
15
+ expect(resp.status_code).to eq(201)
16
+ expect(resp.result).not_to be_nil
17
+ end
18
+ end
@@ -0,0 +1,34 @@
1
+ require_relative '../../test_harness'
2
+
3
+ include PayPal::V1::Sync
4
+
5
+ describe SearchGetRequest do
6
+ it 'retreives a specific transaction' do
7
+ txn_id = '4LJ583775B2362642'
8
+ req = SearchGetRequest.new
9
+
10
+ req.transaction_id(txn_id)
11
+
12
+ search_response = TestHarness::client.execute(req)
13
+ expect(search_response.status_code).to eq(200)
14
+ expect(search_response.result).not_to be_nil
15
+
16
+ result = search_response.result
17
+ expect(result.transaction_details).not_to be_nil
18
+ expect(result.total_items).to eq(1)
19
+
20
+ expect(result.transaction_details[0].transaction_info.transaction_id).to eq(txn_id)
21
+ end
22
+
23
+ it 'retreives a range of transactions' do
24
+ request = SearchGetRequest.new()
25
+ request.start_date("2018-01-22T00:00:00+00:00")
26
+ request.end_date("2018-01-23T00:00:00+00:00")
27
+
28
+ resp = TestHarness::client.execute(request)
29
+
30
+ expect(resp.status_code).to eq(200)
31
+ expect(resp.result).not_to be_nil
32
+ expect(resp.result.transaction_details.count).to eq(77)
33
+ end
34
+ end
@@ -0,0 +1,16 @@
1
+ require_relative '../../test_harness'
2
+ require_relative './vault_helper'
3
+ require 'json'
4
+
5
+ include PayPal::V1::Vault
6
+
7
+ describe CreditCardCreateRequest do
8
+ it 'successfully makes a request' do
9
+ resp = VaultHelper::create_card
10
+
11
+ expect(resp.status_code).to eq(201)
12
+ expect(resp.result).not_to be_nil
13
+
14
+ expect(resp.result.type).to eq('visa')
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ require_relative '../../test_harness'
2
+ require_relative './vault_helper'
3
+ require 'json'
4
+
5
+ include PayPal::V1::Vault
6
+
7
+ describe CreditCardDeleteRequest do
8
+ it 'successfully makes a request' do
9
+ create_resp = VaultHelper::create_card
10
+
11
+ request = CreditCardDeleteRequest.new(create_resp.result.id)
12
+
13
+ resp = TestHarness::client.execute(request)
14
+ expect(resp.status_code).to eq(204)
15
+ end
16
+ end
@@ -0,0 +1,17 @@
1
+ require_relative '../../test_harness'
2
+ require_relative './vault_helper'
3
+
4
+ include PayPal::V1::Vault
5
+
6
+ describe CreditCardGetRequest do
7
+ it 'successfully makes a request' do
8
+ create_resp = VaultHelper::create_card
9
+ request = CreditCardGetRequest.new(create_resp.result.id)
10
+
11
+ resp = TestHarness::client.execute(request)
12
+ expect(resp.status_code).to eq(200)
13
+ expect(resp.result).not_to be_nil
14
+
15
+ expect(resp.result.id).to eq(create_resp.result.id)
16
+ end
17
+ end
@@ -0,0 +1,18 @@
1
+ require_relative '../../test_harness'
2
+ require_relative './vault_helper'
3
+
4
+ include PayPal::V1::Vault
5
+
6
+ describe CreditCardListRequest do
7
+ it 'successfully makes a request' do
8
+ VaultHelper::create_card
9
+
10
+ request = CreditCardListRequest.new()
11
+
12
+ resp = TestHarness::client.execute(request)
13
+
14
+ expect(resp.status_code).to eq(200)
15
+ expect(resp.result).not_to be_nil
16
+ expect(resp.result.items.count > 0).to be(true)
17
+ end
18
+ end
@@ -0,0 +1,26 @@
1
+ require_relative '../../test_harness'
2
+ require_relative './vault_helper'
3
+ require 'json'
4
+
5
+ include PayPal::V1::Vault
6
+
7
+ describe CreditCardUpdateRequest do
8
+ it 'successfully makes a request' do
9
+ create_resp = VaultHelper::create_card
10
+
11
+ request = CreditCardUpdateRequest.new(create_resp.result.id)
12
+ request.request_body([{
13
+ :op => 'add',
14
+ :path => '/billing_address/line1',
15
+ :value => '53 N Main st'
16
+ }])
17
+
18
+ resp = TestHarness::client.execute(request)
19
+ expect(resp.status_code).to eq(200)
20
+ expect(resp.result).not_to be_nil
21
+
22
+ get_resp = TestHarness::exec(CreditCardGetRequest.new(create_resp.result.id))
23
+
24
+ expect(get_resp.result.billing_address.line1).to eq('53 N Main st')
25
+ end
26
+ end
@@ -0,0 +1,28 @@
1
+ require_relative '../../test_harness'
2
+
3
+ include PayPal::V1::Vault
4
+
5
+ module VaultHelper
6
+ class << self
7
+ def create_card
8
+ body = {
9
+ :number => '4417119669820331',
10
+ :type => 'visa',
11
+ :expire_month => '11',
12
+ :expire_year => '2055',
13
+ :first_name => 'Joe',
14
+ :last_name => 'Shopper',
15
+ :billing_address => {
16
+ :line1 => '123 main st',
17
+ :city => 'San Francisco',
18
+ :country_code => 'US',
19
+ :postal_code => '94117',
20
+ :state => 'CA',
21
+ :phone => '123-456-7890'
22
+ }
23
+ }
24
+
25
+ TestHarness::exec(CreditCardCreateRequest.new(), body)
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,16 @@
1
+ require_relative '../../test_harness'
2
+ require 'json'
3
+
4
+ include PayPal::V1::Webhooks
5
+
6
+ describe AvailableEventTypeListRequest do
7
+ it 'successfully makes a request' do
8
+ request = AvailableEventTypeListRequest.new()
9
+
10
+ resp = TestHarness::client.execute(request)
11
+ expect(resp.status_code).to eq(200)
12
+ expect(resp.result).not_to be_nil
13
+ expect(resp.result.event_types).not_to be_nil
14
+ expect(resp.result.event_types.count > 0).to be(true)
15
+ end
16
+ end
@@ -0,0 +1,12 @@
1
+ require_relative '../../test_harness'
2
+ require_relative './webhook_helper'
3
+
4
+ include PayPal::V1::Webhooks
5
+
6
+ describe WebhookCreateRequest do
7
+ it 'successfully makes a request' do
8
+ resp = WebhookHelper::create_webhook
9
+ expect(resp.status_code).to eq(201)
10
+ expect(resp.result).not_to be_nil
11
+ end
12
+ end
@@ -0,0 +1,13 @@
1
+ require_relative '../../test_harness'
2
+ require_relative './webhook_helper'
3
+
4
+ include PayPal::V1::Webhooks
5
+
6
+ describe WebhookDeleteRequest do
7
+ it 'successfully makes a request' do
8
+ create_resp = WebhookHelper::create_webhook
9
+
10
+ resp = WebhookHelper::delete_webhook(create_resp.result.id)
11
+ expect(resp.status_code).to eq(204)
12
+ end
13
+ end
@@ -0,0 +1,16 @@
1
+ require_relative '../../test_harness'
2
+ require_relative './webhook_helper'
3
+
4
+ include PayPal::V1::Webhooks
5
+
6
+ describe WebhookGetRequest do
7
+ it 'successfully makes a request' do
8
+ create_resp = WebhookHelper::create_webhook
9
+ request = WebhookGetRequest.new(create_resp.result.id)
10
+
11
+ resp = TestHarness::client.execute(request)
12
+ expect(resp.status_code).to eq(200)
13
+ expect(resp.result).not_to be_nil
14
+ expect(resp.result.id).to eq(create_resp.result.id)
15
+ end
16
+ end
@@ -0,0 +1,43 @@
1
+ require_relative '../../test_harness'
2
+
3
+ include PayPal::V1::Webhooks
4
+
5
+ module WebhookHelper
6
+ class << self
7
+ def create_webhook
8
+ delete_all_webhooks
9
+
10
+ url = "https://example.com/webook_#{Random.new.rand(1000)}"
11
+ body = {
12
+ :url => url,
13
+ :event_types => [
14
+ {
15
+ :name => 'PAYMENT.AUTHORIZATION.CREATED',
16
+ },
17
+ {
18
+ :name => 'PAYMENT.AUTHORIZATION.VOIDED',
19
+ },
20
+ ]
21
+ }
22
+
23
+ TestHarness::exec(WebhookCreateRequest.new, body)
24
+ end
25
+
26
+ def delete_all_webhooks
27
+ list_resp = TestHarness::exec(WebhookListRequest.new)
28
+
29
+ list_resp.result.webhooks.each do |webhook|
30
+ begin
31
+ delete_webhook(webhook.id)
32
+ puts "Deleted webhook #{webhook.id}"
33
+ rescue Exception => e
34
+ puts "Failed to delete webhook #{webhook.id}"
35
+ end
36
+ end
37
+ end
38
+
39
+ def delete_webhook(id)
40
+ TestHarness::exec(WebhookDeleteRequest.new(id))
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,16 @@
1
+ require_relative '../../test_harness'
2
+ require_relative './webhook_helper'
3
+
4
+ include PayPal::V1::Webhooks
5
+
6
+ describe WebhookListEventSubscriptionsRequest do
7
+ it 'successfully makes a request' do
8
+ create_resp = WebhookHelper::create_webhook
9
+ request = WebhookListEventSubscriptionsRequest.new(create_resp.result.id)
10
+ resp = TestHarness::client.execute(request)
11
+
12
+ expect(resp.status_code).to eq(200)
13
+ expect(resp.result).not_to be_nil
14
+ expect(resp.result.event_types.count).to eq(2)
15
+ end
16
+ end
@@ -0,0 +1,15 @@
1
+ require_relative '../../test_harness'
2
+ require_relative './webhook_helper'
3
+
4
+ include PayPal::V1::Webhooks
5
+
6
+ describe WebhookListRequest do
7
+ it 'successfully makes a request' do
8
+ create_resp = WebhookHelper::create_webhook
9
+ list_resp = TestHarness::exec(WebhookListRequest.new)
10
+
11
+ expect(list_resp.status_code).to eq(200)
12
+ expect(list_resp.result).not_to be_nil
13
+ expect(list_resp.result.webhooks.count).to eq(1)
14
+ end
15
+ end
@@ -0,0 +1,29 @@
1
+ require_relative '../../test_harness'
2
+ require_relative './webhook_helper'
3
+
4
+ include PayPal::V1::Webhooks
5
+
6
+ describe WebhookUpdateRequest do
7
+ def build_request_body
8
+ return JSON.parse('{"from":"JTZh8uy7C 4idz4I","op":"hFua8SzJ27wJPh1KUgw","path":"xPyhuQ0fuQzyeKz","value":{}}')
9
+ end
10
+
11
+ it 'successfully makes a request' do
12
+ create_resp = WebhookHelper::create_webhook
13
+
14
+ url = 'https://example.com/new'
15
+ request = WebhookUpdateRequest.new(create_resp.result.id)
16
+ request.request_body([{
17
+ :op => 'replace',
18
+ :path => '/url',
19
+ :value => url
20
+ }])
21
+
22
+ resp = TestHarness::client.execute(request)
23
+ expect(resp.status_code).to eq(200)
24
+ expect(resp.result).not_to be_nil
25
+
26
+ get_resp = TestHarness::exec(WebhookGetRequest.new(create_resp.result.id))
27
+ expect(get_resp.result.url).to eq('https://example.com/new')
28
+ end
29
+ end
@@ -0,0 +1,20 @@
1
+ require_relative '../../test_harness'
2
+ require_relative './webhook_helper'
3
+
4
+
5
+ include PayPal::V1::Webhooks
6
+
7
+ describe WebhookVerifySignatureRequest do
8
+ def build_request_body
9
+ return JSON.parse('{ "transmission_id": "d938e770-8046-11e6-8103-6b62a8a99ac4", "transmission_time": "2016-09-21T22:00:46Z", "cert_url": "https://api.sandbox.paypal.com/v1/notifications/certs/CERT-360caa42-fca2a594-a5cafa77", "auth_algo": "SHA256withRSA", "transmission_sig": "eDOnWUj9FXOnr2naQnrdL7bhgejVSTwRbwbJ0kuk5wAtm2ZYkr7w5BSUDO7e5ZOsqLwN3sPn3RV85Jd9pjHuTlpuXDLYk+l5qiViPbaaC0tLV+8C/zbDjg2WCfvtf2NmFT8CHgPPQAByUqiiTY+RJZPPQC5np7j7WuxcegsJLeWStRAofsDLiSKrzYV3CKZYtNoNnRvYmSFMkYp/5vk4xGcQLeYNV1CC2PyqraZj8HGG6Y+KV4trhreV9VZDn+rPtLDZTbzUohie1LpEy31k2dg+1szpWaGYOz+MRb40U04oD7fD69vghCrDTYs5AsuFM2+WZtsMDmYGI0pxLjn2yw==", "webhook_id": "1JE4291016473214C", "webhook_event": { "id": "WH-9UG43882HX7271132-6E0871324L7949614", "event_version": "1.0", "create_time": "2016-09-21T22:00:45Z", "resource_type": "sale", "event_type": "PAYMENT.SALE.COMPLETED", "summary": "Payment completed for $ 21.0 USD", "resource": { "id": "80F85758S3080410K", "state": "completed", "amount": { "total": "21.00", "currency": "USD", "details": { "subtotal": "17.50", "tax": "1.30", "shipping": "2.20" } }, "payment_mode": "INSTANT_TRANSFER", "protection_eligibility": "ELIGIBLE", "protection_eligibility_type": "ITEM_NOT_RECEIVED_ELIGIBLE,UNAUTHORIZED_PAYMENT_ELIGIBLE", "transaction_fee": { "value": "0.91", "currency": "USD" }, "invoice_number": "57e3028db8d1b", "custom": "", "parent_payment": "PAY-7F371669SL612941HK7RQFDQ", "create_time": "2016-09-21T21:59:02Z", "update_time": "2016-09-21T22:00:06Z", "links": [{ "href": "https://api.sandbox.paypal.com/v1/payments/sale/80F85758S3080410K", "rel": "self", "method": "GET" }, { "href": "https://api.sandbox.paypal.com/v1/payments/sale/80F85758S3080410K/refund", "rel": "refund", "method": "POST" }, { "href": "https://api.sandbox.paypal.com/v1/payments/payment/PAY-7F371669SL612941HK7RQFDQ", "rel": "parent_payment", "method": "GET" }] }, "links": [{ "href": "https://api.sandbox.paypal.com/v1/notifications/webhooks-events/WH-9UG43882HX7271132-6E0871324L7949614", "rel": "self", "method": "GET" }, { "href": "https://api.sandbox.paypal.com/v1/notifications/webhooks-events/WH-9UG43882HX7271132-6E0871324L7949614/resend", "rel": "resend", "method": "POST" }] } }')
10
+ end
11
+
12
+ it 'successfully makes a request' do
13
+ request = WebhookVerifySignatureRequest.new()
14
+ request.request_body(build_request_body)
15
+
16
+ resp = TestHarness::client.execute(request)
17
+ expect(resp.status_code).to eq(200)
18
+ expect(resp.result).not_to be_nil
19
+ end
20
+ end