remit2 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE +20 -0
- data/README.markdown +26 -0
- data/lib/remit2.rb +119 -0
- data/lib/remit2/data_types.rb +142 -0
- data/lib/remit2/error_codes.rb +118 -0
- data/lib/remit2/get_pipeline.rb +195 -0
- data/lib/remit2/ipn_request.rb +45 -0
- data/lib/remit2/operations/cancel_subscription_and_refund.rb +26 -0
- data/lib/remit2/operations/cancel_token.rb +16 -0
- data/lib/remit2/operations/discard_results.rb +16 -0
- data/lib/remit2/operations/fund_prepaid.rb +29 -0
- data/lib/remit2/operations/get_account_activity.rb +58 -0
- data/lib/remit2/operations/get_account_balance.rb +27 -0
- data/lib/remit2/operations/get_all_credit_instruments.rb +16 -0
- data/lib/remit2/operations/get_all_prepaid_instruments.rb +16 -0
- data/lib/remit2/operations/get_debt_balance.rb +21 -0
- data/lib/remit2/operations/get_outstanding_debt_balance.rb +20 -0
- data/lib/remit2/operations/get_payment_instruction.rb +19 -0
- data/lib/remit2/operations/get_prepaid_balance.rb +21 -0
- data/lib/remit2/operations/get_results.rb +25 -0
- data/lib/remit2/operations/get_token_by_caller.rb +23 -0
- data/lib/remit2/operations/get_token_usage.rb +16 -0
- data/lib/remit2/operations/get_tokens.rb +18 -0
- data/lib/remit2/operations/get_total_prepaid_liability.rb +20 -0
- data/lib/remit2/operations/get_transaction.rb +40 -0
- data/lib/remit2/operations/install_payment_instruction.rb +20 -0
- data/lib/remit2/operations/pay.rb +38 -0
- data/lib/remit2/operations/refund.rb +28 -0
- data/lib/remit2/operations/reserve.rb +28 -0
- data/lib/remit2/operations/retry_transaction.rb +16 -0
- data/lib/remit2/operations/settle.rb +18 -0
- data/lib/remit2/operations/settle_debt.rb +28 -0
- data/lib/remit2/operations/write_off_debt.rb +26 -0
- data/lib/remit2/pipeline_response.rb +52 -0
- data/lib/remit2/request.rb +12 -0
- data/lib/remit2/response.rb +54 -0
- data/lib/remit2/signature.rb +35 -0
- data/spec/spec_helper.rb +32 -0
- data/spec/units/cancel_subscription_and_refund_spec.rb +26 -0
- data/spec/units/get_pipeline_spec.rb +164 -0
- data/spec/units/ipn_request_spec.rb +35 -0
- data/spec/units/pay_spec.rb +67 -0
- data/spec/units/remit_spec.rb +25 -0
- data/spec/units/units_helper.rb +4 -0
- metadata +119 -0
@@ -0,0 +1,45 @@
|
|
1
|
+
module Remit
|
2
|
+
# Encapsulates the logic for IPN request validation and attribute retrieval.
|
3
|
+
#
|
4
|
+
# This should probably be updated to support the VerifySignature function now provided.
|
5
|
+
class IpnRequest
|
6
|
+
# Signature key name used by AmazonFPS IPNs
|
7
|
+
SIGNATURE_KEY = 'signature'
|
8
|
+
|
9
|
+
# +params+ should be your controllers request parameters.
|
10
|
+
def initialize(params, secret_key)
|
11
|
+
raise ArgumentError, "Expected the request params hash, received: #{params.inspect}" unless params.kind_of?(Hash)
|
12
|
+
@params = strip_keys_from(params, 'action', 'controller')
|
13
|
+
@supplied_signature = @params.delete(SIGNATURE_KEY)
|
14
|
+
@secret_key = secret_key
|
15
|
+
end
|
16
|
+
|
17
|
+
def valid?
|
18
|
+
return false unless @supplied_signature
|
19
|
+
generate_signature_for(@params) == @supplied_signature
|
20
|
+
end
|
21
|
+
|
22
|
+
def method_missing(method, *args) #:nodoc:
|
23
|
+
if @params.has_key?(method.to_s)
|
24
|
+
@params[method.to_s]
|
25
|
+
else
|
26
|
+
super(method, *args)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def generate_signature_for(params)
|
31
|
+
query = params.sort_by { |k,v| k.downcase }
|
32
|
+
digest = OpenSSL::Digest::Digest.new('sha1')
|
33
|
+
hmac = OpenSSL::HMAC.digest(digest, @secret_key, query.to_s)
|
34
|
+
encoded = Base64.encode64(hmac).chomp
|
35
|
+
end
|
36
|
+
private :generate_signature_for
|
37
|
+
|
38
|
+
def strip_keys_from(params, *ignore_keys)
|
39
|
+
parsed = params.dup
|
40
|
+
ignore_keys.each { |key| parsed.delete(key) }
|
41
|
+
parsed
|
42
|
+
end
|
43
|
+
private :strip_keys_from
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# Updated for API Version 2008-09-17
|
2
|
+
# This operation is used by Amazon Simple Pay.
|
3
|
+
module Remit
|
4
|
+
module CancelSubscriptionAndRefund
|
5
|
+
class Request < Remit::Request
|
6
|
+
action :CancelSubscriptionAndRefund
|
7
|
+
parameter :caller_reference
|
8
|
+
parameter :cancel_reason
|
9
|
+
parameter :refund_amount, :type => Remit::RequestTypes::Amount
|
10
|
+
parameter :subscription_id, :required => true
|
11
|
+
end
|
12
|
+
|
13
|
+
class InnerResponse < Remit::BaseResponse
|
14
|
+
parameter :refund_transaction_id
|
15
|
+
end
|
16
|
+
|
17
|
+
class Response < Remit::Response
|
18
|
+
parameter :inner, :element => "CancelSubscriptionAndRefundResult", :type => InnerResponse
|
19
|
+
inner_parameters :refund_transaction_id
|
20
|
+
end
|
21
|
+
|
22
|
+
def cancel_subscription_and_refund(request = Request.new)
|
23
|
+
call(request, Response)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Remit
|
2
|
+
module CancelToken
|
3
|
+
class Request < Remit::Request
|
4
|
+
action :CancelToken
|
5
|
+
parameter :token_id, :required => true
|
6
|
+
parameter :reason_text
|
7
|
+
end
|
8
|
+
|
9
|
+
class Response < Remit::Response
|
10
|
+
end
|
11
|
+
|
12
|
+
def cancel_token(request = Request.new)
|
13
|
+
call(request, Response)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Remit
|
2
|
+
module DiscardResults
|
3
|
+
class Request < Remit::Request
|
4
|
+
action :DiscardResults
|
5
|
+
parameter :transaction_ids, :required => true
|
6
|
+
end
|
7
|
+
|
8
|
+
class Response < Remit::Response
|
9
|
+
parameter :discard_errors
|
10
|
+
end
|
11
|
+
|
12
|
+
def discard_results(request = Request.new)
|
13
|
+
call(request, Response)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Remit
|
2
|
+
module FundPrepaid
|
3
|
+
class Request < Remit::Request
|
4
|
+
action :FundPrepaid
|
5
|
+
parameter :transaction_ids
|
6
|
+
parameter :caller_description
|
7
|
+
parameter :caller_reference, :required => true
|
8
|
+
parameter :caller_token_id, :required => true
|
9
|
+
parameter :charge_fee_to, :required => true
|
10
|
+
parameter :funding_amount, :type => Remit::RequestTypes::Amount, :required => true
|
11
|
+
parameter :meta_data
|
12
|
+
parameter :prepaid_instrument_id, :required => true
|
13
|
+
parameter :recipient_description
|
14
|
+
parameter :recipient_reference
|
15
|
+
parameter :sender_description
|
16
|
+
parameter :sender_reference
|
17
|
+
parameter :sender_token_id, :required => true
|
18
|
+
parameter :transaction_date
|
19
|
+
end
|
20
|
+
|
21
|
+
class Response < Remit::Response
|
22
|
+
parameter :transaction_response, :type => TransactionResponse
|
23
|
+
end
|
24
|
+
|
25
|
+
def fund_prepaid(request = Request.new)
|
26
|
+
call(request, Response)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
module Remit
|
2
|
+
module GetAccountActivity
|
3
|
+
class Request < Remit::Request
|
4
|
+
action :GetAccountActivity
|
5
|
+
parameter :start_date, :required => true
|
6
|
+
parameter :end_date
|
7
|
+
parameter :max_batch_size
|
8
|
+
parameter :sort_order_by_date
|
9
|
+
parameter :response_group
|
10
|
+
parameter :operation
|
11
|
+
parameter :payment_method
|
12
|
+
parameter :role
|
13
|
+
parameter :status
|
14
|
+
end
|
15
|
+
|
16
|
+
class Response < Remit::Response
|
17
|
+
class Transaction < Remit::BaseResponse
|
18
|
+
class TransactionPart < Remit::BaseResponse
|
19
|
+
parameter :account_id
|
20
|
+
parameter :role
|
21
|
+
parameter :name
|
22
|
+
parameter :reference
|
23
|
+
parameter :description
|
24
|
+
parameter :fee_paid, :type => Amount
|
25
|
+
end
|
26
|
+
|
27
|
+
parameter :caller_name
|
28
|
+
parameter :caller_token_id
|
29
|
+
parameter :caller_transaction_date, :type => :time
|
30
|
+
parameter :date_completed, :type => :time
|
31
|
+
parameter :date_received, :type => :time
|
32
|
+
parameter :error_code
|
33
|
+
parameter :error_detail
|
34
|
+
parameter :error_message
|
35
|
+
parameter :fees, :type => Amount
|
36
|
+
parameter :meta_data
|
37
|
+
parameter :operation
|
38
|
+
parameter :original_transaction_id
|
39
|
+
parameter :payment_method
|
40
|
+
parameter :recipient_name
|
41
|
+
parameter :sender_name
|
42
|
+
parameter :sender_token_id
|
43
|
+
parameter :status
|
44
|
+
parameter :transaction_amount, :type => Amount
|
45
|
+
parameter :transaction_id
|
46
|
+
parameter :transaction_parts, :collection => TransactionPart
|
47
|
+
end
|
48
|
+
|
49
|
+
parameter :response_batch_size
|
50
|
+
parameter :transactions, :collection => Transaction
|
51
|
+
parameter :start_time_for_next_transaction, :type => :time
|
52
|
+
end
|
53
|
+
|
54
|
+
def get_account_activity(request = Request.new)
|
55
|
+
call(request, Response)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Remit
|
2
|
+
module GetAccountBalance
|
3
|
+
class Request < Remit::Request
|
4
|
+
action :GetAccountBalance
|
5
|
+
end
|
6
|
+
|
7
|
+
class Response < Remit::Response
|
8
|
+
class AccountBalance < Remit::BaseResponse
|
9
|
+
class AvailableBalances < Remit::BaseResponse
|
10
|
+
parameter :disburse_balance, :type => Amount
|
11
|
+
parameter :refund_balance, :type => Amount
|
12
|
+
end
|
13
|
+
|
14
|
+
parameter :total_balance, :type => Amount
|
15
|
+
parameter :pending_in_balance, :type => Amount
|
16
|
+
parameter :pending_out_balance, :type => Amount
|
17
|
+
parameter :available_balances, :type => AvailableBalances
|
18
|
+
end
|
19
|
+
|
20
|
+
parameter :account_balance, :type => AccountBalance
|
21
|
+
end
|
22
|
+
|
23
|
+
def get_account_balance(request = Request.new)
|
24
|
+
call(request, Response)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Remit
|
2
|
+
module GetAllCreditInstruments
|
3
|
+
class Request < Remit::Request
|
4
|
+
action :GetAllCreditInstruments
|
5
|
+
parameter :instrument_status
|
6
|
+
end
|
7
|
+
|
8
|
+
class Response < Remit::Response
|
9
|
+
parameter :credit_instrument_ids
|
10
|
+
end
|
11
|
+
|
12
|
+
def get_all_credit_instruments(request = Request.new)
|
13
|
+
call(request, Response)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Remit
|
2
|
+
module GetAllPrepaidInstruments
|
3
|
+
class Request < Remit::Request
|
4
|
+
action :GetAllPrepaidInstruments
|
5
|
+
parameter :instrument_status
|
6
|
+
end
|
7
|
+
|
8
|
+
class Response < Remit::Response
|
9
|
+
parameter :prepaid_instrument_ids
|
10
|
+
end
|
11
|
+
|
12
|
+
def get_all_prepaid_instruments(request = Request.new)
|
13
|
+
call(request, Response)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Remit
|
2
|
+
module GetDebtBalance
|
3
|
+
class Request < Remit::Request
|
4
|
+
action :GetDebtBalance
|
5
|
+
parameter :credit_instrument_id, :required => true
|
6
|
+
end
|
7
|
+
|
8
|
+
class Response < Remit::Response
|
9
|
+
class DebtBalance < Remit::BaseResponse
|
10
|
+
parameter :available_balance, :type => Amount
|
11
|
+
parameter :pending_out_balance, :type => Amount
|
12
|
+
end
|
13
|
+
|
14
|
+
parameter :debt_balance, :type => DebtBalance
|
15
|
+
end
|
16
|
+
|
17
|
+
def get_debt_balance(request = Request.new)
|
18
|
+
call(request, Response)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Remit
|
2
|
+
module GetOutstandingDebtBalance
|
3
|
+
class Request < Remit::Request
|
4
|
+
action :GetOutStandingDebtBalance
|
5
|
+
end
|
6
|
+
|
7
|
+
class Response < Remit::Response
|
8
|
+
class OutstandingDebtBalance < Remit::BaseResponse
|
9
|
+
parameter :outstanding_balance, :type => Amount
|
10
|
+
parameter :pending_out_balance, :type => Amount
|
11
|
+
end
|
12
|
+
|
13
|
+
parameter :outstanding_debt, :type => OutstandingDebtBalance
|
14
|
+
end
|
15
|
+
|
16
|
+
def get_outstanding_debt_balance(request = Request.new)
|
17
|
+
call(request, Response)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Remit
|
2
|
+
module GetPaymentInstruction
|
3
|
+
class Request < Remit::Request
|
4
|
+
action :GetPaymentInstruction
|
5
|
+
parameter :token_id, :required => true
|
6
|
+
end
|
7
|
+
|
8
|
+
class Response < Remit::Response
|
9
|
+
parameter :token, :type => Token
|
10
|
+
parameter :payment_instruction
|
11
|
+
parameter :account_id
|
12
|
+
parameter :token_friendly_name
|
13
|
+
end
|
14
|
+
|
15
|
+
def get_payment_instruction(request = Request.new)
|
16
|
+
call(request, Response)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Remit
|
2
|
+
module GetPrepaidBalance
|
3
|
+
class Request < Remit::Request
|
4
|
+
action :GetPrepaidBalance
|
5
|
+
parameter :prepaid_instrument_id, :required => true
|
6
|
+
end
|
7
|
+
|
8
|
+
class Response < Remit::Response
|
9
|
+
class PrepaidBalance < Remit::BaseResponse
|
10
|
+
parameter :available_balance, :type => Amount
|
11
|
+
parameter :pending_in_balance, :type => Amount
|
12
|
+
end
|
13
|
+
|
14
|
+
parameter :prepaid_balance, :type => PrepaidBalance
|
15
|
+
end
|
16
|
+
|
17
|
+
def get_prepaid_balance(request = Request.new)
|
18
|
+
call(request, Response)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Remit
|
2
|
+
module GetResults
|
3
|
+
class Request < Remit::Request
|
4
|
+
action :GetResults
|
5
|
+
parameter :operation
|
6
|
+
parameter :max_results_count
|
7
|
+
end
|
8
|
+
|
9
|
+
class Response < Remit::Response
|
10
|
+
class TransactionResults < Remit::BaseResponse
|
11
|
+
parameter :transaction_id
|
12
|
+
parameter :operation_type, :element => :operation
|
13
|
+
parameter :caller_reference
|
14
|
+
parameter :transaction_status, :element => :status
|
15
|
+
end
|
16
|
+
|
17
|
+
parameter :transaction_results, :collection => TransactionResults
|
18
|
+
parameter :number_pending, :type => :integer
|
19
|
+
end
|
20
|
+
|
21
|
+
def get_results(request = Request.new)
|
22
|
+
call(request, Response)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# Updated for API Version 2008-09-17
|
2
|
+
module Remit
|
3
|
+
module GetTokenByCaller
|
4
|
+
class Request < Remit::Request
|
5
|
+
action :GetTokenByCaller
|
6
|
+
parameter :caller_reference
|
7
|
+
parameter :token_id
|
8
|
+
end
|
9
|
+
|
10
|
+
class InnerResponse < Remit::BaseResponse
|
11
|
+
parameter :token, :type => Token
|
12
|
+
end
|
13
|
+
|
14
|
+
class Response < Remit::Response
|
15
|
+
parameter :inner, :element => "GetTokenByCallerResult", :type => InnerResponse
|
16
|
+
inner_parameters :token
|
17
|
+
end
|
18
|
+
|
19
|
+
def get_token_by_caller(request = Request.new)
|
20
|
+
call(request, Response)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Remit
|
2
|
+
module GetTokenUsage
|
3
|
+
class Request < Remit::Request
|
4
|
+
action :GetTokenUsage
|
5
|
+
parameter :token_id, :required => true
|
6
|
+
end
|
7
|
+
|
8
|
+
class Response < Remit::Response
|
9
|
+
parameter :token_usage_limits, :type => TokenUsageLimit
|
10
|
+
end
|
11
|
+
|
12
|
+
def get_token_usage(request = Request.new)
|
13
|
+
call(request, Response)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Remit
|
2
|
+
module GetTokens
|
3
|
+
class Request < Remit::Request
|
4
|
+
action :GetTokens
|
5
|
+
parameter :caller_reference
|
6
|
+
parameter :token_friendly_name
|
7
|
+
parameter :token_status
|
8
|
+
end
|
9
|
+
|
10
|
+
class Response < Remit::Response
|
11
|
+
parameter :tokens, :collection => Token
|
12
|
+
end
|
13
|
+
|
14
|
+
def get_tokens(request = Request.new)
|
15
|
+
call(request, Response)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Remit
|
2
|
+
module GetTotalPrepaidLiability
|
3
|
+
class Request < Remit::Request
|
4
|
+
action :GetTotalPrepaidLiability
|
5
|
+
end
|
6
|
+
|
7
|
+
class Response < Remit::Response
|
8
|
+
class OutstandingPrepaidLiability < Remit::BaseResponse
|
9
|
+
parameter :outstanding_balance, :type => Amount
|
10
|
+
parameter :panding_in_balance, :type => Amount
|
11
|
+
end
|
12
|
+
|
13
|
+
parameter :outstanding_prepaid_liability, :type => OutstandingPrepaidLiability
|
14
|
+
end
|
15
|
+
|
16
|
+
def get_total_prepaid_liability(request = Request.new)
|
17
|
+
call(request, Response)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|