spree_alipay_payment 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: e6f479088eefc172688ce1dd1615087f021109fe
4
+ data.tar.gz: eb0a99be3f9d2f9a6e6a6c54f59a17cbfe643bee
5
+ SHA512:
6
+ metadata.gz: 5700be891149918a69f555bee2bcab59ba1110debe37c6763ee423502665f377ae9a0ebd66910dba7c643d8916efd5b5925feab39a3ac2e0de4be79cdb6180b9
7
+ data.tar.gz: 6aab0a81d9caaf8d733356e9a25de27fc099a2d0ba0902bd51c468b2ead49b0556b45ad1136170042aac66c92981b501e84e4867b424f5dbb3517686cdce9f7d
Binary file
@@ -0,0 +1,31 @@
1
+ //= require spree/frontend
2
+
3
+ SpreeAlipayPayment = {
4
+ updateSaveAndContinueVisibility: function() {
5
+ if (this.isButtonHidden()) {
6
+ $(this).trigger('hideSaveAndContinue')
7
+ } else {
8
+ $(this).trigger('showSaveAndContinue')
9
+ }
10
+ },
11
+ isButtonHidden: function () {
12
+ paymentMethod = this.checkedPaymentMethod();
13
+ return (!$('#use_existing_card_yes:checked').length && SpreeAlipayPayment.paymentMethodID && paymentMethod.val() == SpreeAlipayPayment.paymentMethodID);
14
+ },
15
+ checkedPaymentMethod: function() {
16
+ return $('div[data-hook="checkout_payment_step"] input[type="radio"][name="order[payments_attributes][][payment_method_id]"]:checked');
17
+ },
18
+ hideSaveAndContinue: function() {
19
+ $("#checkout_form_payment [data-hook=buttons]").addClass('hidden_button');
20
+ },
21
+ showSaveAndContinue: function() {
22
+ $("#checkout_form_payment [data-hook=buttons]").removeClass('hidden_button');
23
+ }
24
+ }
25
+
26
+ $(document).ready(function() {
27
+ SpreeAlipayPayment.updateSaveAndContinueVisibility();
28
+ paymentMethods = $('div[data-hook="checkout_payment_step"] input[type="radio"]').click(function (e) {
29
+ SpreeAlipayPayment.updateSaveAndContinueVisibility();
30
+ });
31
+ })
@@ -0,0 +1,3 @@
1
+ .hidden_button{
2
+ display: none !important;
3
+ }
@@ -0,0 +1,26 @@
1
+ module Spree
2
+ class AlipayController < StoreController
3
+ ssl_allowed
4
+
5
+ def partner_trade
6
+ order = current_order || raise(ActiveRecord::RecordNotFound)
7
+ order.line_items.each do |item|
8
+ @product_name=item.variant.product.name
9
+ end
10
+ payment = Spree::Payment.create({:order_id => order.id, :amount => order.amount, :payment_method_id=> payment_method.id})
11
+ payment.started_processing!
12
+ partner_trade = payment_method.set_partner_trade( payment.identifier , order, spree.order_url(order) , notify_alipay_url, {:subject=> "#{current_store.name} #{@product_name} #{order.number}"})
13
+ redirect_to partner_trade
14
+ end
15
+
16
+ private
17
+
18
+ def payment_method
19
+ Spree::PaymentMethod.find(params[:payment_method_id])
20
+ end
21
+
22
+ def provider
23
+ payment_method.provider
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,69 @@
1
+ module Spree
2
+ class AlipayNotifyController < ApplicationController
3
+ skip_before_action :verify_authenticity_token
4
+
5
+ def notify_web
6
+ # except :controller_name, :action_name, :host, etc.
7
+ # {"discount"=>"0.02", "logistics_type"=>"POST", "receive_zip"=>"999077", "payment_type"=>"1", "subject"=>"TalkGoal #R381807226", "logistics_fee"=>"0.03","trade_no"=>"2014111830597476", "buyer_email"=>"test@testing.com", "gmt_create"=>"2014-11-18 17:49:28", "notify_type"=>"trade_status_sync", "quantity"=>"1", "logistics_payment"=>"BUYER_PAY", "out_trade_no"=>"R381807226", "seller_id"=>"1111002381708888", "notify_time"=>"2014-11-18 17:49:52","trade_status"=>"WAIT_SELLER_SEND_GOODS", "is_total_fee_adjust"=>"N", "gmt_payment"=>"2014-11-18 17:49:52", "total_fee"=>"0.04", "seller_email"=>"seller@test.com", "price"=>"0.01", "buyer_id"=>"3333602021013333", "gmt_logistics_modify"=>"2014-11-18 17:49:40", "receive_phone"=>"999999999", "notify_id"=>"fe67a9a70e7372f11aa65985a556a11111", "receive_name"=>"Arthur CHAN", "use_coupon"=>"N", "sign_type"=>"MD5", "sign"=>"a9999ba0aac13a0ff511977b71b78888", "receive_address"=>"中国香港 九龍"}
8
+ notify_params = params.except(*request.path_parameters.keys)
9
+
10
+ if Alipay::Notify.verify?(notify_params)
11
+ logger.info notify_params.inspect
12
+
13
+ # Valid notify, code your business logic.
14
+ # trade_status is base on your payment type
15
+ # Example:
16
+ #
17
+ # case params[:trade_status]
18
+ # when 'WAIT_BUYER_PAY'
19
+ # when 'WAIT_SELLER_SEND_GOODS'
20
+ # when 'TRADE_FINISHED'
21
+ # when 'TRADE_CLOSED'
22
+ # end
23
+ # Alipay workflow
24
+ # WAIT_BUYER_PAY(等待买家付款)
25
+ # WAIT_SELLER_SEND_GOODS(买家已付款,等待卖家发货)
26
+ # WAIT_BUYER_CONFIRM_GOODS(卖家已发货,等待买家收货)
27
+ # TRADE_FINISHED(买家已收货,交易完成)
28
+ #
29
+ # Spree Order status
30
+ # payment - The store is ready to receive the payment information for the order.
31
+ # confirm - The order is ready for a final review by the customer before being processed.
32
+ # complete
33
+ if notify_params[:trade_status] == 'WAIT_SELLER_SEND_GOODS'
34
+ out_trade_no = notify_params[:out_trade_no]
35
+ payment = Spree::Payment.find_by_identifier(out_trade_no) || raise(ActiveRecord::RecordNotFound)
36
+
37
+ #payment.update_columns( :response_code => notify_params[:trade_no])
38
+
39
+ payment.complete!
40
+
41
+ # o.next!
42
+ payment.order.next!
43
+
44
+
45
+
46
+ end
47
+ return render :text => 'success'
48
+ end
49
+ return render :text => 'error'
50
+ end
51
+
52
+ # Alipay status
53
+ # 1、已收货情况
54
+ # WAIT_SELLER_AGRE(等待卖家同意退款)
55
+ # WAIT_BUYER_RETURN_GOOD(卖家同意退款,等待买家退货)
56
+ # WAIT_SELLER_CONFIRM_GOODS(买家退货,等待卖家收到退货)
57
+ # REFUND_SUCCESS(买家收到退货,退款成功,交易关闭)
58
+ # 2、未收货情况
59
+ # WAIT_SELLER_AGREE(等待卖家同意退款)
60
+ # REFUND_SUCCESS(卖家同意退款,退款成功,交易关闭)
61
+ # 3、卖家未发货而退款成功,交易状态会变为TRADE_CLOSED
62
+ # 4、卖家发货而退款成功后,交易状态变为TRADE_FINISHED
63
+ def notify_refund
64
+
65
+ end
66
+
67
+
68
+ end
69
+ end
@@ -0,0 +1,27 @@
1
+ #encoding: utf-8
2
+ module Spree
3
+ CheckoutController.class_eval do
4
+ before_filter :checkout_to_pay_money, :only => [:update]
5
+ private
6
+ def checkout_to_pay_money
7
+ return unless current_order.next_step_complete?
8
+ return unless params[:order][:payments_attributes].present?
9
+ if pay_by_billing_integration?
10
+ if params["state"]=="payment"
11
+ redirect_to alipay_partner_trade_path(:payment_method_id => params[:order][:payments_attributes].first[:payment_method_id])
12
+ end
13
+ end
14
+ end
15
+
16
+ def pay_by_billing_integration?
17
+ if @order.next_step_complete?
18
+ payment_method_info=Spree::PaymentMethod.find(params[:order][:payments_attributes].first[:payment_method_id])
19
+ if payment_method_info.type.include? "Alipay"
20
+ return true
21
+ end
22
+ end
23
+ return false
24
+ end
25
+
26
+ end
27
+ end
@@ -0,0 +1,109 @@
1
+ require 'alipay'
2
+
3
+ module Spree
4
+ class Gateway::AlipayDirectPay < Gateway
5
+
6
+
7
+ preference :pid, :string
8
+ preference :key, :string
9
+ preference :seller_email, :string
10
+
11
+
12
+
13
+ def supports?(source)
14
+ true
15
+ end
16
+
17
+ def provider_class
18
+ ::Alipay::Service
19
+ end
20
+
21
+ def provider
22
+ setup_alipay
23
+ ::Alipay::Service
24
+ end
25
+
26
+ def auto_capture?
27
+ true
28
+ end
29
+
30
+ def source_required?
31
+ false
32
+ end
33
+
34
+ def method_type
35
+ 'alipay_direct_pay'
36
+ end
37
+
38
+
39
+ def purchase(money, source, gateway_options)
40
+ nil
41
+ end
42
+
43
+
44
+ def set_partner_trade(out_trade_no, order, return_url, notify_url, gateway_options={})
45
+ raise unless preferred_pid && preferred_key && preferred_seller_email
46
+ amount = order.amount
47
+ tax_adjustments = order.all_adjustments.tax.additional
48
+
49
+ shipping_adjustments = order.all_adjustments.shipping
50
+
51
+ adjustment_label = []
52
+ adjustment_costs = 0.0
53
+
54
+ order.all_adjustments.nonzero.eligible.each do |adjustment|
55
+ next if (tax_adjustments + shipping_adjustments).include?(adjustment)
56
+ adjustment_label << adjustment.label
57
+
58
+ adjustment_costs += adjustment.amount # Spree::Currency.convert(adjustment.amount, order.currency, 'RMB')
59
+ end
60
+
61
+ subject = gateway_options[:subject] || order.number
62
+ subject += " #{adjustment_label.join(' | ')}"if adjustment_label.present?
63
+ shipping_cost = order.shipments.to_a.sum(&:cost)
64
+ options = {
65
+ :out_trade_no => out_trade_no, # 20130801000001
66
+ :subject => subject,
67
+ :logistics_type => 'EXPRESS', #EXPRESS、POST、EMS
68
+ :logistics_fee => shipping_cost,
69
+ :logistics_payment => 'BUYER_PAY',
70
+ :price => amount,
71
+ :quantity => 1,
72
+ :discount => adjustment_costs,
73
+ :return_url => return_url, # https://writings.io/orders/20130801000001
74
+ :notify_url => notify_url # https://writings.io/orders/20130801000001/alipay_notify
75
+ }
76
+
77
+
78
+ logger.debug "create_direct_pay: #{options}"
79
+ return provider.create_direct_pay_by_user_url(options)
80
+
81
+ end
82
+
83
+
84
+
85
+
86
+ # def refund(payment, amount)
87
+ # batch_no = Alipay::Utils.generate_batch_no # refund batch no, you SHOULD store it to db to avoid alipay duplicate refund
88
+ # options = {
89
+ # batch_no: batch_no,
90
+ # data: [{:trade_no => order.number, :amount => order.amount, :reason => 'WEBSITE_REFUND'}],
91
+ # notify_url: notify_url # https://writings.io/orders/20130801000001/alipay_refund_notify
92
+ # }
93
+ # logger.info options
94
+ # refund_transaction = provider.create_refund_url(options)
95
+ # end
96
+
97
+ private
98
+
99
+ def setup_alipay
100
+
101
+ Alipay.pid = preferred_pid
102
+ Alipay.key = preferred_key
103
+ Alipay.seller_email = preferred_seller_email
104
+ end
105
+ end
106
+ end
107
+
108
+ # payment.state = 'completed'
109
+ # current_order.state = 'complete'
@@ -0,0 +1,109 @@
1
+ require 'alipay'
2
+
3
+ module Spree
4
+ class Gateway::AlipayPartnerTrade < Gateway
5
+
6
+
7
+ preference :pid, :string
8
+ preference :key, :string
9
+ preference :seller_email, :string
10
+
11
+
12
+
13
+ def supports?(source)
14
+ true
15
+ end
16
+
17
+ def provider_class
18
+ ::Alipay::Service
19
+ end
20
+
21
+ def provider
22
+ setup_alipay
23
+ ::Alipay::Service
24
+ end
25
+
26
+ def auto_capture?
27
+ true
28
+ end
29
+
30
+ def source_required?
31
+ false
32
+ end
33
+
34
+ def method_type
35
+ 'alipay_partner_trade'
36
+ end
37
+
38
+
39
+ def purchase(money, source, gateway_options)
40
+ nil
41
+ end
42
+
43
+
44
+ def set_partner_trade(out_trade_no, order, return_url, notify_url, gateway_options={})
45
+ raise unless preferred_pid && preferred_key && preferred_seller_email
46
+ amount = order.amount
47
+ tax_adjustments = order.all_adjustments.tax.additional
48
+
49
+ shipping_adjustments = order.all_adjustments.shipping
50
+
51
+ adjustment_label = []
52
+ adjustment_costs = 0.0
53
+
54
+ order.all_adjustments.nonzero.eligible.each do |adjustment|
55
+ next if (tax_adjustments + shipping_adjustments).include?(adjustment)
56
+ adjustment_label << adjustment.label
57
+
58
+ adjustment_costs += adjustment.amount # Spree::Currency.convert(adjustment.amount, order.currency, 'RMB')
59
+ end
60
+
61
+ subject = gateway_options[:subject] || order.number
62
+ subject += " #{adjustment_label.join(' | ')}"if adjustment_label.present?
63
+ shipping_cost = order.shipments.to_a.sum(&:cost)
64
+ options = {
65
+ :out_trade_no => out_trade_no, # 20130801000001
66
+ :subject => subject,
67
+ :logistics_type => 'POST', #EXPRESS、POST、EMS
68
+ :logistics_fee => shipping_cost,
69
+ :logistics_payment => 'BUYER_PAY',
70
+ :price => amount,
71
+ :quantity => 1,
72
+ :discount => adjustment_costs,
73
+ :return_url => return_url, # https://writings.io/orders/20130801000001
74
+ :notify_url => notify_url # https://writings.io/orders/20130801000001/alipay_notify
75
+ }
76
+
77
+
78
+ logger.debug "create_partner_trade_by_buyer_url: #{options}"
79
+ return provider.create_partner_trade_by_buyer_url(options)
80
+
81
+ end
82
+
83
+
84
+
85
+
86
+ # def refund(payment, amount)
87
+ # batch_no = Alipay::Utils.generate_batch_no # refund batch no, you SHOULD store it to db to avoid alipay duplicate refund
88
+ # options = {
89
+ # batch_no: batch_no,
90
+ # data: [{:trade_no => order.number, :amount => order.amount, :reason => 'WEBSITE_REFUND'}],
91
+ # notify_url: notify_url # https://writings.io/orders/20130801000001/alipay_refund_notify
92
+ # }
93
+ # logger.info options
94
+ # refund_transaction = provider.create_refund_url(options)
95
+ # end
96
+
97
+ private
98
+
99
+ def setup_alipay
100
+
101
+ Alipay.pid = preferred_pid
102
+ Alipay.key = preferred_key
103
+ Alipay.seller_email = preferred_seller_email
104
+ end
105
+ end
106
+ end
107
+
108
+ # payment.state = 'completed'
109
+ # current_order.state = 'complete'
@@ -0,0 +1,92 @@
1
+ require 'alipay'
2
+
3
+ module Spree
4
+ class Gateway::AlipayTradeDirect < Gateway
5
+
6
+ preference :pid, :string
7
+ preference :key, :string
8
+ preference :seller_email, :string
9
+
10
+ def supports?(source)
11
+ true
12
+ end
13
+
14
+ def provider_class
15
+ ::Alipay::Service
16
+ end
17
+
18
+ def provider
19
+ setup_alipay
20
+ ::Alipay::Service
21
+ end
22
+
23
+ def auto_capture?
24
+ true
25
+ end
26
+
27
+ def source_required?
28
+ false
29
+ end
30
+
31
+ def method_type
32
+ 'alipay_trade_direct'
33
+ end
34
+
35
+
36
+ def purchase(money, source, gateway_options)
37
+ nil
38
+ end
39
+
40
+ def set_partner_trade(out_trade_no, order, return_url, notify_url, gateway_options={})
41
+ alipay_key= preferred_key
42
+ time = Time.now.strftime('%Y%m%d%H%M%S%L')
43
+ #https://mapi.alipay.com/gateway.do?service=trade_create_by_buyer&_input_charset=utf-8&partner=2088002627298374&seller_email=areq22%40aliyun.com&payment_type=1&out_trade_no=aquarius20141210165948670&subject=Iphone+6&logistics_type=DIRECT&logistics_fee=0&logistics_payment=SELLER_PAY&price=0.01&quantity=1&discount=0.00&return_url=http%3A%2F%2Flocalhost%3A3000%2Freturn&notify_url=http%3A%2F%2Flocalhost%3A3000%2Fnotify&sign_type=MD5&sign=b74cdf8eea44cfe174c95a2e27c70a5a
44
+ url="https://mapi.alipay.com/gateway.do"
45
+ subject = gateway_options[:subject] || order.number
46
+
47
+ options={
48
+ :service=>"trade_create_by_buyer",
49
+ :_input_charset=>"utf-8",
50
+ :partner=>preferred_pid,
51
+ :seller_email=>preferred_seller_email,
52
+ :payment_type=>1,
53
+ :out_trade_no=>out_trade_no,
54
+ :subject=>subject,
55
+ :logistics_type=>"EXPRESS",
56
+ :logistics_fee=>0,
57
+ :logistics_payment=>"BUYER_PAY",
58
+ :price=>order.amount,
59
+ :quantity=>1,
60
+ :discount=>0.00,
61
+ :return_url=>return_url,
62
+ :notify_url=>notify_url
63
+ }
64
+
65
+ sign=""
66
+ paymentlink=url<<"?"
67
+ options.each do |key,value|
68
+ paymentlink<<"#{key}=#{value}&"
69
+ end
70
+ md5sign=_sign(options,alipay_key)
71
+ paymentlink<<"sign_type=MD5&sign=#{md5sign}"
72
+ return paymentlink
73
+
74
+ end
75
+
76
+ private
77
+ def _sign(options,alipay_key)
78
+
79
+ sign_str=""
80
+ options.sort.map do |key,value|
81
+ if value
82
+ sign_str<<"#{key}=#{value}&"
83
+ end
84
+ end
85
+ sign_str=sign_str[0, sign_str.length - 1]
86
+
87
+ sign_str<<"#{alipay_key}"
88
+ sign_str=Digest::MD5.hexdigest(sign_str)
89
+ end
90
+
91
+ end
92
+ end
@@ -0,0 +1,6 @@
1
+ Spree::Order.class_eval do
2
+ def next_step_complete?
3
+ available_steps = checkout_steps
4
+ available_steps[ available_steps.index( self.state ).succ ] == 'complete'
5
+ end
6
+ end
@@ -0,0 +1,12 @@
1
+
2
+ <% if @order.currency == 'CNY' || @order.currency == 'RMB' %>
3
+ <%=image_tag('alipay.png', :alt=> I18n.t('spree.checkout.payment.alipay.partner_trade'))%>
4
+ <br/>
5
+ <%= "#{I18n.t('spree.alipay.click_and_pay')} (#{I18n.t('spree.alipay.direct_pay')})"%>
6
+ <% else %>
7
+ <%= I18n.t('spree.alipay.error_non_rmb') %>
8
+ <% end %>
9
+
10
+ <script>
11
+ SpreeAlipayPayment.paymentMethodID = "<%= payment_method.id %>"
12
+ </script>
@@ -0,0 +1,12 @@
1
+
2
+ <% if @order.currency == 'CNY' || @order.currency == 'RMB' %>
3
+ <%=image_tag('alipay.png', :alt=> I18n.t('spree.checkout.payment.alipay.partner_trade'))%>
4
+ <br/>
5
+ <%= "#{I18n.t('spree.alipay.click_and_pay')} (#{I18n.t('spree.alipay.partner_trade')})"%>
6
+ <% else %>
7
+ <%= I18n.t('spree.alipay.error_non_rmb') %>
8
+ <% end %>
9
+
10
+ <script>
11
+ SpreeAlipayPayment.paymentMethodID = "<%= payment_method.id %>"
12
+ </script>
@@ -0,0 +1,12 @@
1
+
2
+ <% if @order.currency == 'CNY' || @order.currency == 'RMB' %>
3
+ <%=image_tag('alipay.png', :alt=> I18n.t('spree.checkout.payment.alipay.partner_trade'))%>
4
+ <br/>
5
+ <%= "#{I18n.t('spree.alipay.click_and_pay')} (#{I18n.t('spree.alipay.trade_direct')})"%>
6
+ <% else %>
7
+ <%= I18n.t('spree.alipay.error_non_rmb') %>
8
+ <% end %>
9
+
10
+ <script>
11
+ SpreeAlipayPayment.paymentMethodID = "<%= payment_method.id %>"
12
+ </script>
@@ -0,0 +1,8 @@
1
+ en:
2
+ spree:
3
+ alipay:
4
+ click_and_pay: Please click the Alipay button to complete the payment.
5
+ error_non_rmb: For Alipay payment, please change currency to RMB first.
6
+ partner_trade: Partner Trade
7
+ trade_direct: Partner Trade and Direct pay
8
+ direct_pay: Direct Pay
@@ -0,0 +1,8 @@
1
+ zh-CN:
2
+ spree:
3
+ alipay:
4
+ click_and_pay: 請按此支付寶以完成付款
5
+ error_non_rmb: 如欲使用支付宝,请先选择人民币交易
6
+ partner_trade: 担保交易
7
+
8
+
@@ -0,0 +1,8 @@
1
+ zh-TW:
2
+ spree:
3
+ alipay:
4
+ click_and_pay: 请按此支付宝以完成付款
5
+ error_non_rmb: 如欲使用支付寶,請先選擇人民幣交易!
6
+ partner_trade: 擔保交易
7
+
8
+
data/config/routes.rb ADDED
@@ -0,0 +1,18 @@
1
+ Spree::Core::Engine.add_routes do
2
+ # Add your extension routes here
3
+ #get '/alipay/confirm', :to => "alipay_notify#confirm", :as => :confirm_alipay
4
+ get '/alipay/partner_trade', :to => "alipay#partner_trade", :as => :alipay_partner_trade
5
+ post '/alipay/notify', :to => "alipay_notify#notify_web", :as => :notify_alipay
6
+
7
+ resources :orders do
8
+ resource :checkout, :controller => 'checkout' do
9
+ member do
10
+ get :alipay_checkout_payment
11
+
12
+ end
13
+ end
14
+ end
15
+
16
+ end
17
+
18
+
@@ -0,0 +1,4 @@
1
+ require 'spree_core'
2
+ require 'spree_alipay_payment/version'
3
+ require 'spree_alipay_payment/engine'
4
+ require 'sass/rails'
@@ -0,0 +1,28 @@
1
+ module SpreeAlipayPayment
2
+ class Engine < Rails::Engine
3
+ require 'spree/core'
4
+ isolate_namespace Spree
5
+ engine_name 'spree_alipay_payment'
6
+
7
+ config.autoload_paths += %W(#{config.root}/lib)
8
+
9
+ # use rspec for tests
10
+ config.generators do |g|
11
+ g.test_framework :rspec
12
+ end
13
+
14
+ def self.activate
15
+ Dir.glob(File.join(File.dirname(__FILE__), '../../app/**/*_decorator*.rb')) do |c|
16
+ Rails.configuration.cache_classes ? require(c) : load(c)
17
+ end
18
+ end
19
+
20
+ config.to_prepare &method(:activate).to_proc
21
+
22
+ initializer "spree.alipay_payment.payment_methods", :after => "spree.register.payment_methods" do |app|
23
+ app.config.spree.payment_methods << Spree::Gateway::AlipayPartnerTrade
24
+ app.config.spree.payment_methods << Spree::Gateway::AlipayDirectPay
25
+ app.config.spree.payment_methods << Spree::Gateway::AlipayTradeDirect
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,3 @@
1
+ module SpreeAlipayPayment
2
+ VERSION = '0.0.2'
3
+ end
metadata ADDED
@@ -0,0 +1,94 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: spree_alipay_payment
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - kevin obama
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-12-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: spree_core
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 2.3.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 2.3.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: alipay
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '='
32
+ - !ruby/object:Gem::Version
33
+ version: 0.1.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '='
39
+ - !ruby/object:Gem::Version
40
+ version: 0.1.0
41
+ description: Adds Alipay Payment as a Payment Method to Spree Commerce
42
+ email: w.zhou@aquarius-asia.com
43
+ executables: []
44
+ extensions: []
45
+ extra_rdoc_files: []
46
+ files:
47
+ - app/assets/images/alipay.png
48
+ - app/assets/javascripts/spree/frontend/spree_alipay_payment.js
49
+ - app/assets/stylesheets/spree/frontend/spree_alipay_payment.css
50
+ - app/controllers/spree/alipay_controller.rb
51
+ - app/controllers/spree/alipay_notify_controller.rb
52
+ - app/controllers/spree/checkout_controller_decorator.rb
53
+ - app/models/spree/gateway/alipay_direct_pay.rb
54
+ - app/models/spree/gateway/alipay_partner_trade.rb
55
+ - app/models/spree/gateway/alipay_trade_direct.rb
56
+ - app/models/spree/order_decorator.rb
57
+ - app/views/spree/admin/payments/source_views/_alipay_partner_trade.erb
58
+ - app/views/spree/checkout/payment/_alipay_direct_pay.erb
59
+ - app/views/spree/checkout/payment/_alipay_partner_trade.erb
60
+ - app/views/spree/checkout/payment/_alipay_trade_direct.erb
61
+ - config/locales/en.yml
62
+ - config/locales/zh-CN.yml
63
+ - config/locales/zh-TW.yml
64
+ - config/routes.rb
65
+ - lib/spree_alipay_payment.rb
66
+ - lib/spree_alipay_payment/engine.rb
67
+ - lib/spree_alipay_payment/version.rb
68
+ homepage: http://g.uboxi.com/
69
+ licenses:
70
+ - BSD-3
71
+ metadata: {}
72
+ post_install_message:
73
+ rdoc_options: []
74
+ require_paths:
75
+ - lib
76
+ required_ruby_version: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: 1.9.3
81
+ required_rubygems_version: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ requirements:
87
+ - none
88
+ rubyforge_project:
89
+ rubygems_version: 2.2.2
90
+ signing_key:
91
+ specification_version: 4
92
+ summary: Adds Alipay Payment as a Payment Method to Spree Commerce
93
+ test_files: []
94
+ has_rdoc: