Class: Gateway::AlipayDirectPay

Inherits:
Gateway
  • Object
show all
Defined in:
app/models/spree/gateway/alipay_direct_pay.rb

Instance Method Summary collapse

Instance Method Details

#auto_capture?Boolean

Returns:

  • (Boolean)


26
27
28
# File 'app/models/spree/gateway/alipay_direct_pay.rb', line 26

def auto_capture?
  true
end

#method_typeObject



34
35
36
# File 'app/models/spree/gateway/alipay_direct_pay.rb', line 34

def method_type
  'alipay_direct_pay'
end

#providerObject



21
22
23
24
# File 'app/models/spree/gateway/alipay_direct_pay.rb', line 21

def provider
  setup_alipay
  ::Alipay::Service
end

#provider_classObject



17
18
19
# File 'app/models/spree/gateway/alipay_direct_pay.rb', line 17

def provider_class
  ::Alipay::Service
end

#purchase(money, source, gateway_options) ⇒ Object



39
40
41
# File 'app/models/spree/gateway/alipay_direct_pay.rb', line 39

def purchase(money, source, gateway_options)
  nil
end

#set_partner_trade(out_trade_no, order, return_url, notify_url, gateway_options = {}) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'app/models/spree/gateway/alipay_direct_pay.rb', line 44

def set_partner_trade(out_trade_no, order, return_url, notify_url, gateway_options={})
  raise unless preferred_pid && preferred_key && preferred_seller_email
  amount = order.amount
  tax_adjustments = order.all_adjustments.tax.additional
  
  shipping_adjustments = order.all_adjustments.shipping
  
  adjustment_label = []
  adjustment_costs = 0.0
  
  order.all_adjustments.nonzero.eligible.each do |adjustment|
    next if (tax_adjustments + shipping_adjustments).include?(adjustment)
    adjustment_label << adjustment.label
  
    adjustment_costs += adjustment.amount # Spree::Currency.convert(adjustment.amount, order.currency, 'RMB')
  end
  
  subject = gateway_options[:subject] || order.number
  subject += " #{adjustment_label.join(' | ')}"if adjustment_label.present?
  shipping_cost = order.shipments.to_a.sum(&:cost)
  options = {
    :out_trade_no      => out_trade_no,         # 20130801000001
    :subject           => subject,   
    :logistics_type    => 'EXPRESS',   #EXPRESS、POST、EMS
    :logistics_fee     => shipping_cost,
    :logistics_payment => 'BUYER_PAY',
    :price             =>  amount,  
    :quantity          => 1,
    :discount          => adjustment_costs,
    :return_url        => return_url, # https://writings.io/orders/20130801000001
    :notify_url        => notify_url  # https://writings.io/orders/20130801000001/alipay_notify
  }


  logger.debug "create_direct_pay: #{options}"
  return  provider.create_direct_pay_by_user_url(options)

end

#source_required?Boolean

Returns:

  • (Boolean)


30
31
32
# File 'app/models/spree/gateway/alipay_direct_pay.rb', line 30

def source_required?
  false
end

#supports?(source) ⇒ Boolean

Returns:

  • (Boolean)


13
14
15
# File 'app/models/spree/gateway/alipay_direct_pay.rb', line 13

def supports?(source)
  true
end