Class: SolidusPaypalCommercePlatform::Gateway
- Inherits:
-
Object
- Object
- SolidusPaypalCommercePlatform::Gateway
- Defined in:
- app/models/solidus_paypal_commerce_platform/gateway.rb
Instance Method Summary collapse
- #authorize(_money, source, _options) ⇒ Object
- #capture(money, _response_code, options) ⇒ Object
- #create_order(order, auto_capture) ⇒ Object
- #credit(_money_cents, _transaction_id, options) ⇒ Object
- #get_order(order_id) ⇒ Object
-
#initialize(options) ⇒ Gateway
constructor
A new instance of Gateway.
- #purchase(money, source, options) ⇒ Object
- #void(_response_code, options) ⇒ Object
Constructor Details
#initialize(options) ⇒ Gateway
Returns a new instance of Gateway.
8 9 10 11 12 13 14 15 16 |
# File 'app/models/solidus_paypal_commerce_platform/gateway.rb', line 8 def initialize() # Cannot use kwargs because of how the Gateway is initialize by Solidus. @client = Client.new( test_mode: .fetch(:test_mode, nil), client_id: .fetch(:client_id), client_secret: .fetch(:client_secret), ) @options = end |
Instance Method Details
#authorize(_money, source, _options) ⇒ Object
30 31 32 33 34 35 36 37 38 39 |
# File 'app/models/solidus_paypal_commerce_platform/gateway.rb', line 30 def (_money, source, ) request = OrdersAuthorizeRequest.new(source.paypal_order_id) response = @client.execute_with_response(request) if response.success? = response.params["result"].purchase_units[0].payments.[0].id source.update(authorization_id: ) end response end |
#capture(money, _response_code, options) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 |
# File 'app/models/solidus_paypal_commerce_platform/gateway.rb', line 41 def capture(money, _response_code, ) source = [:originator].source request = AuthorizationsCaptureRequest.new(source.) request.request_body(amount: { currency_code: [:currency], value: Money.new(money).dollars }) response = capture_with_response(request) if response.success? source.update(capture_id: response.params["result"].id) end response end |
#create_order(order, auto_capture) ⇒ Object
73 74 75 76 77 78 79 |
# File 'app/models/solidus_paypal_commerce_platform/gateway.rb', line 73 def create_order(order, auto_capture) intent = auto_capture ? "CAPTURE" : "AUTHORIZE" request = OrdersCreateRequest.new paypal_order = SolidusPaypalCommercePlatform::PaypalOrder.new(order) request.request_body paypal_order.to_json(intent) @client.execute(request) end |
#credit(_money_cents, _transaction_id, options) ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'app/models/solidus_paypal_commerce_platform/gateway.rb', line 53 def credit(_money_cents, _transaction_id, ) refund = [:originator] source = refund.payment.source capture_id = source.capture_id request = CapturesRefundRequest.new(capture_id) request.request_body(amount: { currency_code: refund.currency, value: refund.amount }) = I18n.t('success', scope: @client.i18n_scope_for(request), amount: refund.amount) response = @client.execute_with_response(request, success_message: ) source.update(refund_id: response.params["result"].id) if response.success? response end |
#get_order(order_id) ⇒ Object
81 82 83 |
# File 'app/models/solidus_paypal_commerce_platform/gateway.rb', line 81 def get_order(order_id) @client.execute(OrdersGetRequest.new(order_id)).result end |
#purchase(money, source, options) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 |
# File 'app/models/solidus_paypal_commerce_platform/gateway.rb', line 18 def purchase(money, source, ) request = OrdersCaptureRequest.new(source.paypal_order_id) request.request_body(amount: { currency_code: [:currency], value: Money.new(money).dollars }) response = @client.execute_with_response(request) if response.success? capture_id = response.params["result"].purchase_units[0].payments.captures[0].id source.update(capture_id: capture_id) end response end |
#void(_response_code, options) ⇒ Object
66 67 68 69 70 71 |
# File 'app/models/solidus_paypal_commerce_platform/gateway.rb', line 66 def void(_response_code, ) = [:originator].source. request = AuthorizationsVoidRequest.new() @client.execute_with_response(request) end |