Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 15 additions & 18 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -1,28 +1,28 @@
PATH
remote: .
specs:
hyperwallet-ruby (0.1.0)
activesupport (~> 6.0.3.2)
faraday (~> 0.17.3)
hyperwallet-ruby (0.1.1)
faraday (~> 1.0)

GEM
remote: https://rubygems.org/
specs:
activesupport (6.0.3.2)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 0.7, < 2)
minitest (~> 5.1)
tzinfo (~> 1.1)
zeitwerk (~> 2.2, >= 2.2.2)
coderay (1.1.3)
concurrent-ruby (1.1.6)
diff-lcs (1.3)
faraday (0.17.3)
faraday (1.4.3)
faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0)
faraday-excon (~> 1.1)
faraday-net_http (~> 1.0)
faraday-net_http_persistent (~> 1.1)
multipart-post (>= 1.2, < 3)
i18n (1.8.3)
concurrent-ruby (~> 1.0)
ruby2_keywords (>= 0.0.4)
faraday-em_http (1.0.0)
faraday-em_synchrony (1.0.0)
faraday-excon (1.1.0)
faraday-net_http (1.0.1)
faraday-net_http_persistent (1.1.0)
method_source (1.0.0)
minitest (5.14.1)
multipart-post (2.1.1)
pry (0.13.1)
coderay (~> 1.1)
Expand All @@ -41,10 +41,7 @@ GEM
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.9.0)
rspec-support (3.9.3)
thread_safe (0.3.6)
tzinfo (1.2.7)
thread_safe (~> 0.1)
zeitwerk (2.3.0)
ruby2_keywords (0.0.4)

PLATFORMS
ruby
Expand Down
133 changes: 133 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,136 @@ The gem is available as open source under the terms of the [MIT License](https:/
## Code of Conduct

Everyone interacting in the Hyperwallet::Ruby project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/hyperwallet-ruby/blob/master/CODE_OF_CONDUCT.md).

### Payee
```ruby
# index
payee_connector = Hyperwallet::Resources::Payee
payees = payee_connector.index
```

#### create
```ruby
payload2 = {:client_user_id => 'test5userid5',
:profile_type => 'INDIVIDUAL' ,
:first_name => 'Han',
:last_name => 'Solo' ,
:date_of_birth => '1980-11-12',
:email => 'jgtr7@hey.com',
:address_line1 => '675 Dolores St',
:city => 'Berkeley' ,
:state_province => 'CA' ,
:country => 'US',
:postal_code => '94704',
:program_token => 'prg-1bd466b5-2a58-4e3a-8942-6a93591a9a86' }

new_payee2 = Hyperwallet::Resources::Payee.create(payload2)

```
#### show
```ruby
user_token = "usr-6ac6618e-44fe-4252-af8c-76cd4e68f601"
payee = Hyperwallet::Resources::Payee.new
payee.show(token: user_token)
```
#### Getting a new auth token
```ruby
user_token = "usr-6ac6618e-44fe-4252-af8c-76cd4e68f601"
existing_payee = Hyperwallet::Resources::Payee.new(token: user_token)
token = existing_payee.get_authentication_token
```
#### Getting the list of bank accounts for a user
```ruby
user_token = "usr-6ac6618e-44fe-4252-af8c-76cd4e68f601"
existing_payee = Hyperwallet::Resources::Payee.new(token: user_token)
bank_accounts = existing_payee.index_bank_accounts
```
### Transfer Methods
#### Getting transfer methods
##### On TransferMethod
```ruby
user_token = "usr-6ac6618e-44fe-4252-af8c-76cd4e68f601"
transfer_methods = Hyperwallet::Resources::TransferMethod.index(user_token: user_token)
```
##### On BankAccount
```ruby
user_token = "usr-6ac6618e-44fe-4252-af8c-76cd4e68f601"
bank_accounts = Hyperwallet::Resources::BankAccount.index(user_token: user_token)
```
#### Show BankAccount method
```ruby
user_token = "usr-6ac6618e-44fe-4252-af8c-76cd4e68f601"
transfer_token = "trm-e998ba11-ca03-4a27-8bd9-dc95120d8e57"
bank_account = Hyperwallet::Resources::BankAccount.new
bank_account.show(user_token: user_token, transfer_token: transfer_token)
```
#### Show TransferMethod method
```ruby
user_token = "usr-6ac6618e-44fe-4252-af8c-76cd4e68f601"
transfer_token = "trm-e998ba11-ca03-4a27-8bd9-dc95120d8e57"
transfer_method = Hyperwallet::Resources::TransferMethod.new
transfer_method.show(user_token: user_token, transfer_token: transfer_token)
```
#### Creating a bank account
```ruby
user_token = "usr-6ac6618e-44fe-4252-af8c-76cd4e68f601"

payload3 = {
token: user_token,
profile_type: "INDIVIDUAL",
transfer_method_country: "US",
transfer_method_currency: "USD",
type: "BANK_ACCOUNT",
branch_id: 101089292,
bank_account_id: 7861012347,
bank_account_purpose: "CHECKING",
bank_account_relationship: "SELF"
}

existing_payee = Hyperwallet::Resources::Payee.new(payload)
new_account = existing_payee.create_bank_account
```



### Payment
#### Create
```ruby
bank_account_token = "trm-b7b7e1f9-9a02-4cdf-a281-6beeb958c41a"
bank_account_token = 'trm-e998ba11-ca03-4a27-8bd9-dc95120d8e57'

payload = {
amount: "20.00",
currency: "USD",
client_payment_id: "123456789",
destination_token: bank_account_token,
program_token: "prg-1bd466b5-2a58-4e3a-8942-6a93591a9a86",
purpose: "PP0001"
}

new_payment = Hyperwallet::Resources::Payment.create(payload)
```

#### Get payment
```ruby
token = "pmt-cb7ba194-1e2c-4227-ae43-006fafba062d"
payment = Hyperwallet::Resources::Payment.new
retrieved_payment = payment.show(token: token)
```
#### List payments
```ruby
payments = Hyperwallet::Resources::Payment.index
```

### Webhook Notification
```ruby
webhook_token = "wbh-e4b41307-536b-45d1-bf0d-55fe2d011aa8"
webhook = Hyperwallet::Resources::WebhookNotification.new
webhook.show(token: webhook_token)
```
### Receipts
```ruby
user_token = "usr-6ac6618e-44fe-4252-af8c-76cd4e68f601"
receipt = Hyperwallet::Resources::Receipt.new
receipt.show(token: user_token)
```
3 changes: 1 addition & 2 deletions hyperwallet-ruby.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,7 @@ Gem::Specification.new do |s|
s.executables = s.files.grep(%r{^exe/}) { |f| File.basename(f) }
s.require_paths = ["lib"]

s.add_dependency 'activesupport', "~> 6.0.3.2"
s.add_dependency "faraday", "~> 0.17.3"
s.add_dependency "faraday", "~> 1.0"
s.add_development_dependency "bundler", "~> 2.0"
s.add_development_dependency "rake", "~> 13.0"
s.add_development_dependency "rspec", "~> 3.0"
Expand Down
12 changes: 6 additions & 6 deletions lib/hyperwallet/api/client.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,16 +30,16 @@ def post(resource:, payload: nil)

def handle_response
if self.response.success?
@body = JSON.parse(self.response.body)
@body = JSON.parse(self.response.body) unless self.response.body.empty?
else
@errors = JSON.parse(self.response.body)
end
end

def get_connector
Faraday.new(url: base_url) do |conn|
Faraday.new(url: base_url, proxy: self.class.superclass.proxy) do |conn|
conn.adapter :net_http
conn.basic_auth(self.class.api_user, self.class.api_password)
conn.basic_auth(self.class.superclass.api_user, self.class.superclass.api_password)
end
end

Expand All @@ -52,10 +52,10 @@ def base_url
end

def active_url
if self.class.uat?
if self.class.superclass.uat?
UAT_URL
elsif self.class.production?
BASE_URL
elsif self.class.superclass.production?
PRODUCTION_URL
end
end

Expand Down
7 changes: 3 additions & 4 deletions lib/hyperwallet/api/config.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,14 @@ module Hyperwallet
module Api
class Config

PRODUCTION_URL = "https://api.sandbox.hyperwallet.com/rest"
PRODUCTION_URL = "https://api.paylution.com/rest"
UAT_URL = "https://uat-api.paylution.com/rest"

API_VERSION = "/v3"
MODES = [:uat, :production]

class << self
cattr_accessor :api_user, :api_password, :api_mode

attr_accessor :api_user, :api_password, :api_mode, :proxy
def uat?
api_mode == :uat
end
Expand All @@ -21,4 +20,4 @@ def production?
end
end
end
end
end
1 change: 0 additions & 1 deletion lib/hyperwallet/hyperwallet.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
require 'active_support/core_ext/class/attribute_accessors'
require "hyperwallet/version"
require "hyperwallet/api"
require "hyperwallet/resources"
Expand Down
3 changes: 2 additions & 1 deletion lib/hyperwallet/resources.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@
require 'hyperwallet/resources/transfer_method'
require 'hyperwallet/resources/bank_account'
require 'hyperwallet/resources/venmo_account'
require 'hyperwallet/resources/webhook_notification'
require 'hyperwallet/resources/webhook_notification'
require 'hyperwallet/resources/receipt'
6 changes: 3 additions & 3 deletions lib/hyperwallet/resources/base.rb
Original file line number Diff line number Diff line change
Expand Up @@ -91,15 +91,15 @@ def data_for_hydration
end

class << self
cattr_accessor :connector
attr_accessor :connector

def index
connector.get(resource: method_endpoint)
end

def create(data)
response = connector.post(resource: method_endpoint,
payload: prepare_payload(payload_attributes: data).to_json)
payload: JSON.generate(prepare_payload(payload_attributes: data)))

data = if success?
response
Expand Down Expand Up @@ -135,7 +135,7 @@ def instantiate_from_data(data = {})
data.each_pair do |key, value|
attributes.merge!({snakecase(key).to_sym => value})
end
self.send(:new, attributes)
self.send(:new, **attributes)
end

def camelCase(key)
Expand Down
4 changes: 2 additions & 2 deletions lib/hyperwallet/resources/payee.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
require 'active_support/json'
require 'json'

module Hyperwallet
module Resources
Expand Down Expand Up @@ -30,7 +30,7 @@ def show(token: nil)
end

def update(token:, attributes_to_update: )
connector.put(resource: ENDPOINT + "/" + token, payload: prepare_payload(payload_attributes: attributes_to_update).to_json)
connector.put(resource: ENDPOINT + "/" + token, payload: JSON.generate(prepare_payload(payload_attributes: attributes_to_update)))
handle_response
end

Expand Down
35 changes: 35 additions & 0 deletions lib/hyperwallet/resources/receipt.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
require 'json'

module Hyperwallet
module Resources
class Receipt < Hyperwallet::Resources::Base

ENDPOINT = 'users'

attr_accessor :token,
:journal_id,
:type,
:created_on,
:entry,
:source_token,
:destination_token,
:amount,
:fee,
:currency,
:details


def show(token: nil)
token ||= @token
connector.get(resource: ENDPOINT + "/" + token + "/" + method_endpoint)
handle_response
end

private

def method_endpoint
'receipts'
end
end
end
end
2 changes: 1 addition & 1 deletion lib/hyperwallet/resources/transfer_method.rb
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ def index(user_token:)

def create(user_token, data)
response = connector.post(resource: resource_endpoint(token: user_token),
payload: prepare_payload(payload_attributes: data).to_json)
payload: JSON.generate(prepare_payload(payload_attributes: data)))
instantiate_from_data(response)
end

Expand Down
2 changes: 1 addition & 1 deletion lib/hyperwallet/version.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
module Hyperwallet
VERSION = "0.1.0"
VERSION = "0.1.1"
end
Loading