module Alipay::App::Service

Constants

ALIPAY_PREPARE_PARAMS_REQUIRED_PARAMS
ALIPAY_TRADE_APP_PAY_REQUIRED_PARAMS

APP支付

ALIPAY_TRADE_REFUND_QUERY_REQUIRED_PARAMS

退款查询 参考文档:docs.open.alipay.com/api_1/alipay.trade.fastpay.refund.query/

ALIPAY_TRADE_REFUND_REQUIRED_PARAMS

退款 参考文档:docs.open.alipay.com/api_1/alipay.trade.refund/

GATEWAY_URL

Public Class Methods

alipay_trade_app_pay(params, options = {}) click to toggle source
# File lib/alipay/app/service.rb, line 34
def self.alipay_trade_app_pay(params, options = {})
  params = Utils.stringify_keys(params)
  Alipay::Service.check_required_params(params, ALIPAY_TRADE_APP_PAY_REQUIRED_PARAMS)
  params = params.merge('method' => 'alipay.trade.app.pay')
  params = prepare_params(params, options)
  Alipay::App::Sign.params_to_encoded_string params
end
alipay_trade_refund_query_url(params, options = {}) click to toggle source
# File lib/alipay/app/service.rb, line 56
def self.alipay_trade_refund_query_url(params, options = {})
  params = Utils.stringify_keys(params)
  Alipay::Service.check_required_params(params, ALIPAY_TRADE_REFUND_QUERY_REQUIRED_PARAMS)
  params = params.merge('method' => 'alipay.trade.fastpay.refund.query')
  params = prepare_params(params, options)
  request_uri(params)
end
alipay_trade_refund_url(params, options = {}) click to toggle source
# File lib/alipay/app/service.rb, line 45
def self.alipay_trade_refund_url(params, options = {})
  params = Utils.stringify_keys(params)
  Alipay::Service.check_required_params(params, ALIPAY_TRADE_REFUND_REQUIRED_PARAMS)
  params = params.merge('method' => 'alipay.trade.refund')
  params = prepare_params(params, options)
  request_uri(params)
end
prepare_params(params, options = {}) click to toggle source
# File lib/alipay/app/service.rb, line 7
def self.prepare_params(params, options = {})
  params = Utils.stringify_keys(params)
  Alipay::Service.check_required_params(params, ALIPAY_PREPARE_PARAMS_REQUIRED_PARAMS)
  key = options[:key] || Alipay.key
  sign_type = (options[:sign_type] || :rsa2).to_s.upcase
  params = {
      'method'         => params['method'],
      'charset'        => 'utf-8',
      'version'        => '1.0',
      'timestamp'      => Time.now.utc.strftime('%Y-%m-%d %H:%M:%S').to_s,
      'sign_type'      => sign_type
  }.merge(params)

  string = Alipay::App::Sign.params_to_sorted_string(params)
  sign = case sign_type
           when 'RSA'
             ::Alipay::Sign::RSA.sign(key, string)
           when 'RSA2'
             ::Alipay::Sign::RSA2.sign(key, string)
           else
             raise ArgumentError, "invalid sign_type #{sign_type}, allow value: 'RSA', 'RSA2'"
         end
  params.merge('sign' => sign)
end
request_uri(params) click to toggle source
# File lib/alipay/app/service.rb, line 64
def self.request_uri(params)
  uri = URI(GATEWAY_URL)
  uri.query = URI.encode_www_form(params)
  uri
end