paypal-payment 0.1.2

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.
Files changed (245) hide show
  1. data/.gitignore +19 -0
  2. data/.rspec +1 -0
  3. data/Gemfile +18 -0
  4. data/Guardfile +24 -0
  5. data/README.rdoc +107 -0
  6. data/Rakefile +5 -0
  7. data/docs/AdaptivePayments.rdoc +84 -0
  8. data/docs/PP_NVPAPI_DeveloperGuide.pdf +0 -0
  9. data/docs/PP_WPP_IntegrationGuide.pdf +0 -0
  10. data/docs/adaptive_payments.md +55 -0
  11. data/docs/api.txt +67 -0
  12. data/docs/design.txt +38 -0
  13. data/docs/express_checkout.md +172 -0
  14. data/docs/requirements.txt +32 -0
  15. data/lib/paypal-payment.rb +10 -0
  16. data/lib/paypal/adaptive_payments.rb +31 -0
  17. data/lib/paypal/adaptive_payments/api.rb +51 -0
  18. data/lib/paypal/adaptive_payments/base.rb +11 -0
  19. data/lib/paypal/adaptive_payments/client_details.rb +14 -0
  20. data/lib/paypal/adaptive_payments/display_options.rb +10 -0
  21. data/lib/paypal/adaptive_payments/funding_constraint.rb +11 -0
  22. data/lib/paypal/adaptive_payments/funding_type_info.rb +8 -0
  23. data/lib/paypal/adaptive_payments/funding_type_list.rb +11 -0
  24. data/lib/paypal/adaptive_payments/initiating_entity.rb +11 -0
  25. data/lib/paypal/adaptive_payments/institution_customer.rb +13 -0
  26. data/lib/paypal/adaptive_payments/invoice_data.rb +13 -0
  27. data/lib/paypal/adaptive_payments/invoice_item.rb +11 -0
  28. data/lib/paypal/adaptive_payments/payment.rb +105 -0
  29. data/lib/paypal/adaptive_payments/payment_info.rb +18 -0
  30. data/lib/paypal/adaptive_payments/payment_info_list.rb +11 -0
  31. data/lib/paypal/adaptive_payments/payment_options.rb +39 -0
  32. data/lib/paypal/adaptive_payments/phone.rb +9 -0
  33. data/lib/paypal/adaptive_payments/preapproval.rb +52 -0
  34. data/lib/paypal/adaptive_payments/receiver.rb +17 -0
  35. data/lib/paypal/adaptive_payments/receiver_list.rb +49 -0
  36. data/lib/paypal/adaptive_payments/receiver_options.rb +19 -0
  37. data/lib/paypal/adaptive_payments/request.rb +51 -0
  38. data/lib/paypal/adaptive_payments/response.rb +38 -0
  39. data/lib/paypal/adaptive_payments/response/address.rb +13 -0
  40. data/lib/paypal/adaptive_payments/response/address_list.rb +11 -0
  41. data/lib/paypal/adaptive_payments/response/base_address.rb +13 -0
  42. data/lib/paypal/adaptive_payments/response/details.rb +19 -0
  43. data/lib/paypal/adaptive_payments/response/error_list.rb +15 -0
  44. data/lib/paypal/adaptive_payments/response/pay.rb +31 -0
  45. data/lib/paypal/adaptive_payments/response/pay_error.rb +16 -0
  46. data/lib/paypal/adaptive_payments/response/pay_error_list.rb +15 -0
  47. data/lib/paypal/adaptive_payments/response/pay_options.rb +7 -0
  48. data/lib/paypal/adaptive_payments/response/preapproval.rb +47 -0
  49. data/lib/paypal/adaptive_payments/response/refund.rb +16 -0
  50. data/lib/paypal/adaptive_payments/response/refund_info.rb +24 -0
  51. data/lib/paypal/adaptive_payments/response/refund_info_list.rb +11 -0
  52. data/lib/paypal/adaptive_payments/response/shipping_address.rb +11 -0
  53. data/lib/paypal/adaptive_payments/sender_identifier.rb +7 -0
  54. data/lib/paypal/adaptive_payments/sender_options.rb +8 -0
  55. data/lib/paypal/api.rb +94 -0
  56. data/lib/paypal/cacert.pem +3987 -0
  57. data/lib/paypal/common.rb +11 -0
  58. data/lib/paypal/common/base.rb +83 -0
  59. data/lib/paypal/common/error_data.rb +15 -0
  60. data/lib/paypal/common/request.rb +45 -0
  61. data/lib/paypal/common/request_envelope.rb +13 -0
  62. data/lib/paypal/common/response.rb +34 -0
  63. data/lib/paypal/common/response_envelope.rb +19 -0
  64. data/lib/paypal/express_checkout.rb +19 -0
  65. data/lib/paypal/express_checkout/account.rb +16 -0
  66. data/lib/paypal/express_checkout/api.rb +43 -0
  67. data/lib/paypal/express_checkout/base.rb +37 -0
  68. data/lib/paypal/express_checkout/billing.rb +7 -0
  69. data/lib/paypal/express_checkout/callback.rb +17 -0
  70. data/lib/paypal/express_checkout/checkout.rb +144 -0
  71. data/lib/paypal/express_checkout/fields.rb +449 -0
  72. data/lib/paypal/express_checkout/fmf.rb +7 -0
  73. data/lib/paypal/express_checkout/payment.rb +76 -0
  74. data/lib/paypal/express_checkout/payment_item.rb +7 -0
  75. data/lib/paypal/express_checkout/recurring.rb +131 -0
  76. data/lib/paypal/express_checkout/request.rb +212 -0
  77. data/lib/paypal/express_checkout/response.rb +52 -0
  78. data/lib/paypal/express_checkout/response/account.rb +30 -0
  79. data/lib/paypal/express_checkout/response/address.rb +29 -0
  80. data/lib/paypal/express_checkout/response/authorization.rb +25 -0
  81. data/lib/paypal/express_checkout/response/base.rb +125 -0
  82. data/lib/paypal/express_checkout/response/callback_request.rb +10 -0
  83. data/lib/paypal/express_checkout/response/callback_response.rb +8 -0
  84. data/lib/paypal/express_checkout/response/capture.rb +14 -0
  85. data/lib/paypal/express_checkout/response/checkout.rb +11 -0
  86. data/lib/paypal/express_checkout/response/details.rb +35 -0
  87. data/lib/paypal/express_checkout/response/manage_profile.rb +9 -0
  88. data/lib/paypal/express_checkout/response/notification.rb +85 -0
  89. data/lib/paypal/express_checkout/response/payment.rb +24 -0
  90. data/lib/paypal/express_checkout/response/profile.rb +58 -0
  91. data/lib/paypal/express_checkout/response/reference.rb +11 -0
  92. data/lib/paypal/express_checkout/response/refund.rb +13 -0
  93. data/lib/paypal/express_checkout/response/search.rb +33 -0
  94. data/lib/paypal/express_checkout/response/transaction_details.rb +11 -0
  95. data/lib/paypal/express_checkout/shipping_option.rb +7 -0
  96. data/lib/paypal/express_checkout/utils.rb +26 -0
  97. data/lib/paypal/express_checkout/version.rb +10 -0
  98. data/lib/paypal/invoice.rb +22 -0
  99. data/lib/paypal/invoice/api.rb +51 -0
  100. data/lib/paypal/invoice/base.rb +11 -0
  101. data/lib/paypal/invoice/base_address.rb +11 -0
  102. data/lib/paypal/invoice/business_info.rb +17 -0
  103. data/lib/paypal/invoice/date_range.rb +8 -0
  104. data/lib/paypal/invoice/invoice.rb +117 -0
  105. data/lib/paypal/invoice/invoice_details.rb +38 -0
  106. data/lib/paypal/invoice/invoice_item.rb +13 -0
  107. data/lib/paypal/invoice/invoice_item_list.rb +10 -0
  108. data/lib/paypal/invoice/invoice_summary.rb +22 -0
  109. data/lib/paypal/invoice/invoice_summary_list.rb +10 -0
  110. data/lib/paypal/invoice/other_payment_details.rb +13 -0
  111. data/lib/paypal/invoice/payment_details.rb +16 -0
  112. data/lib/paypal/invoice/paypal_payment_details.rb +11 -0
  113. data/lib/paypal/invoice/request.rb +43 -0
  114. data/lib/paypal/invoice/response.rb +27 -0
  115. data/lib/paypal/invoice/response/details.rb +23 -0
  116. data/lib/paypal/invoice/response/invoice.rb +10 -0
  117. data/lib/paypal/invoice/response/search.rb +15 -0
  118. data/lib/paypal/invoice/search.rb +19 -0
  119. data/lib/paypal/invoice/search_parameters.rb +20 -0
  120. data/lib/paypal/permissions.rb +12 -0
  121. data/lib/paypal/permissions/api.rb +60 -0
  122. data/lib/paypal/permissions/base.rb +11 -0
  123. data/lib/paypal/permissions/permission.rb +33 -0
  124. data/lib/paypal/permissions/personal_data.rb +17 -0
  125. data/lib/paypal/permissions/request.rb +52 -0
  126. data/lib/paypal/permissions/response.rb +24 -0
  127. data/lib/paypal/permissions/response/permission.rb +14 -0
  128. data/lib/paypal/permissions/response/personal_data.rb +8 -0
  129. data/lib/paypal/permissions/response/token.rb +10 -0
  130. data/lib/paypal/permissions/token.rb +13 -0
  131. data/lib/paypal/recurring.rb +110 -0
  132. data/lib/paypal/request.rb +82 -0
  133. data/lib/paypal/version.rb +8 -0
  134. data/paypal-payment.gemspec +30 -0
  135. data/spec/fixtures/adaptive_payments/payment/create/failure.yml +62 -0
  136. data/spec/fixtures/adaptive_payments/payment/create/success.yml +58 -0
  137. data/spec/fixtures/adaptive_payments/payment/details/success.yml +113 -0
  138. data/spec/fixtures/adaptive_payments/payment/pay/failure.yml +62 -0
  139. data/spec/fixtures/adaptive_payments/payment/pay/preapproval.yml +58 -0
  140. data/spec/fixtures/adaptive_payments/payment/pay/success.yml +58 -0
  141. data/spec/fixtures/adaptive_payments/payment/pay/with_pay_key.yml +58 -0
  142. data/spec/fixtures/adaptive_payments/payment/refund/failure.yml +62 -0
  143. data/spec/fixtures/adaptive_payments/payment/refund/success.yml +58 -0
  144. data/spec/fixtures/adaptive_payments/payment/shipping_addresses/success.yml +113 -0
  145. data/spec/fixtures/adaptive_payments/payment_options/get/success.yml +174 -0
  146. data/spec/fixtures/adaptive_payments/payment_options/set/success.yml +113 -0
  147. data/spec/fixtures/adaptive_payments/preapproval/create/success.yml +58 -0
  148. data/spec/fixtures/adaptive_payments/preapproval/details/success.yml +168 -0
  149. data/spec/fixtures/express_checkout/account/balance/success.yml +32 -0
  150. data/spec/fixtures/express_checkout/account/pal_details/success.yml +32 -0
  151. data/spec/fixtures/express_checkout/checkout/checkout/sales/success.yml +61 -0
  152. data/spec/fixtures/express_checkout/checkout/checkout/success.yml +32 -0
  153. data/spec/fixtures/express_checkout/checkout/details/failure.yml +32 -0
  154. data/spec/fixtures/express_checkout/checkout/details/success.yml +61 -0
  155. data/spec/fixtures/express_checkout/checkout/pay/sales/success.yml +61 -0
  156. data/spec/fixtures/express_checkout/checkout/pay/success.yml +61 -0
  157. data/spec/fixtures/express_checkout/payment/details/failure.yml +32 -0
  158. data/spec/fixtures/express_checkout/payment/details/success.yml +32 -0
  159. data/spec/fixtures/express_checkout/payment/refund/failure.yml +32 -0
  160. data/spec/fixtures/express_checkout/payment/refund/success.yml +32 -0
  161. data/spec/fixtures/express_checkout/payment/search/success.yml +32 -0
  162. data/spec/fixtures/express_checkout/recurring/cancel/failure.yml +32 -0
  163. data/spec/fixtures/express_checkout/recurring/cancel/success.yml +32 -0
  164. data/spec/fixtures/express_checkout/recurring/checkout/success.yml +32 -0
  165. data/spec/fixtures/express_checkout/recurring/create_profile/failure.yml +32 -0
  166. data/spec/fixtures/express_checkout/recurring/create_profile/success.yml +61 -0
  167. data/spec/fixtures/express_checkout/recurring/profile/failure.yml +32 -0
  168. data/spec/fixtures/express_checkout/recurring/profile/success.yml +32 -0
  169. data/spec/fixtures/express_checkout/recurring/reactivate/failure.yml +32 -0
  170. data/spec/fixtures/express_checkout/recurring/reactivate/success.yml +32 -0
  171. data/spec/fixtures/express_checkout/recurring/suspend/failure.yml +32 -0
  172. data/spec/fixtures/express_checkout/recurring/suspend/success.yml +32 -0
  173. data/spec/fixtures/express_checkout/recurring/update_profile/failure.yml +32 -0
  174. data/spec/fixtures/express_checkout/recurring/update_profile/profile.yml +32 -0
  175. data/spec/fixtures/express_checkout/recurring/update_profile/success.yml +32 -0
  176. data/spec/fixtures/invoice/cancel/success.yml +174 -0
  177. data/spec/fixtures/invoice/create/failure.yml +62 -0
  178. data/spec/fixtures/invoice/create/success.yml +60 -0
  179. data/spec/fixtures/invoice/create_and_send/failure.yml +62 -0
  180. data/spec/fixtures/invoice/create_and_send/success.yml +60 -0
  181. data/spec/fixtures/invoice/details/success.yml +117 -0
  182. data/spec/fixtures/invoice/mark_as_paid/failure.yml +180 -0
  183. data/spec/fixtures/invoice/mark_as_paid/success.yml +174 -0
  184. data/spec/fixtures/invoice/mark_as_refunded/success.yml +174 -0
  185. data/spec/fixtures/invoice/mark_as_unpaid/success.yml +231 -0
  186. data/spec/fixtures/invoice/search/success.yml +174 -0
  187. data/spec/fixtures/invoice/send/success.yml +117 -0
  188. data/spec/fixtures/invoice/update/failure.yml +119 -0
  189. data/spec/fixtures/invoice/update/success.yml +117 -0
  190. data/spec/fixtures/ipn/express_checkout.json +35 -0
  191. data/spec/fixtures/ipn/recurring_payment.json +44 -0
  192. data/spec/fixtures/ipn/recurring_payment_profile_created.json +31 -0
  193. data/spec/fixtures/ipn/recurring_payment_profile_created_with_initial_amount.json +33 -0
  194. data/spec/fixtures/ipn/recurring_payment_skipped.json +30 -0
  195. data/spec/fixtures/ipn/recurring_payment_with_initial_amount.json +44 -0
  196. data/spec/fixtures/notification/failure.yml +50 -0
  197. data/spec/fixtures/notification/success.yml +50 -0
  198. data/spec/paypal/adaptive_payments/api_spec.rb +20 -0
  199. data/spec/paypal/adaptive_payments/payment/base_spec.rb +28 -0
  200. data/spec/paypal/adaptive_payments/payment/create_spec.rb +63 -0
  201. data/spec/paypal/adaptive_payments/payment/details_spec.rb +34 -0
  202. data/spec/paypal/adaptive_payments/payment/pay_spec.rb +97 -0
  203. data/spec/paypal/adaptive_payments/payment/refund_spec.rb +49 -0
  204. data/spec/paypal/adaptive_payments/payment/shipping_addresses_spec.rb +30 -0
  205. data/spec/paypal/adaptive_payments/payment_options/get_spec.rb +33 -0
  206. data/spec/paypal/adaptive_payments/payment_options/set_spec.rb +66 -0
  207. data/spec/paypal/adaptive_payments/preapproval/cancel_spec.rb +34 -0
  208. data/spec/paypal/adaptive_payments/preapproval/create_spec.rb +39 -0
  209. data/spec/paypal/adaptive_payments/preapproval/details_spec.rb +34 -0
  210. data/spec/paypal/adaptive_payments/request_spec.rb +48 -0
  211. data/spec/paypal/api_spec.rb +78 -0
  212. data/spec/paypal/common/base_spec.rb +157 -0
  213. data/spec/paypal/common/error_data_spec.rb +0 -0
  214. data/spec/paypal/common/request_envelope_spec.rb +6 -0
  215. data/spec/paypal/common/response_spec.rb +0 -0
  216. data/spec/paypal/express_checkout/account/balance_spec.rb +25 -0
  217. data/spec/paypal/express_checkout/account/pal_details_spec.rb +20 -0
  218. data/spec/paypal/express_checkout/checkout/checkout_spec.rb +73 -0
  219. data/spec/paypal/express_checkout/checkout/details_spec.rb +70 -0
  220. data/spec/paypal/express_checkout/checkout/pay_spec.rb +68 -0
  221. data/spec/paypal/express_checkout/fields_spec.rb +138 -0
  222. data/spec/paypal/express_checkout/payment/refund_spec.rb +34 -0
  223. data/spec/paypal/express_checkout/payment/search_spec.rb +24 -0
  224. data/spec/paypal/express_checkout/payment/transaction_details_spec.rb +30 -0
  225. data/spec/paypal/express_checkout/payment_spec.rb +13 -0
  226. data/spec/paypal/express_checkout/recurring/create_profile_spec.rb +50 -0
  227. data/spec/paypal/express_checkout/recurring/manage_profile_spec.rb +62 -0
  228. data/spec/paypal/express_checkout/recurring/profile_spec.rb +44 -0
  229. data/spec/paypal/express_checkout/recurring/update_profile_spec.rb +50 -0
  230. data/spec/paypal/express_checkout/request_spec.rb +221 -0
  231. data/spec/paypal/express_checkout/response/account_spec.rb +33 -0
  232. data/spec/paypal/express_checkout/response/base_spec.rb +253 -0
  233. data/spec/paypal/invoice/cancel_spec.rb +38 -0
  234. data/spec/paypal/invoice/create_and_send_spec.rb +58 -0
  235. data/spec/paypal/invoice/create_spec.rb +58 -0
  236. data/spec/paypal/invoice/details_spec.rb +39 -0
  237. data/spec/paypal/invoice/mark_as_paid_spec.rb +75 -0
  238. data/spec/paypal/invoice/mark_as_refunded_spec.rb +47 -0
  239. data/spec/paypal/invoice/mark_as_unpaid_spec.rb +43 -0
  240. data/spec/paypal/invoice/search_spec.rb +70 -0
  241. data/spec/paypal/invoice/send_spec.rb +48 -0
  242. data/spec/paypal/invoice/update_spec.rb +72 -0
  243. data/spec/paypal/request_spec.rb +45 -0
  244. data/spec/spec_helper.rb +35 -0
  245. metadata +546 -0
@@ -0,0 +1,10 @@
1
+ module PayPal::Invoice
2
+ class InvoiceSummaryList < PayPal::Invoice::Base
3
+
4
+ attr_accessor :invoice
5
+
6
+ def set_invoice(value)
7
+ self.invoice = build_value(InvoiceSummary, value)
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,13 @@
1
+ module PayPal::Invoice
2
+ class OtherPaymentDetails < PayPal::Invoice::Base
3
+
4
+ attr_accessor :method
5
+ attr_accessor :note
6
+ attr_accessor :date
7
+
8
+ def set_date(value)
9
+ self.date = build_datetime(value)
10
+ end
11
+
12
+ end
13
+ end
@@ -0,0 +1,16 @@
1
+ module PayPal::Invoice
2
+ class PaymentDetails < PayPal::Invoice::Base
3
+
4
+ attr_accessor :via_paypal
5
+ attr_accessor :paypal_payment
6
+ attr_accessor :other_payment
7
+
8
+ def set_paypal_payment(value)
9
+ self.paypal_payment = build_value(PaypalPaymentDetails, value)
10
+ end
11
+
12
+ def set_other_payment(value)
13
+ self.other_payment = build_value(OtherPaymentDetails, value)
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,11 @@
1
+ module PayPal::Invoice
2
+ class PayPalPaymentDetails < PayPal::Invoice::Base
3
+
4
+ attr_accessor :transaction_id
5
+ attr_accessor :date
6
+
7
+ def set_date(value)
8
+ self.date = build_datetime(value)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,43 @@
1
+ module PayPal::Invoice
2
+ class Request < PayPal::Common::Request
3
+
4
+ METHODS = {
5
+ :create => 'CreateInvoice',
6
+ :send => 'SendInvoice',
7
+ :create_and_send => 'CreateAndSendInvoice',
8
+ :update => 'UpdateInvoice',
9
+ :details => 'GetInvoiceDetails',
10
+ :cancel => 'CancelInvoice',
11
+ :search => 'SearchInvoices',
12
+ :mark_as_paid => 'MarkInvoiceAsPaid',
13
+ :mark_as_unpaid => 'MarkInvoiceAsUnpaid',
14
+ :mark_as_refunded => 'MarkInvoiceAsRefunded'
15
+ }
16
+
17
+ PAYMENT_TERMS = {
18
+ :due_on_receipt => 'DueOnReceipt',
19
+ :due_on_date_specified => 'DueOnDateSpecified',
20
+ :net10 => 'Net10',
21
+ :net15 => 'Net15',
22
+ :net30 => 'Net30',
23
+ :net45 => 'Net45'
24
+ }
25
+
26
+ FEE_PAYERS = {
27
+ :sender => 'SENDER',
28
+ :primary_receiver => 'PRIMARYRECEIVER',
29
+ :each_receiver => 'EACHRECEIVER',
30
+ :secondary_only => 'SECONDARYONLY'
31
+ }
32
+
33
+ def api
34
+ PayPal::Invoice::Api
35
+ end
36
+
37
+ # Returns the actual api endpoint base on method
38
+ #
39
+ def method_endpoint(method)
40
+ "#{api.api_endpoint}/#{METHODS.fetch(method, method.to_s)}"
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,27 @@
1
+ module PayPal::Invoice
2
+ module Response
3
+ require "paypal/invoice/response/invoice"
4
+ require "paypal/invoice/response/details"
5
+ require "paypal/invoice/response/search"
6
+
7
+ RESPONDERS = {
8
+ :create => "Invoice",
9
+ :send => "Invoice",
10
+ :create_and_send => "Invoice",
11
+ :update => "Invoice",
12
+ :cancel => "Invoice",
13
+ :mark_as_paid => "Invoice",
14
+ :mark_as_unpaid => "Invoice",
15
+ :mark_as_refunded => "Invoice",
16
+ :details => "Details",
17
+ :search => "Search"
18
+ }
19
+
20
+ def self.process(method, response)
21
+ response_class = PayPal::Invoice::Response.const_get(RESPONDERS[method])
22
+ if response.respond_to?(:body_str)
23
+ response_class.new(MultiJson.load(response.body_str))
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,23 @@
1
+ module PayPal::Invoice::Response
2
+ class Details
3
+ include PayPal::Common::Response
4
+
5
+ attr_accessor :invoice_id
6
+ attr_accessor :invoice
7
+ attr_accessor :invoice_details
8
+ attr_accessor :payment_details
9
+ attr_accessor :invoice_url
10
+
11
+ def set_invoice(value)
12
+ self.invoice = build_value(Invoice, value)
13
+ end
14
+
15
+ def set_invoice_details(value)
16
+ self.invoice_details = build_value(InvoiceDetails, value)
17
+ end
18
+
19
+ def set_payment_details(value)
20
+ self.payment_details = build_value(PaymentDetails, value)
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,10 @@
1
+ module PayPal::Invoice::Response
2
+ class Invoice
3
+ include PayPal::Common::Response
4
+
5
+ attr_accessor :invoice_id
6
+ attr_accessor :invoice_number
7
+ attr_accessor :invoice_url
8
+ attr_accessor :total_amount
9
+ end
10
+ end
@@ -0,0 +1,15 @@
1
+ module PayPal::Invoice::Response
2
+ class Search
3
+ include PayPal::Common::Response
4
+
5
+ attr_accessor :count
6
+ attr_accessor :invoice_list
7
+ attr_accessor :page
8
+ attr_accessor :has_next_page
9
+ attr_accessor :has_previous_page
10
+
11
+ def set_invoice_list(value)
12
+ self.invoice_list = build_value(InvoiceSummaryList, value)
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,19 @@
1
+ module PayPal::Invoice
2
+ class Search < PayPal::Invoice::Base
3
+
4
+ attr_accessor :merchant_email
5
+ attr_accessor :parameters
6
+ attr_accessor :page
7
+ attr_accessor :page_size
8
+
9
+ attr_accessor :response
10
+
11
+ def set_parameters(value)
12
+ self.parameters = build_value(SearchParameters, value)
13
+ end
14
+
15
+ def search
16
+ self.response = Response.process(:search, request.run(:search, self.to_hash))
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,20 @@
1
+ module PayPal::Invoice
2
+ class SearchParameters < PayPal::Invoice::Base
3
+
4
+ attr_accessor :email
5
+ attr_accessor :recipient_name
6
+ attr_accessor :business_name
7
+ attr_accessor :invoice_number
8
+ attr_accessor :status
9
+ attr_accessor :lower_amount
10
+ attr_accessor :upper_amount
11
+ attr_accessor :currency_code
12
+ attr_accessor :memo
13
+ attr_accessor :origin
14
+ attr_accessor :invoice_date
15
+ attr_accessor :due_date
16
+ attr_accessor :payment_date
17
+ attr_accessor :creation_date
18
+
19
+ end
20
+ end
@@ -0,0 +1,12 @@
1
+ module PayPal
2
+ module Permissions
3
+ end
4
+ end
5
+
6
+ require "paypal/permissions/api"
7
+ require "paypal/permissions/response"
8
+ require "paypal/permissions/request"
9
+ require "paypal/permissions/base"
10
+ require "paypal/permissions/permission"
11
+ require "paypal/permissions/personal_data"
12
+ require "paypal/permissions/token"
@@ -0,0 +1,60 @@
1
+ module PayPal
2
+ module Permissions
3
+ class Api
4
+
5
+ SITE_ENDPOINTS = {
6
+ :sandbox => "https://www.sandbox.paypal.com/cgi-bin/webscr",
7
+ :production => "https://www.paypal.com/cgi-bin/webscr"
8
+ }
9
+
10
+ API_ENDPOINTS = {
11
+ :sandbox => "https://svcs.sandbox.paypal.com/Permissions",
12
+ :production => "https://svcs.paypal.com/Permissions"
13
+ }
14
+
15
+ DATA_FORMATS = {
16
+ :nvp => 'NV',
17
+ :xml => 'XML',
18
+ :json => 'JSON'
19
+ }
20
+
21
+ class << self
22
+ def username
23
+ PayPal::Api.instance.username
24
+ end
25
+
26
+ def password
27
+ PayPal::Api.instance.password
28
+ end
29
+
30
+ def signature
31
+ PayPal::Api.instance.signature
32
+ end
33
+
34
+ def app_id
35
+ PayPal::Api.instance.app_id
36
+ end
37
+
38
+ def environment
39
+ PayPal::Api.environment
40
+ end
41
+
42
+ def api_endpoint
43
+ API_ENDPOINTS[environment]
44
+ end
45
+
46
+ def site_endpoint
47
+ SITE_ENDPOINTS[environment]
48
+ end
49
+
50
+ def request_data_format
51
+ DATA_FORMATS[:json]
52
+ end
53
+
54
+ def response_data_format
55
+ DATA_FORMATS[:json]
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,11 @@
1
+ module PayPal::Permissions
2
+ class Base
3
+ include PayPal::Common::Base
4
+
5
+ attr_accessor :request_envelope
6
+
7
+ def request
8
+ PayPal::Permissions::Request.new
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,33 @@
1
+ module PayPal::Permissions
2
+ class Permission < PayPal::Permissions::Base
3
+
4
+ attr_accessor :token
5
+ attr_accessor :scope
6
+ attr_accessor :callback
7
+
8
+ def scope=(scopes)
9
+ scopes = scopes.to_sym if scopes.is_a?(String)
10
+ scopes = [scopes] if scopes.is_a?(Symbol)
11
+ @scope = scopes.map{|scope| PayPal::Permissions::Request::SCOPE_TYPES[scope.to_sym] }.compact
12
+ end
13
+
14
+ def get_permission
15
+ Response.process(:get_permissions, request.run(:get_permissions, self.to_hash(:token, :request_envelope)))
16
+ end
17
+
18
+ def request_permission
19
+ response = Response.process(:request_permissions, request.run(:request_permissions, self.to_hash(:scope, :callback, :request_envelope)))
20
+ self.token = response.token
21
+ response
22
+ end
23
+
24
+ def cancel_permission
25
+ Response.process(:cancel_permissions, request.run(:cancel_permissions, self.to_hash(:token, :request_envelope)))
26
+ end
27
+
28
+ def request_url
29
+ "#{PayPal::Permissions::Api.site_endpoint}?cmd=_grant-permission&request_token=#{self.token}"
30
+ end
31
+
32
+ end
33
+ end
@@ -0,0 +1,17 @@
1
+ module PayPal::Permissions
2
+ class PersonalData < PayPal::Permissions::Base
3
+
4
+ attr_accessor :token
5
+ attr_accessor :scope
6
+ attr_accessor :callback
7
+
8
+ def advance
9
+ Response.process(:get_advance_personal_data, request.run(:get_advance_personal_data, self.to_hash(:token)))
10
+ end
11
+
12
+ def basic
13
+ Response.process(:get_basic_personal_data, request.run(:get_basic_personal_data, self.to_hash(:token)))
14
+ end
15
+
16
+ end
17
+ end
@@ -0,0 +1,52 @@
1
+ module PayPal::Permissions
2
+ class Request < PayPal::Common::Request
3
+
4
+ METHODS = {
5
+ :cancel_permissions => "CancelPermissions",
6
+ :get_access_token => "GetAccessToken",
7
+ :get_advance_personal_data => "GetAdvancedPersonalData",
8
+ :get_basic_personal_data => "GetBasicPersonalData",
9
+ :get_permissions => "GetPermissions",
10
+ :request_permissions => "RequestPermissions"
11
+ }
12
+
13
+ SCOPE_TYPES = {
14
+ :express_checkout => 'EXPRESS_CHECKOUT', #- Express Checkout
15
+ :direct_payment => 'DIRECT_PAYMENT', # Direct payment by debit or credit card
16
+ :settlement_consolidation => 'SETTLEMENT_CONSOLIDATION', # Settlement consolidation
17
+ :settlement_reporting => 'SETTLEMENT_REPORTING', # Settlement reporting
18
+ :auth_capture => 'AUTH_CAPTURE', # Payment authorization and capture
19
+ :mobile_checkout => 'MOBILE_CHECKOUT', # Mobile checkout
20
+ :billing_agreement => 'BILLING_AGREEMENT', # Billing agreements
21
+ :reference_transaction => 'REFERENCE_TRANSACTION', # Reference transactions
22
+ :air_travel => 'AIR_TRAVEL', # Express Checkout for UTAP
23
+ :mass_pay => 'MASS_PAY', # Mass pay
24
+ :transaction_details => 'TRANSACTION_DETAILS', # Transaction details
25
+ :transaction_search => 'TRANSACTION_SEARCH', # Transaction search
26
+ :recurring_payments => 'RECURRING_PAYMENTS', # Recurring payments
27
+ :account_balance => 'ACCOUNT_BALANCE', # Account balance
28
+ :encrypted_website_payment => 'ENCRYPTED_WEBSITE_PAYMENTS', # Encrypted website payments
29
+ :refund => 'REFUND', # Refunds
30
+ :non_reference_credit => 'NON_REFERENCED_CREDIT', # Non-referenced credit
31
+ :button_manager => 'BUTTON_MANAGER', # Button Manager
32
+ :manage_pending_transaction_status => 'MANAGE_PENDING_TRANSACTION_STATUS', # includes ManagePendingTransactionStatus
33
+ :recurring_report => 'RECURRING_PAYMENT_REPORT', # Reporting for recurring payments
34
+ :extended_processing_report => 'EXTENDED_PRO_PROCESSING_REPORT', # Extended Pro processing
35
+ :exception_processing_report => 'EXCEPTION_PROCESSING_REPORT', # Exception processing
36
+ :account_management => 'ACCOUNT_MANAGEMENT_PERMISSION', # Account Management Permission (MAM)
37
+ :basic_personal_data => 'ACCESS_BASIC_PERSONAL_DATA', # User attributes
38
+ :advance_personal_data => 'ACCESS_ADVANCED_PERSONAL_DATA', # User attributes
39
+ :invoicing => 'INVOICING'
40
+ }
41
+
42
+ def api
43
+ PayPal::Permissions::Api
44
+ end
45
+
46
+ # Returns the actual api endpoint base on method
47
+ #
48
+ def method_endpoint(method)
49
+ "#{api.api_endpoint}/#{METHODS.fetch(method, method.to_s)}"
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,24 @@
1
+ module PayPal::Permissions
2
+ module Response
3
+ require "paypal/permissions/response/personal_data"
4
+ require "paypal/permissions/response/permission"
5
+ require "paypal/permissions/response/token"
6
+
7
+ RESPONDERS = {
8
+ :cancel_permissions => "Permission",
9
+ :get_access_token => "Token",
10
+ :get_advance_personal_data => "PersonalData",
11
+ :get_basic_personal_data => "PersonalData",
12
+ :get_permissions => "Permission",
13
+ :request_permissions => "Permission"
14
+ }
15
+
16
+ def self.process(method, response)
17
+ response_class = PayPal::Permissions::Response.const_get(RESPONDERS[method])
18
+ if response.respond_to?(:body_str)
19
+ response_class.new(MultiJson.load(response.body_str))
20
+ end
21
+ # rescue
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,14 @@
1
+ module PayPal::Permissions::Response
2
+ class Permission
3
+ include PayPal::Common::Response
4
+
5
+ attr_accessor :token
6
+ attr_accessor :scope
7
+ attr_accessor :response_envelope
8
+
9
+ def request_url
10
+ "#{PayPal::Permissions::Api.site_endpoint}?cmd=_grant-permission&request_token=#{self.token}"
11
+ end
12
+
13
+ end
14
+ end