lib/active_merchant/billing/integrations/two_checkout/helper.rb in activemerchant-1.22.0 vs lib/active_merchant/billing/integrations/two_checkout/helper.rb in activemerchant-1.23.0
- old
+ new
@@ -4,68 +4,85 @@
module TwoCheckout
class Helper < ActiveMerchant::Billing::Integrations::Helper
def initialize(order, account, options = {})
super
add_field('fixed', 'Y')
-
+
if ActiveMerchant::Billing::Base.integration_mode == :test || options[:test]
add_field('demo', 'Y')
- end
+ end
end
-
+
# The 2checkout vendor account number
mapping :account, 'sid'
-
- # he total amount to be billed, in decimal form, without a currency symbol. (8 characters, decimal, 2 characters: Example: 99999999.99)
+
+ # The total amount to be billed, in decimal form, without a currency symbol. (8 characters, decimal, 2 characters: Example: 99999999.99)
mapping :amount, 'total'
-
- # a unique order id from your program. (128 characters max)
+
+ # Pass your order id if you are using Third Part Cart Parameters. (128 characters max)
mapping :order, 'cart_order_id'
+ # Pass your order id if you are using the Pass Through Products Parameters. (50 characters max)
+ mapping :invoice, 'merchant_order_id'
+
+ # Left here for backward compatibility, do not use. The line_item method will add automatically.
mapping :mode, 'mode'
mapping :customer, :email => 'email',
- :phone => 'phone'
+ :phone => 'phone'
mapping :billing_address, :city => 'city',
- :address1 => 'street_address',
- :address2 => 'street_address2',
- :state => 'state',
- :zip => 'zip',
- :country => 'country'
-
+ :address1 => 'street_address',
+ :address2 => 'street_address2',
+ :state => 'state',
+ :zip => 'zip',
+ :country => 'country'
+
mapping :shipping_address, :city => 'ship_city',
- :address1 => 'ship_street_address',
- :state => 'ship_state',
- :zip => 'ship_zip',
- :country => 'ship_country'
-
- mapping :invoice, 'merchant_order_id'
-
+ :address1 => 'ship_street_address',
+ :state => 'ship_state',
+ :zip => 'ship_zip',
+ :country => 'ship_country'
+
# Does nothing, since we've disabled the Continue Shopping button by using the fixed = Y field
mapping :return_url, 'return_url'
-
- #mapping :description, ''
- #mapping :tax, ''
- #mapping :shipping, ''
-
+
+ # Approved URL path
+ mapping :notification_url, 'x_receipt_link_url'
+
def customer(params = {})
add_field(mappings[:customer][:email], params[:email])
add_field(mappings[:customer][:phone], params[:phone])
add_field('card_holder_name', "#{params[:first_name]} #{params[:last_name]}")
end
-
+
+ # Uses Pass Through Product Parameters to pass in lineitems.
+ # (must mark tanigble sales as shipped to settle the transaction)
def line_item(params = {})
- max_existing_line_item_id = form_fields.keys.map do |key|
- match = key.to_s.match(/li_(\d+)_/)
- if match
- match[1]
- end
- end.reject(&:nil?).max.to_i
-
+ add_field('mode', '2CO')
+ (max_existing_line_item_id = form_fields.keys.map do |key|
+ i = key.to_s[/^li_(\d+)_/, 1]
+ (i && i.to_i)
+ end.compact.max || 0)
+
line_item_id = max_existing_line_item_id + 1
params.each do |key, value|
add_field("li_#{line_item_id}_#{key}", value)
+ end
+ end
+
+ # Uses Third Party Cart parameter set to pass in lineitem details.
+ # (sales settle automatically)
+ def auto_settle(params = {})
+ add_field('id_type', '1')
+ (max_existing_line_item_id = form_fields.keys.map do |key|
+ i = key.to_s[/^c_prod_(\d+)/, 1]
+ (i && i.to_i)
+ end.compact.max || 0)
+
+ line_item_id = max_existing_line_item_id + 1
+ params.each do |key, value|
+ add_field("c_#{key}_#{line_item_id}", value)
end
end
end
end
end