upay 0.0.1
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.
- checksums.yaml +7 -0
- data/.codeclimate.yml +3 -0
- data/.gitignore +16 -0
- data/.rspec +3 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +21 -0
- data/Gemfile +6 -0
- data/Guardfile +70 -0
- data/LICENSE.txt +22 -0
- data/README.md +39 -0
- data/Rakefile +11 -0
- data/examples/capture_and_authorize.rb +90 -0
- data/examples/get_a_customer.rb +14 -0
- data/lib/upay/address/address.rb +53 -0
- data/lib/upay/address/billing_address.rb +13 -0
- data/lib/upay/address/shipping_address.rb +13 -0
- data/lib/upay/configure.rb +28 -0
- data/lib/upay/credit_card.rb +131 -0
- data/lib/upay/customer.rb +161 -0
- data/lib/upay/order.rb +56 -0
- data/lib/upay/payment.rb +15 -0
- data/lib/upay/people/buyer.rb +33 -0
- data/lib/upay/people/payer.rb +30 -0
- data/lib/upay/people/person.rb +37 -0
- data/lib/upay/plan.rb +145 -0
- data/lib/upay/report.rb +22 -0
- data/lib/upay/requestor.rb +90 -0
- data/lib/upay/signature.rb +26 -0
- data/lib/upay/subscription.rb +94 -0
- data/lib/upay/token.rb +98 -0
- data/lib/upay/transaction.rb +137 -0
- data/lib/upay/version.rb +3 -0
- data/lib/upay.rb +86 -0
- data/spec/factories/address.rb +36 -0
- data/spec/factories/credit_card.rb +22 -0
- data/spec/factories/customer.rb +12 -0
- data/spec/factories/order.rb +13 -0
- data/spec/factories/people.rb +29 -0
- data/spec/factories/plan.rb +26 -0
- data/spec/factories/token.rb +18 -0
- data/spec/factories/transaction.rb +16 -0
- data/spec/lib/upay/address/address_spec.rb +34 -0
- data/spec/lib/upay/address/billing_address_spec.rb +34 -0
- data/spec/lib/upay/address/shipping_address_spec.rb +34 -0
- data/spec/lib/upay/credit_card_spec.rb +39 -0
- data/spec/lib/upay/customer_spec.rb +18 -0
- data/spec/lib/upay/order_spec.rb +29 -0
- data/spec/lib/upay/people/buyer_spec.rb +19 -0
- data/spec/lib/upay/people/payer_spec.rb +19 -0
- data/spec/lib/upay/people/person_spec.rb +19 -0
- data/spec/lib/upay/plan_spec.rb +54 -0
- data/spec/lib/upay/token_spec.rb +33 -0
- data/spec/lib/upay/transaction_spec.rb +39 -0
- data/spec/lib/upay_spec.rb +5 -0
- data/spec/spec_helper.rb +123 -0
- data/spec/support/factory_girl.rb +5 -0
- data/upay.gemspec +47 -0
- metadata +361 -0
@@ -0,0 +1,94 @@
|
|
1
|
+
module Upay
|
2
|
+
class Subscription
|
3
|
+
def initialize(args = {})
|
4
|
+
args.each do |k,v|
|
5
|
+
instance_variable_set("@#{k}", v) unless v.nil?
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
def id; @id end
|
10
|
+
def id=(id);
|
11
|
+
@id = id
|
12
|
+
end
|
13
|
+
|
14
|
+
def plan; @plan end
|
15
|
+
def plan=(plan);
|
16
|
+
@plan = plan
|
17
|
+
end
|
18
|
+
|
19
|
+
def customer; @customer end
|
20
|
+
def customer=(customer);
|
21
|
+
@customer = customer
|
22
|
+
end
|
23
|
+
|
24
|
+
def trialDays; @trialDays end
|
25
|
+
def trialDays=(trialDays);
|
26
|
+
@trialDays = trialDays
|
27
|
+
end
|
28
|
+
|
29
|
+
def quantity; @quantity end
|
30
|
+
def quantity=(quantity);
|
31
|
+
@quantity = quantity
|
32
|
+
end
|
33
|
+
|
34
|
+
def installments; @installments end
|
35
|
+
def installments=(installments);
|
36
|
+
@installments = installments
|
37
|
+
end
|
38
|
+
|
39
|
+
def currentPeriodStart; @currentPeriodStart end
|
40
|
+
def currentPeriodStart=(currentPeriodStart);
|
41
|
+
@currentPeriodStart = currentPeriodStart
|
42
|
+
end
|
43
|
+
|
44
|
+
def currentPeriodEnd; @currentPeriodEnd end
|
45
|
+
def currentPeriodEnd=(currentPeriodEnd);
|
46
|
+
@currentPeriodEnd = currentPeriodEnd
|
47
|
+
end
|
48
|
+
|
49
|
+
def creditCardToken; @creditCardToken end
|
50
|
+
def creditCardToken=(creditCardToken);
|
51
|
+
@creditCardToken = creditCardToken
|
52
|
+
end
|
53
|
+
|
54
|
+
#Verb: POST
|
55
|
+
#Description:
|
56
|
+
#Returns: JSON
|
57
|
+
def create
|
58
|
+
url = "rest/v4.3/subscriptions/"
|
59
|
+
hash_for_create = self.to_hash
|
60
|
+
response = Requestor.new.post(url, hash_for_create)
|
61
|
+
puts response
|
62
|
+
self.id = response["id"]
|
63
|
+
self
|
64
|
+
end
|
65
|
+
|
66
|
+
#Verb: UPDATE
|
67
|
+
#Description:
|
68
|
+
#Returns: JSON
|
69
|
+
def update
|
70
|
+
url = "/rest/v4.3/subscriptions/{self.id}"
|
71
|
+
Requestor.new.put(url, hash_for_create)
|
72
|
+
end
|
73
|
+
|
74
|
+
#Verb: POST
|
75
|
+
#Description:
|
76
|
+
#Returns: JSON
|
77
|
+
def show
|
78
|
+
url = "rest/v4.3/subscriptions/#{self.id}"
|
79
|
+
Requestor.new.get(url, {})
|
80
|
+
end
|
81
|
+
|
82
|
+
#Verb: DELETE
|
83
|
+
#Description:
|
84
|
+
#Returns: JSON
|
85
|
+
def delete
|
86
|
+
url = "rest/v4.3/subscriptions/#{self.id}"
|
87
|
+
Requestor.new.delete(url, {})
|
88
|
+
end
|
89
|
+
|
90
|
+
def to_hash
|
91
|
+
self.instance_variables.each_with_object({}) { |var,hash| hash[var.to_s.delete("@")] = self.instance_variable_get(var)}
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
data/lib/upay/token.rb
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
module Upay
|
2
|
+
class Token
|
3
|
+
def payerId; @payerId end
|
4
|
+
def payerId=(payerId);
|
5
|
+
@payerId = payerId
|
6
|
+
end
|
7
|
+
|
8
|
+
def name; @name end
|
9
|
+
def name=(name);
|
10
|
+
@name = name
|
11
|
+
end
|
12
|
+
|
13
|
+
def code; @code end
|
14
|
+
def code=(code);
|
15
|
+
@code = code
|
16
|
+
end
|
17
|
+
|
18
|
+
def error; @error end
|
19
|
+
def error=(error);
|
20
|
+
@error = error
|
21
|
+
end
|
22
|
+
|
23
|
+
def identificationNumber; @identificationNumber end
|
24
|
+
def identificationNumber=(identificationNumber);
|
25
|
+
@identificationNumber = identificationNumber
|
26
|
+
end
|
27
|
+
|
28
|
+
def paymentMethod; @paymentMethod end
|
29
|
+
def paymentMethod=(paymentMethod);
|
30
|
+
@paymentMethod = paymentMethod
|
31
|
+
end
|
32
|
+
|
33
|
+
def number; @number end
|
34
|
+
def number=(number);
|
35
|
+
@number = number
|
36
|
+
end
|
37
|
+
|
38
|
+
def expirationDate; @expirationDate end
|
39
|
+
def expirationDate=(expirationDate);
|
40
|
+
@expirationDate = expirationDate
|
41
|
+
end
|
42
|
+
|
43
|
+
def creditCardTokenId; @creditCardTokenId end
|
44
|
+
def creditCardTokenId=(creditCardTokenId);
|
45
|
+
@creditCardTokenId = creditCardTokenId
|
46
|
+
end
|
47
|
+
|
48
|
+
def valid?
|
49
|
+
validator = TokenValidator.new
|
50
|
+
validator.valid?(self)
|
51
|
+
end
|
52
|
+
|
53
|
+
def initialize(args = {})
|
54
|
+
args.each do |k,v|
|
55
|
+
instance_variable_set("@#{k}", v) unless v.nil?
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def create
|
60
|
+
data = {}
|
61
|
+
data["creditCardToken"] = self.to_hash
|
62
|
+
response = Requestor.new.request( PAYMENTS_API_URL, "CREATE_TOKEN", data)
|
63
|
+
self.code = response["response"]["code"]
|
64
|
+
self.error = response["response"]["error"]
|
65
|
+
|
66
|
+
if response["response"]["error"] == nil
|
67
|
+
self.creditCardTokenId = response["response"]["creditCardToken"]["creditCardTokenId"]
|
68
|
+
end
|
69
|
+
|
70
|
+
response
|
71
|
+
end
|
72
|
+
|
73
|
+
def destroy
|
74
|
+
data = {:removeCreditCardToken => { :payerId => self.payerId, :creditCardTokenId => self.creditCardTokenId}}
|
75
|
+
response = Requestor.new.request( PAYMENTS_API_URL, "REMOVE_TOKEN", data)
|
76
|
+
end
|
77
|
+
|
78
|
+
def show
|
79
|
+
data = {:removeCreditCardInformation => { :payerId => self.payerId, :creditCardTokenId => self.creditCardTokenId}}
|
80
|
+
response = Requestor.new.request( PAYMENTS_API_URL, "GET_TOKENS", data)
|
81
|
+
end
|
82
|
+
|
83
|
+
def to_hash
|
84
|
+
self.instance_variables.each_with_object({}) { |var,hash| hash[var.to_s.delete("@")] = self.instance_variable_get(var)}
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
class TokenValidator
|
89
|
+
include Veto.validator
|
90
|
+
|
91
|
+
validates :payerId, presence: true
|
92
|
+
validates :name, presence: true
|
93
|
+
validates :identificationNumber, presence: true
|
94
|
+
validates :paymentMethod, presence: true
|
95
|
+
validates :number, presence: true
|
96
|
+
validates :expirationDate, presence: true
|
97
|
+
end
|
98
|
+
end
|
@@ -0,0 +1,137 @@
|
|
1
|
+
module Upay
|
2
|
+
class Transaction
|
3
|
+
def initialize(args = {})
|
4
|
+
args.each do |k,v|
|
5
|
+
instance_variable_set("@#{k}", v)
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
def order; @order end
|
10
|
+
def order=(order = nil); @order = order; end
|
11
|
+
|
12
|
+
def payer; @payer end
|
13
|
+
def payer=(payer = nil); @payer = payer; end
|
14
|
+
|
15
|
+
def creditCardTokenId; @creditCardTokenId end
|
16
|
+
def creditCardTokenId=(creditCardTokenId = nil); @creditCardTokenId = creditCardTokenId; end
|
17
|
+
|
18
|
+
def type; @type end
|
19
|
+
def type=(type = nil); @type = type; end
|
20
|
+
|
21
|
+
def paymentMethod; @paymentMethod end
|
22
|
+
def paymentMethod=(paymentMethod = nil); @paymentMethod = paymentMethod; end
|
23
|
+
|
24
|
+
def paymentCountry; @paymentCountry end
|
25
|
+
def paymentCountry=(paymentCountry = nil); @paymentCountry = paymentCountry; end
|
26
|
+
|
27
|
+
def deviceSessionId; @deviceSessionId end
|
28
|
+
def deviceSessionId=(deviceSessionId = nil); @deviceSessionId = deviceSessionId; end
|
29
|
+
|
30
|
+
def ipAddress; @ipAddress; end
|
31
|
+
def ipAddress=(ipAddress = nil) @ipAddress = ipAddress end
|
32
|
+
|
33
|
+
def cookie; @cookie end
|
34
|
+
def cookie=(cookie = nil) @cookie = cookie end
|
35
|
+
|
36
|
+
def userAgent; @userAgent end
|
37
|
+
def userAgent=(userAgent = nil) @userAgent = userAgent; end
|
38
|
+
|
39
|
+
def capture_and_authorize
|
40
|
+
payload = {}
|
41
|
+
payload["transaction"] = self.to_hash
|
42
|
+
response = Payment.new.submit_transaction(payload)["response"] || {code: "ERROR", error: "something went terribly wrong"}
|
43
|
+
|
44
|
+
if response["code"] == "SUCCESS"
|
45
|
+
transaction_response_hash = response["transactionResponse"] || {}
|
46
|
+
transaction_response = TransactionResponse.new(transaction_response_hash)
|
47
|
+
else
|
48
|
+
raise response.to_json.inspect
|
49
|
+
end
|
50
|
+
transaction_response
|
51
|
+
end
|
52
|
+
|
53
|
+
def valid?
|
54
|
+
validator = TransactionValidator.new
|
55
|
+
validator.valid?(self)
|
56
|
+
end
|
57
|
+
|
58
|
+
def to_hash
|
59
|
+
transaction_hash = self.instance_variables.each_with_object({}) { |var,hash| hash[var.to_s.delete("@").to_sym] = self.instance_variable_get(var)}
|
60
|
+
transaction_hash[:order] = self.order.to_hash if self.order
|
61
|
+
transaction_hash[:payer] = self.payer.to_hash if self.payer
|
62
|
+
transaction_hash
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
class TransactionValidator
|
67
|
+
include Veto.validator
|
68
|
+
|
69
|
+
validates :creditCardTokenId, presence: true
|
70
|
+
validates :cookie, presence: true
|
71
|
+
validates :deviceSessionId, presence: true
|
72
|
+
validates :order, presence: true
|
73
|
+
validates :payer, presence: true
|
74
|
+
validates :paymentCountry, presence: true
|
75
|
+
validates :paymentMethod, presence: true
|
76
|
+
validates :type, presence: true
|
77
|
+
end
|
78
|
+
|
79
|
+
class TransactionResponse
|
80
|
+
def initialize(args = {})
|
81
|
+
args.each do |k,v|
|
82
|
+
instance_variable_set("@#{k}", v)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def orderId; @orderId end
|
87
|
+
def orderId=(orderId=nil) @orderId = orderId; end
|
88
|
+
|
89
|
+
def transactionId; @transactionId end
|
90
|
+
def transactionId=(transactionId=nil) @transactionId = transactionId; end
|
91
|
+
|
92
|
+
def paymentNetworkResponseCode; @paymentNetworkResponseCode end
|
93
|
+
def paymentNetworkResponseCode=(paymentNetworkResponseCode=nil) @paymentNetworkResponseCode = paymentNetworkResponseCode; end
|
94
|
+
|
95
|
+
def paymentNetworkResponseErrorMessage; @paymentNetworkResponseErrorMessage end
|
96
|
+
def paymentNetworkResponseErrorMessage=(paymentNetworkResponseErrorMessage=nil) @paymentNetworkResponseErrorMessage = paymentNetworkResponseErrorMessage; end
|
97
|
+
|
98
|
+
def trazabilityCode; @trazabilityCode end
|
99
|
+
def trazabilityCode=(trazabilityCode=nil) @trazabilityCode = trazabilityCode; end
|
100
|
+
|
101
|
+
def authorizationCode; @authorizationCode end
|
102
|
+
def authorizationCode=(authorizationCode=nil) @authorizationCode = authorizationCode; end
|
103
|
+
|
104
|
+
def pendingReason; @pendingReason end
|
105
|
+
def pendingReason=(pendingReason=nil) @pendingReason = pendingReason; end
|
106
|
+
|
107
|
+
def responseCode; @responseCode end
|
108
|
+
def responseCode=(responseCode=nil) @responseCode = responseCode; end
|
109
|
+
|
110
|
+
def errorCode; @errorCode end
|
111
|
+
def errorCode=(errorCode=nil) @errorCode = errorCode; end
|
112
|
+
|
113
|
+
def responseMessage; @responseMessage end
|
114
|
+
def responseMessage=(responseMessage=nil) @responseMessage = responseMessage; end
|
115
|
+
|
116
|
+
def transactionDate; @transactionDate end
|
117
|
+
def transactionDate=(transactionDate=nil) @transactionDate = transactionDate; end
|
118
|
+
|
119
|
+
def transactionTime; @transactionTime end
|
120
|
+
def transactionTime=(transactionTime=nil) @transactionTime = transactionTime; end
|
121
|
+
|
122
|
+
def operationDate; @operationDate end
|
123
|
+
def operationDate=(operationDate=nil) @operationDate = operationDate; end
|
124
|
+
|
125
|
+
def extraParameters; @extraParameters end
|
126
|
+
def extraParameters=(extraParameters=nil) @extraParameters = extraParameters; end
|
127
|
+
|
128
|
+
def valid?
|
129
|
+
#validator = TransactionValidator.new
|
130
|
+
#validator.valid?(self)
|
131
|
+
end
|
132
|
+
|
133
|
+
def to_hash
|
134
|
+
transaction_hash = self.instance_variables.each_with_object({}) { |var,hash| hash[var.to_s.delete("@").to_sym] = self.instance_variable_get(var)}
|
135
|
+
end
|
136
|
+
end
|
137
|
+
end
|
data/lib/upay/version.rb
ADDED
data/lib/upay.rb
ADDED
@@ -0,0 +1,86 @@
|
|
1
|
+
require "digest"
|
2
|
+
require "json/add/core"
|
3
|
+
require "uri"
|
4
|
+
require "net/https"
|
5
|
+
require "base64"
|
6
|
+
require "faraday"
|
7
|
+
require "faraday_middleware"
|
8
|
+
require "veto"
|
9
|
+
|
10
|
+
require "upay/address/address"
|
11
|
+
require "upay/address/billing_address"
|
12
|
+
require "upay/address/shipping_address"
|
13
|
+
|
14
|
+
require "upay/credit_card"
|
15
|
+
require "upay/customer"
|
16
|
+
require "upay/order"
|
17
|
+
require "upay/plan"
|
18
|
+
require "upay/payment"
|
19
|
+
|
20
|
+
require "upay/people/person"
|
21
|
+
require "upay/people/buyer"
|
22
|
+
require "upay/people/payer"
|
23
|
+
|
24
|
+
require "upay/requestor"
|
25
|
+
require "upay/report"
|
26
|
+
|
27
|
+
require "upay/signature"
|
28
|
+
require "upay/subscription"
|
29
|
+
require "upay/token"
|
30
|
+
require "upay/transaction"
|
31
|
+
require "upay/version"
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
module Upay
|
36
|
+
include Veto.validator
|
37
|
+
|
38
|
+
PAYMENTS_API_URL = "/payments-api/4.0/service.cgi"
|
39
|
+
REPORTS_API_URL = "/reports-api/4.0/service.cgi"
|
40
|
+
|
41
|
+
def self.config
|
42
|
+
yield self
|
43
|
+
end
|
44
|
+
|
45
|
+
def self.merchant_id; @merchant_id end
|
46
|
+
def self.merchant_id=(merchant_id)
|
47
|
+
@merchant_id = merchant_id
|
48
|
+
end
|
49
|
+
|
50
|
+
def self.account_id; @account_id end
|
51
|
+
def self.account_id=(account_id)
|
52
|
+
@account_id = account_id
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.api_key; @api_key end
|
56
|
+
def self.api_key=(api_key)
|
57
|
+
@api_key = api_key
|
58
|
+
end
|
59
|
+
|
60
|
+
def self.api_login; @api_login end
|
61
|
+
def self.api_login=(api_login)
|
62
|
+
@api_login = api_login
|
63
|
+
end
|
64
|
+
|
65
|
+
def self.test; @test end
|
66
|
+
def self.test=(test)
|
67
|
+
@test = test
|
68
|
+
end
|
69
|
+
|
70
|
+
def self.lang; @lang end
|
71
|
+
def self.lang=(lang)
|
72
|
+
@lang = lang
|
73
|
+
end
|
74
|
+
|
75
|
+
def self.logger; @logger end
|
76
|
+
def self.logger=(logger)
|
77
|
+
@logger = logger
|
78
|
+
end
|
79
|
+
|
80
|
+
def self.notifyUrl; @notifyUrl end
|
81
|
+
def self.notifyUrl=(notifyUrl)
|
82
|
+
@notifyUrl = notifyUrl
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
86
|
+
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# spec/factories/shipping_address.rb
|
2
|
+
|
3
|
+
require 'faker'
|
4
|
+
|
5
|
+
FactoryGirl.define do
|
6
|
+
|
7
|
+
factory :address, class: Upay::Address::Address do |f|
|
8
|
+
f.street1{ Faker::Address.street_address }
|
9
|
+
f.street2{ Faker::Address.secondary_address }
|
10
|
+
f.city{ Faker::Address.city }
|
11
|
+
f.state{ Faker::Address.state }
|
12
|
+
f.country{ Faker::Address.country_code}
|
13
|
+
f.postalCode{ Faker::Address.zip_code }
|
14
|
+
f.phone{ Faker::Number.number(10) }
|
15
|
+
end
|
16
|
+
|
17
|
+
factory :shipping_address, class: Upay::Address::ShippingAddress do |f|
|
18
|
+
f.street1{ Faker::Address.street_address }
|
19
|
+
f.street2{ Faker::Address.secondary_address }
|
20
|
+
f.city{ Faker::Address.city }
|
21
|
+
f.state{ Faker::Address.state }
|
22
|
+
f.country{ Faker::Address.country_code}
|
23
|
+
f.postalCode{ Faker::Address.zip_code }
|
24
|
+
f.phone{ Faker::Number.number(10) }
|
25
|
+
end
|
26
|
+
|
27
|
+
factory :billing_address, class: Upay::Address::BillingAddress do |f|
|
28
|
+
f.street1{ Faker::Address.street_address }
|
29
|
+
f.street2{ Faker::Address.secondary_address }
|
30
|
+
f.city{ Faker::Address.city }
|
31
|
+
f.state{ Faker::Address.state }
|
32
|
+
f.country{ Faker::Address.country_code}
|
33
|
+
f.postalCode{ Faker::Address.zip_code }
|
34
|
+
f.phone{ Faker::Number.number(10) }
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# spec/factories/credit_card.rb
|
2
|
+
|
3
|
+
require 'faker'
|
4
|
+
|
5
|
+
FactoryGirl.define do
|
6
|
+
|
7
|
+
factory :credit_card, class: Upay::CreditCard do |f|
|
8
|
+
f.name { Faker::Name.name }
|
9
|
+
f.document{ Faker::Number.number(10) }
|
10
|
+
f.number{ Faker::Number.number(10) }
|
11
|
+
f.expMonth{
|
12
|
+
date = Faker::Business.credit_card_expiry_date.strftime("%m/%Y").split("/")
|
13
|
+
date.first
|
14
|
+
}
|
15
|
+
f.expYear{
|
16
|
+
date = Faker::Business.credit_card_expiry_date.strftime("%m/%Y").split("/")
|
17
|
+
date.last
|
18
|
+
}
|
19
|
+
f.type{ Faker::Business.credit_card_type }
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# spec/factories/order.rb
|
2
|
+
|
3
|
+
require 'faker'
|
4
|
+
|
5
|
+
FactoryGirl.define do
|
6
|
+
|
7
|
+
factory :order, class: Upay::Order do |f|
|
8
|
+
f.referenceCode{ Faker::Number.number(10) }
|
9
|
+
f.description{ Faker::Commerce.product_name }
|
10
|
+
f.signature{ Faker::Number.number(10) }
|
11
|
+
f.buyer{ FactoryGirl.build(:people_buyer) }
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# spec/factories/person.rb
|
2
|
+
|
3
|
+
require 'faker'
|
4
|
+
|
5
|
+
FactoryGirl.define do
|
6
|
+
|
7
|
+
factory :people_person, class: Upay::People::Person do |f|
|
8
|
+
f.fullName{ Faker::Name.name}
|
9
|
+
f.emailAddress{ Faker::Internet.email }
|
10
|
+
f.contactPhone{ Faker::Number.number(10) }
|
11
|
+
end
|
12
|
+
|
13
|
+
factory :people_buyer, class: Upay::People::Buyer do |f|
|
14
|
+
person = FactoryGirl.build(:people_person)
|
15
|
+
|
16
|
+
f.fullName{ person.fullName}
|
17
|
+
f.emailAddress{ person.emailAddress}
|
18
|
+
f.contactPhone{ person.contactPhone }
|
19
|
+
end
|
20
|
+
|
21
|
+
factory :people_payer, class: Upay::People::Payer do |f|
|
22
|
+
person = FactoryGirl.build(:people_person)
|
23
|
+
|
24
|
+
f.fullName{ person.fullName}
|
25
|
+
f.emailAddress{ person.emailAddress}
|
26
|
+
f.contactPhone{ person.contactPhone }
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# spec/factories/plan.rb
|
2
|
+
|
3
|
+
require 'faker'
|
4
|
+
|
5
|
+
FactoryGirl.define do
|
6
|
+
|
7
|
+
factory :plan, class: Upay::Plan do |f|
|
8
|
+
p_value = Faker::Number.number(5)
|
9
|
+
f.accountId{ Faker::Number.number(6)}
|
10
|
+
f.planCode{ Faker::Code.isbn}
|
11
|
+
f.description{ Faker::Lorem.sentence(3, true, 4) }
|
12
|
+
f.interval{ "MONTH" }
|
13
|
+
f.intervalCount{ Faker::Number.digit }
|
14
|
+
f.value{ p_value}
|
15
|
+
f.currency{ "COP" }
|
16
|
+
f.additionalValues{
|
17
|
+
[{
|
18
|
+
name: "PLAN_VALUE",
|
19
|
+
value: p_value,
|
20
|
+
currency: "COP"
|
21
|
+
}]
|
22
|
+
}
|
23
|
+
f.trialDays{ Faker::Number.digit }
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# spec/factories/token.rb
|
2
|
+
|
3
|
+
require 'faker'
|
4
|
+
|
5
|
+
FactoryGirl.define do
|
6
|
+
|
7
|
+
factory :token, class: Upay::Token do |f|
|
8
|
+
f.payerId{ Faker::Number.number(5)}
|
9
|
+
f.name{ Faker::Name.name }
|
10
|
+
f.identificationNumber{ Faker::Number.number(10) }
|
11
|
+
f.paymentMethod{ Faker::Business.credit_card_type }
|
12
|
+
f.number{ Faker::Business.credit_card_number.gsub("-", "") }
|
13
|
+
f.expirationDate{
|
14
|
+
date = Faker::Business.credit_card_expiry_date.strftime("%m/%Y").split("/")
|
15
|
+
"#{date.last}/#{date.first}"
|
16
|
+
}
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# spec/factories/transaction.rb
|
2
|
+
|
3
|
+
require 'faker'
|
4
|
+
|
5
|
+
FactoryGirl.define do
|
6
|
+
factory :transaction, class: Upay::Transaction do |f|
|
7
|
+
f.creditCardTokenId{ Faker::Internet.password(10, 20) }
|
8
|
+
f.cookie{ Faker::Internet.password(10, 20) }
|
9
|
+
f.deviceSessionId{ Faker::Internet.password(10, 20) }
|
10
|
+
f.order{ FactoryGirl.build(:order) }
|
11
|
+
f.payer{ FactoryGirl.build(:people_payer) }
|
12
|
+
f.paymentCountry{ Faker::Address.country_code }
|
13
|
+
f.paymentMethod{ Faker::Business.credit_card_type.upcase }
|
14
|
+
f.type{ "AUTHORIZATION_AND_CAPTURE" }
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# spec/models/address.rb
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Upay::Address::Address do
|
5
|
+
it "has a valid factory" do
|
6
|
+
ship_address = FactoryGirl.build(:address)
|
7
|
+
expect(ship_address).to be_valid
|
8
|
+
end
|
9
|
+
|
10
|
+
it "is invalid without a street1" do
|
11
|
+
ship_address = FactoryGirl.build(:address, street1: nil)
|
12
|
+
expect(ship_address).to_not be_valid
|
13
|
+
end
|
14
|
+
|
15
|
+
it "is invalid without a city" do
|
16
|
+
ship_address = FactoryGirl.build(:address, city: nil);
|
17
|
+
expect(ship_address).to_not be_valid
|
18
|
+
end
|
19
|
+
|
20
|
+
it "is invalid without a state" do
|
21
|
+
ship_address = FactoryGirl.build(:address, state: nil);
|
22
|
+
expect(ship_address).to_not be_valid
|
23
|
+
end
|
24
|
+
|
25
|
+
it "is invalid without a country" do
|
26
|
+
ship_address = FactoryGirl.build(:address, country: nil);
|
27
|
+
expect(ship_address).to_not be_valid
|
28
|
+
end
|
29
|
+
|
30
|
+
it "is invalid without a postalCode" do
|
31
|
+
ship_address = FactoryGirl.build(:address, postalCode: nil);
|
32
|
+
expect(ship_address).to_not be_valid
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# spec/models/billing_address.rb
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Upay::Address::BillingAddress do
|
5
|
+
it "has a valid factory" do
|
6
|
+
ship_address = FactoryGirl.build(:billing_address)
|
7
|
+
expect(ship_address).to be_valid
|
8
|
+
end
|
9
|
+
|
10
|
+
it "is invalid without a street1" do
|
11
|
+
ship_address = FactoryGirl.build(:billing_address, street1: nil)
|
12
|
+
expect(ship_address).to_not be_valid
|
13
|
+
end
|
14
|
+
|
15
|
+
it "is invalid without a city" do
|
16
|
+
ship_address = FactoryGirl.build(:billing_address, city: nil);
|
17
|
+
expect(ship_address).to_not be_valid
|
18
|
+
end
|
19
|
+
|
20
|
+
it "is invalid without a state" do
|
21
|
+
ship_address = FactoryGirl.build(:billing_address, state: nil);
|
22
|
+
expect(ship_address).to_not be_valid
|
23
|
+
end
|
24
|
+
|
25
|
+
it "is invalid without a country" do
|
26
|
+
ship_address = FactoryGirl.build(:billing_address, country: nil);
|
27
|
+
expect(ship_address).to_not be_valid
|
28
|
+
end
|
29
|
+
|
30
|
+
it "is invalid without a postalCode" do
|
31
|
+
ship_address = FactoryGirl.build(:billing_address, postalCode: nil);
|
32
|
+
expect(ship_address).to_not be_valid
|
33
|
+
end
|
34
|
+
end
|