class PaypalApi
Constants
- MASS_PAY_ENDPOINT
MassPay Setting
- PAYPAL_PASSWORD
- PAYPAL_SIGNATURE
- PAYPAL_USER_NAME
Private Class Methods
adaptive_payment( return_url, cancel_url, receiver_list )
click to toggle source
—– Adaptive Payments API —– #
# File lib/generators/paypal/scaffold/templates/app/models/paypal_api.rb, line 120 def self.adaptive_payment( return_url, cancel_url, receiver_list ) pay_request = PaypalAdaptive::Request.new data = { "returnUrl" => return_url, "requestEnvelope" => { "errorLanguage" => "ja_JP" }, "currencyCode" => "JPY", "receiverList" => { "receiver" => receiver_list }, "cancelUrl" => cancel_url, "actionType" => "PAY", } pay_response = pay_request.pay( data ) if pay_response.success? return "Success", pay_response.approve_paypal_payment_url else return "Error", pay_response.errors.first['message'] end end
cancel_recurring( profile_id )
click to toggle source
# File lib/generators/paypal/scaffold/templates/app/models/paypal_api.rb, line 103 def self.cancel_recurring( profile_id ) request = self.get_request response = request.renew!( profile_id, :Cancel ) return response.ack end
create_recurring( token, description )
click to toggle source
# File lib/generators/paypal/scaffold/templates/app/models/paypal_api.rb, line 64 def self.create_recurring( token, description ) request = self.get_request profile = Paypal::Payment::Recurring.new( start_date: Time.now, description: description, billing: { period: PAYPAL_RECURRING_PERIOD, frequency: PAYPAL_RECURRING_FREQUENCY, amount: PAYPAL_RECURRING_AMOUNT, currency_code: :JPY, # if nil, PayPal use USD as default } ) response = request.subscribe!( token, profile ) response.recurring return response.recurring.identifier # => profile_id end
get_recurring_profile( profile_id )
click to toggle source
# File lib/generators/paypal/scaffold/templates/app/models/paypal_api.rb, line 90 def self.get_recurring_profile( profile_id ) request = self.get_request response = request.subscription(profile_id) return response.recurring end
get_request()
click to toggle source
—– Recurring Payments API —– #
# File lib/generators/paypal/scaffold/templates/app/models/paypal_api.rb, line 21 def self.get_request request = Paypal::Express::Request.new( username: PAYPAL_USER_NAME, password: PAYPAL_PASSWORD, signature: PAYPAL_SIGNATURE, ) return request end
mass_pay( receive_list )
click to toggle source
—– MassPay API —– #
# File lib/generators/paypal/scaffold/templates/app/models/paypal_api.rb, line 149 def self.mass_pay( receive_list ) # リクエストパラメータ設定 request_param = { "USER" => PAYPAL_USER_NAME, "PWD" => PAYPAL_PASSWORD, "SIGNATURE" => PAYPAL_SIGNATURE, "METHOD" => "MassPay", "CURRENCYCODE" => "JPY", "RECEIVERTYPE" => "EmailAddress", "VERSION" => "89.0", } # 支払い先リスト receive_list.each.with_index{ |receive, index| request_param["L_EMAIL#{index}"] = receive[:email].to_s request_param["L_AMT#{index}"] = receive[:amount].to_s } url = URI.parse( MASS_PAY_ENDPOINT ) http = Net::HTTP.new( url.host, url.port ) http.use_ssl = true # パラメータ文字列化 string_field_params = request_param.map{ |p| "#{p.first}=#{CGI.escape(p.last)}" }.join("&") # POST実行 response = http.post( "/nvp", string_field_params ) # レスポンスハッシュ化 decode_hash = Hash[ URI.decode_www_form( response.body ) ] # 結果ハッシュを返す return decode_hash end
set_express_checkout( success_calback, cancel_calback, description )
click to toggle source
# File lib/generators/paypal/scaffold/templates/app/models/paypal_api.rb, line 39 def self.set_express_checkout( success_calback, cancel_calback, description ) request = self.get_request payment_request = Paypal::Payment::Request.new( currency_code: :JPY, # if nil, PayPal use USD as default billing_type: :RecurringPayments, billing_agreement_description: description, ) response = request.setup( payment_request, success_calback, cancel_calback, ) return response.redirect_uri end