module Alipay::Service

Constants

BATCH_TRANS_NOTIFY_REQUIRED_PARAMS
CLOSE_TRADE_REQUIRED_OPTIONAL_PARAMS
CREATE_DIRECT_PAY_BY_USER_REQUIRED_PARAMS
CREATE_DIRECT_PAY_BY_USER_WAP_REQUIRED_PARAMS
CREATE_FOREX_SINGLE_REFUND_URL_REQUIRED_PARAMS
CREATE_FOREX_TRADE_OPTIONAL_PARAMS
CREATE_FOREX_TRADE_REQUIRED_PARAMS
CREATE_FOREX_TRADE_WAP_REQUIRED_PARAMS
CREATE_PARTNER_TRADE_BY_BUYER_REQUIRED_PARAMS
CREATE_REFUND_URL_REQUIRED_PARAMS
GATEWAY_URL
SEND_GOODS_CONFIRM_BY_PLATFORM_OPTIONAL_PARAMS
SEND_GOODS_CONFIRM_BY_PLATFORM_REQUIRED_PARAMS
SINGLE_TRADE_QUERY_OPTIONAL_PARAMS
TRADE_CREATE_BY_BUYER_REQUIRED_PARAMS

Public Class Methods

account_page_query(params, options = {}) click to toggle source
# File lib/alipay/service.rb, line 172
def self.account_page_query(params, options = {})
  params = {
    service: 'account.page.query',
    _input_charset: 'utf-8',
    partner: options[:pid] || Alipay.pid,
  }.merge(params)

  Net::HTTP.get(request_uri(params, options))
end
batch_trans_notify_url(params, options = {}) click to toggle source
# File lib/alipay/service.rb, line 183
def self.batch_trans_notify_url(params, options = {})
  params = Utils.stringify_keys(params)
  check_required_params(params, BATCH_TRANS_NOTIFY_REQUIRED_PARAMS)

  params = {
    'service'        => 'batch_trans_notify',
    '_input_charset' => 'utf-8',
    'partner'        => options[:pid] || Alipay.pid,
    'pay_date'       => Time.now.strftime("%Y%m%d")
  }.merge(params)

  request_uri(params, options).to_s
end
check_optional_params(params, names) click to toggle source
# File lib/alipay/service.rb, line 233
def self.check_optional_params(params, names)
  return if !Alipay.debug_mode?

  warn("Alipay Warn: must specify either #{names.join(' or ')}") if names.all? {|name| params[name].nil? }
end
check_required_params(params, names) click to toggle source
# File lib/alipay/service.rb, line 225
def self.check_required_params(params, names)
  return if !Alipay.debug_mode?

  names.each do |name|
    warn("Alipay Warn: missing required option: #{name}") unless params.has_key?(name)
  end
end
close_trade(params, options = {}) click to toggle source
# File lib/alipay/service.rb, line 145
def self.close_trade(params, options = {})
  params = Utils.stringify_keys(params)
  check_optional_params(params, CLOSE_TRADE_REQUIRED_OPTIONAL_PARAMS)

  params = {
    'service'        => 'close_trade',
    '_input_charset' => 'utf-8',
    'partner'        => options[:pid] || Alipay.pid
  }.merge(params)

  Net::HTTP.get(request_uri(params, options))
end
create_direct_pay_by_user_url(params, options = {}) click to toggle source
# File lib/alipay/service.rb, line 38
def self.create_direct_pay_by_user_url(params, options = {})
  params = Utils.stringify_keys(params)
  check_required_params(params, CREATE_DIRECT_PAY_BY_USER_REQUIRED_PARAMS)

  if Alipay.debug_mode? and params['total_fee'].nil? and (params['price'].nil? || params['quantity'].nil?)
    warn("Alipay Warn: total_fee or (price && quantity) must be set")
  end

  params = {
    'service'        => 'create_direct_pay_by_user',
    '_input_charset' => 'utf-8',
    'partner'        => options[:pid] || Alipay.pid,
    'seller_id'      => options[:pid] || Alipay.pid,
    'payment_type'   => '1'
  }.merge(params)

  request_uri(params, options).to_s
end
create_direct_pay_by_user_wap_url(params, options = {}) click to toggle source
# File lib/alipay/service.rb, line 58
def self.create_direct_pay_by_user_wap_url(params, options = {})
  params = Utils.stringify_keys(params)
  check_required_params(params, CREATE_DIRECT_PAY_BY_USER_WAP_REQUIRED_PARAMS)

  params = {
    'service'        => 'alipay.wap.create.direct.pay.by.user',
    '_input_charset' => 'utf-8',
    'partner'        => options[:pid] || Alipay.pid,
    'seller_id'      => options[:pid] || Alipay.pid,
    'payment_type'   => '1'
  }.merge(params)

  request_uri(params, options).to_s
end
create_forex_trade_url(params, options = {}) click to toggle source
# File lib/alipay/service.rb, line 130
def self.create_forex_trade_url(params, options = {})
  params = Utils.stringify_keys(params)
  check_required_params(params, CREATE_FOREX_TRADE_REQUIRED_PARAMS)
  check_optional_params(params, CREATE_FOREX_TRADE_OPTIONAL_PARAMS)

  params = {
    'service'         => 'create_forex_trade',
    '_input_charset'  => 'utf-8',
    'partner'         => options[:pid] || Alipay.pid,
  }.merge(params)

  request_uri(params, options).to_s
end
create_forex_trade_wap_url(params, options = {}) click to toggle source
# File lib/alipay/service.rb, line 198
def self.create_forex_trade_wap_url(params, options = {})
  params = Utils.stringify_keys(params)
  check_required_params(params, CREATE_FOREX_TRADE_WAP_REQUIRED_PARAMS)

  params = {
    'service'        => 'create_forex_trade_wap',
    '_input_charset' => 'utf-8',
    'partner'        => options[:pid] || Alipay.pid,
    'seller_id'      => options[:pid] || Alipay.pid
  }.merge(params)

  request_uri(params, options).to_s
end
create_partner_trade_by_buyer_url(params, options = {}) click to toggle source
# File lib/alipay/service.rb, line 6
def self.create_partner_trade_by_buyer_url(params, options = {})
  params = Utils.stringify_keys(params)
  check_required_params(params, CREATE_PARTNER_TRADE_BY_BUYER_REQUIRED_PARAMS)

  params = {
    'service'        => 'create_partner_trade_by_buyer',
    '_input_charset' => 'utf-8',
    'partner'        => options[:pid] || Alipay.pid,
    'seller_id'      => options[:pid] || Alipay.pid,
    'payment_type'   => '1'
  }.merge(params)

  request_uri(params, options).to_s
end
forex_refund_url(params, options = {}) click to toggle source
# File lib/alipay/service.rb, line 98
def self.forex_refund_url(params, options = {})
  params = Utils.stringify_keys(params)
  check_required_params(params, CREATE_FOREX_SINGLE_REFUND_URL_REQUIRED_PARAMS)

  params = {
    'service'        => 'forex_refund',
    'partner'        => options[:pid] || Alipay.pid,
    '_input_charset' => 'utf-8',
    'gmt_return'     => Time.now.getlocal('+08:00').strftime('%Y%m%d%H%M%S')
  }.merge(params)

  request_uri(params, options).to_s
end
refund_fastpay_by_platform_pwd_url(params, options = {}) click to toggle source
# File lib/alipay/service.rb, line 74
def self.refund_fastpay_by_platform_pwd_url(params, options = {})
  params = Utils.stringify_keys(params)
  check_required_params(params, CREATE_REFUND_URL_REQUIRED_PARAMS)

  data = params.delete('data')
  detail_data = data.map do|item|
    item = Utils.stringify_keys(item)
    "#{item['trade_no']}^#{item['amount']}^#{item['reason']}"
  end.join('#')

  params = {
    'service'        => 'refund_fastpay_by_platform_pwd',
    '_input_charset' => 'utf-8',
    'partner'        => options[:pid] || Alipay.pid,
    'seller_user_id' => options[:pid] || Alipay.pid,
    'refund_date'    => Time.now.strftime('%Y-%m-%d %H:%M:%S'),
    'batch_num'      => data.size,
    'detail_data'    => detail_data
  }.merge(params)

  request_uri(params, options).to_s
end
request_uri(params, options = {}) click to toggle source
# File lib/alipay/service.rb, line 212
def self.request_uri(params, options = {})
  uri = URI(GATEWAY_URL)
  uri.query = URI.encode_www_form(sign_params(params, options))
  uri
end
send_goods_confirm_by_platform(params, options = {}) click to toggle source
# File lib/alipay/service.rb, line 114
def self.send_goods_confirm_by_platform(params, options = {})
  params = Utils.stringify_keys(params)
  check_required_params(params, SEND_GOODS_CONFIRM_BY_PLATFORM_REQUIRED_PARAMS)
  check_optional_params(params, SEND_GOODS_CONFIRM_BY_PLATFORM_OPTIONAL_PARAMS)

  params = {
    'service'        => 'send_goods_confirm_by_platform',
    'partner'        => options[:pid] || Alipay.pid,
    '_input_charset' => 'utf-8'
  }.merge(params)

  Net::HTTP.get(request_uri(params, options))
end
sign_params(params, options = {}) click to toggle source
# File lib/alipay/service.rb, line 218
def self.sign_params(params, options = {})
  params.merge(
    'sign_type' => (options[:sign_type] || Alipay.sign_type),
    'sign'      => Alipay::Sign.generate(params, options)
  )
end
single_trade_query(params, options = {}) click to toggle source
# File lib/alipay/service.rb, line 159
def self.single_trade_query(params, options = {})
  params = Utils.stringify_keys(params)
  check_optional_params(params, SINGLE_TRADE_QUERY_OPTIONAL_PARAMS)

  params =   {
    "service"         => 'single_trade_query',
    "_input_charset"  => "utf-8",
    "partner"         => options[:pid] || Alipay.pid,
  }.merge(params)

  Net::HTTP.get(request_uri(params, options))
end
trade_create_by_buyer_url(params, options = {}) click to toggle source
# File lib/alipay/service.rb, line 22
def self.trade_create_by_buyer_url(params, options = {})
  params = Utils.stringify_keys(params)
  check_required_params(params, TRADE_CREATE_BY_BUYER_REQUIRED_PARAMS)

  params = {
    'service'        => 'trade_create_by_buyer',
    '_input_charset' => 'utf-8',
    'partner'        => options[:pid] || Alipay.pid,
    'seller_id'      => options[:pid] || Alipay.pid,
    'payment_type'   => '1'
  }.merge(params)

  request_uri(params, options).to_s
end