lib/active_merchant/billing/gateways/webpay.rb in activemerchant-1.42.2 vs lib/active_merchant/billing/gateways/webpay.rb in activemerchant-1.42.3
- old
+ new
@@ -11,29 +11,26 @@
self.supported_cardtypes = [:visa, :master, :american_express, :jcb, :diners_club]
self.homepage_url = 'https://webpay.jp/'
self.display_name = 'WebPay'
- def authorize(money, credit_card, options = {})
- raise NotImplementedError.new
+ def capture(money, authorization, options = {})
+ post = {:amount => localized_amount(money)}
+ add_application_fee(post, options)
+ commit(:post, "charges/#{CGI.escape(authorization)}/capture", post)
end
- def capture(money, credit_card, options = {})
- raise NotImplementedError.new
- end
-
def refund(money, identification, options = {})
post = {:amount => localized_amount(money)}
- commit_options = generate_meta(options)
MultiResponse.run do |r|
- r.process { commit(:post, "charges/#{CGI.escape(identification)}/refund", post, commit_options) }
+ r.process { commit(:post, "charges/#{CGI.escape(identification)}/refund", post, options) }
return r unless options[:refund_fee_amount]
- r.process { fetch_application_fees(identification, commit_options) }
- r.process { refund_application_fee(options[:refund_fee_amount], application_fee_from_response(r), commit_options) }
+ r.process { fetch_application_fees(identification, options) }
+ r.process { refund_application_fee(options[:refund_fee_amount], application_fee_from_response(r), options) }
end
end
def refund_fee(identification, options, meta)
raise NotImplementedError.new
@@ -50,10 +47,29 @@
def add_customer(post, creditcard, options)
post[:customer] = options[:customer] if options[:customer] && !creditcard.respond_to?(:number)
end
+ def store(creditcard, options = {})
+ post = {}
+ add_creditcard(post, creditcard, options)
+ post[:description] = options[:description]
+ post[:email] = options[:email]
+
+ if options[:customer]
+ MultiResponse.run(:first) do |r|
+ r.process { commit(:post, "customers/#{CGI.escape(options[:customer])}/", post, options) }
+
+ return r unless options[:set_default] and r.success? and !r.params["id"].blank?
+
+ r.process { update_customer(options[:customer], :default_card => r.params["id"]) }
+ end
+ else
+ commit(:post, 'customers', post, options)
+ end
+ end
+
def json_error(raw_response)
msg = 'Invalid response received from the WebPay API. Please contact support@webpay.jp if you continue to receive this message.'
msg += " (The raw response returned by the API was #{raw_response.inspect})"
{
"error" => {
@@ -73,10 +89,10 @@
{
"Authorization" => "Basic " + Base64.encode64(@api_key.to_s + ":").strip,
"User-Agent" => "Webpay/v1 ActiveMerchantBindings/#{ActiveMerchant::VERSION}",
"X-Webpay-Client-User-Agent" => @@ua,
- "X-Webpay-Client-User-Metadata" => options[:meta].to_json
+ "X-Webpay-Client-User-Metadata" => {:ip => options[:ip]}.to_json
}
end
end
end
end