expresscheckout 0.1.5 → 0.1.6
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 +4 -4
- data/.gitignore +2 -0
- data/README.md +1 -1
- data/RELEASE.md +3 -0
- data/example.rb +12 -0
- data/expresscheckout.gemspec +1 -1
- data/lib/Cards.rb +15 -59
- data/lib/Customers.rb +92 -0
- data/lib/Orders.rb +25 -158
- data/lib/Payments.rb +59 -16
- data/lib/Test.rb +79 -24
- data/lib/Wallets.rb +74 -0
- data/lib/errors/api_connection_error.rb +2 -0
- data/lib/errors/api_error.rb +3 -0
- data/lib/errors/authentication_error.rb +3 -0
- data/lib/errors/invalid_arguement_error.rb +7 -0
- data/lib/errors/invalid_request_error.rb +3 -0
- data/lib/errors/juspay_error.rb +14 -0
- data/lib/expresscheckout/version.rb +1 -1
- data/lib/expresscheckout.rb +6 -3
- data/lib/util.rb +39 -15
- metadata +14 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 943df6f1dca8ae6f76f96ecea6843fe6abe112d2
         | 
| 4 | 
            +
              data.tar.gz: 94048f6a2fcdca9ba1a02910562d792e4dc490d1
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 6665100fb84b0d0f64a178715970097f829033f3f85f175d6798cd893a7b288cdf21e320042ba68d6a8c22eb9ddd3c4d60301f480a3d3c9597059fb79b4103c4
         | 
| 7 | 
            +
              data.tar.gz: 7e934728755289d271a71d5e6c94efaf4f06ed28d2acc1d9a353799b64329a10ede5acdbb81263556d54079080ac954e62271804bbfa8ed0cb06894b7c5411be
         | 
    
        data/.gitignore
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -26,7 +26,7 @@ Or install it yourself as: | |
| 26 26 |  | 
| 27 27 | 
             
            After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
         | 
| 28 28 |  | 
| 29 | 
            -
            To install this gem onto your local machine, run `bundle exec rake install`. | 
| 29 | 
            +
            To install this gem onto your local machine, run `bundle exec rake install`.
         | 
| 30 30 |  | 
| 31 31 | 
             
            ## Contributing
         | 
| 32 32 |  | 
    
        data/RELEASE.md
    ADDED
    
    
    
        data/example.rb
    ADDED
    
    
    
        data/expresscheckout.gemspec
    CHANGED
    
    | @@ -25,7 +25,7 @@ Gem::Specification.new do |spec| | |
| 25 25 | 
             
              spec.files         = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
         | 
| 26 26 | 
             
              spec.bindir        = "exe"
         | 
| 27 27 | 
             
              spec.executables   = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
         | 
| 28 | 
            -
              spec.require_paths = ["lib","lib/Orders.rb","lib/expresscheckout.rb","lib/Payments.rb","lib/Cards.rb","lib/Test.rb","lib/util.rb",]
         | 
| 28 | 
            +
              spec.require_paths = ["lib","lib/Orders.rb","lib/expresscheckout.rb","lib/Payments.rb","lib/Cards.rb","lib/Test.rb","lib/util.rb","lib/Customers.rb","lib/Wallets.rb"]
         | 
| 29 29 |  | 
| 30 30 | 
             
              spec.add_development_dependency "bundler", "~> 1.12"
         | 
| 31 31 | 
             
              spec.add_development_dependency "rake", "~> 10.0"
         | 
    
        data/lib/Cards.rb
    CHANGED
    
    | @@ -26,56 +26,26 @@ class Cards | |
| 26 26 |  | 
| 27 27 | 
             
              end
         | 
| 28 28 |  | 
| 29 | 
            -
              def Cards. | 
| 29 | 
            +
              def Cards.create(options={})
         | 
| 30 | 
            +
                if (options.length == 0)
         | 
| 31 | 
            +
                  raise InvalidArguementError.new()
         | 
| 32 | 
            +
                end
         | 
| 33 | 
            +
             | 
| 30 34 | 
             
                method = 'POST'
         | 
| 31 35 | 
             
                url = '/card/add'
         | 
| 32 | 
            -
                parameters = {}
         | 
| 33 | 
            -
                required_args = {}
         | 
| 34 | 
            -
                Array[:merchant_id, :customer_id, :customer_email, :card_number, :card_exp_year, :card_exp_month].each do |key|
         | 
| 35 | 
            -
                  required_args.store(key,'False')
         | 
| 36 | 
            -
                end
         | 
| 37 | 
            -
                options.each do |key, value|
         | 
| 38 | 
            -
                  parameters.store(key,value)
         | 
| 39 | 
            -
                  required_args[key] = 'True'
         | 
| 40 | 
            -
                end
         | 
| 41 | 
            -
                Array[:merchant_id, :customer_id, :customer_email, :card_number, :card_exp_year, :card_exp_month].each do |key|
         | 
| 42 | 
            -
                  if required_args[key] == 'False'
         | 
| 43 | 
            -
                    raise "ERROR: #{key} is a required argument for Cards.add"
         | 
| 44 | 
            -
                  end
         | 
| 45 | 
            -
                end
         | 
| 46 | 
            -
                parameters.each do |key, _|
         | 
| 47 | 
            -
                  unless Array[:merchant_id, :customer_id, :customer_email, :card_number, :card_exp_year,
         | 
| 48 | 
            -
                               :card_exp_month, :name_on_card, :nickname].include?(key)
         | 
| 49 | 
            -
                    puts " #{key} is an invalid argument for Cards.add"
         | 
| 50 | 
            -
                  end
         | 
| 51 | 
            -
                end
         | 
| 52 36 | 
             
                response = request(method,url,options)
         | 
| 53 37 | 
             
                card = Card.new(response.body)
         | 
| 54 38 | 
             
                return card
         | 
| 55 39 | 
             
              end
         | 
| 56 40 |  | 
| 57 41 | 
             
              def Cards.list(options={})
         | 
| 42 | 
            +
                customer_id = get_arg(options,:customer_id)
         | 
| 43 | 
            +
                if customer_id == NIL
         | 
| 44 | 
            +
                  raise InvalidArguementError.new("ERROR: `customer_id` is a required parameter for Cards.list().")
         | 
| 45 | 
            +
                end
         | 
| 46 | 
            +
             | 
| 58 47 | 
             
                method = 'GET'
         | 
| 59 48 | 
             
                url = '/card/list'
         | 
| 60 | 
            -
                parameters = {}
         | 
| 61 | 
            -
                required_args = {}
         | 
| 62 | 
            -
                Array[:customer_id].each do |key|
         | 
| 63 | 
            -
                  required_args.store(key,'False')
         | 
| 64 | 
            -
                end
         | 
| 65 | 
            -
                options.each do |key, value|
         | 
| 66 | 
            -
                  parameters.store(key,value)
         | 
| 67 | 
            -
                  required_args[key] = 'True'
         | 
| 68 | 
            -
                end
         | 
| 69 | 
            -
                Array[:customer_id].each do |key|
         | 
| 70 | 
            -
                  if required_args[key] == 'False'
         | 
| 71 | 
            -
                    raise "ERROR: #{key} is a required argument for Cards.list"
         | 
| 72 | 
            -
                  end
         | 
| 73 | 
            -
                end
         | 
| 74 | 
            -
                parameters.each do |key, _|
         | 
| 75 | 
            -
                  unless Array[:customer_id].include?(key)
         | 
| 76 | 
            -
                    puts " #{key} is an invalid argument for Cards.list"
         | 
| 77 | 
            -
                  end
         | 
| 78 | 
            -
                end
         | 
| 79 49 | 
             
                response = Array(request(method,url,options).body['cards'])
         | 
| 80 50 | 
             
                cards = []
         | 
| 81 51 | 
             
                i=0
         | 
| @@ -88,27 +58,13 @@ class Cards | |
| 88 58 | 
             
              end
         | 
| 89 59 |  | 
| 90 60 | 
             
              def Cards.delete(options={})
         | 
| 61 | 
            +
                card_token = get_arg(options,:card_token)
         | 
| 62 | 
            +
                if card_token == NIL
         | 
| 63 | 
            +
                  raise InvalidArguementError.new("ERROR: `card_token` is a required parameter for Card.delete().")
         | 
| 64 | 
            +
                end
         | 
| 65 | 
            +
             | 
| 91 66 | 
             
                method = 'POST'
         | 
| 92 67 | 
             
                url = '/card/delete'
         | 
| 93 | 
            -
                parameters = {}
         | 
| 94 | 
            -
                required_args = {}
         | 
| 95 | 
            -
                Array[:card_token].each do |key|
         | 
| 96 | 
            -
                  required_args.store(key,'False')
         | 
| 97 | 
            -
                end
         | 
| 98 | 
            -
                options.each do |key, value|
         | 
| 99 | 
            -
                  parameters.store(key,value)
         | 
| 100 | 
            -
                  required_args[key] = 'True'
         | 
| 101 | 
            -
                end
         | 
| 102 | 
            -
                Array[:card_token].each do |key|
         | 
| 103 | 
            -
                  if required_args[key] == 'False'
         | 
| 104 | 
            -
                    raise "ERROR: #{key} is a required argument for  Cards.delete"
         | 
| 105 | 
            -
                  end
         | 
| 106 | 
            -
                end
         | 
| 107 | 
            -
                parameters.each do |key, _|
         | 
| 108 | 
            -
                  unless Array[:card_token].include?(key)
         | 
| 109 | 
            -
                    puts " #{key} is an invalid argument for Cards.delete"
         | 
| 110 | 
            -
                  end
         | 
| 111 | 
            -
                end
         | 
| 112 68 | 
             
                response = request(method,url,options)
         | 
| 113 69 | 
             
                card = Card.new(response.body)
         | 
| 114 70 | 
             
                return card
         | 
    
        data/lib/Customers.rb
    ADDED
    
    | @@ -0,0 +1,92 @@ | |
| 1 | 
            +
            require_relative 'util'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            class Customers
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              # noinspection ALL
         | 
| 6 | 
            +
              class Customer
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                attr_reader :id, :object, :date_created, :email_address, :first_name, :last_name, :mobile_country_code, :mobile_number, :object_reference_id
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                def initialize(options = {})
         | 
| 11 | 
            +
                  @id = get_arg(options, 'id')
         | 
| 12 | 
            +
                  @object = get_arg(options, 'object')
         | 
| 13 | 
            +
                  @date_created = get_arg(options, 'date_created')
         | 
| 14 | 
            +
                  @last_update = get_arg(options, 'last_updated')
         | 
| 15 | 
            +
                  @email_address = get_arg(options, 'email_address')
         | 
| 16 | 
            +
                  @first_name = get_arg(options, 'first_name')
         | 
| 17 | 
            +
                  @last_name = get_arg(options, 'last_name')
         | 
| 18 | 
            +
                  @mobile_country_code = get_arg(options, 'mobile_country_code')
         | 
| 19 | 
            +
                  @mobile_number = get_arg(options, 'mobile_number')
         | 
| 20 | 
            +
                  @object_reference_id = get_arg(options, 'object_reference_id')
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
              end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
              def Customers.create(options={})
         | 
| 26 | 
            +
                if (options.length == 0)
         | 
| 27 | 
            +
                  raise InvalidArguementError.new()
         | 
| 28 | 
            +
                end
         | 
| 29 | 
            +
                method = 'POST'
         | 
| 30 | 
            +
                url = '/customers'
         | 
| 31 | 
            +
                response = request(method,url,options)
         | 
| 32 | 
            +
                customers = Customer.new(response.body)
         | 
| 33 | 
            +
                return customers
         | 
| 34 | 
            +
              end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
              def Customers.list(options={})
         | 
| 37 | 
            +
                method = 'GET'
         | 
| 38 | 
            +
                url = '/customers'
         | 
| 39 | 
            +
                offset = get_arg(options,:offset)
         | 
| 40 | 
            +
                count = get_arg(options,:count)
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                if count == NIL and offset == NIL
         | 
| 43 | 
            +
                      puts "count & offset can be passed if required.\n"
         | 
| 44 | 
            +
                end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                response = request(method,url,options).body
         | 
| 47 | 
            +
                customer_list = Array(response['list'])
         | 
| 48 | 
            +
                customers = []
         | 
| 49 | 
            +
                customer_list.each  do |customerData|
         | 
| 50 | 
            +
                  customer = Customer.new(customerData)
         | 
| 51 | 
            +
                  customers.push(customer)
         | 
| 52 | 
            +
                end
         | 
| 53 | 
            +
                customer_response = {
         | 
| 54 | 
            +
                    'count' => response['count'],
         | 
| 55 | 
            +
                    'offset' => response['offset'],
         | 
| 56 | 
            +
                    'total' => response['total'],
         | 
| 57 | 
            +
                    'list' => customers
         | 
| 58 | 
            +
                }
         | 
| 59 | 
            +
                return customer_response
         | 
| 60 | 
            +
              end
         | 
| 61 | 
            +
             | 
| 62 | 
            +
              def Customers.get(options={})
         | 
| 63 | 
            +
                customer_id = get_arg(options,:customer_id)
         | 
| 64 | 
            +
                if customer_id == NIL
         | 
| 65 | 
            +
                  raise InvalidArguementError.new("ERROR: `customer_id` is a required parameter for Customers.get().")
         | 
| 66 | 
            +
                end
         | 
| 67 | 
            +
             | 
| 68 | 
            +
                method = 'GET'
         | 
| 69 | 
            +
                url = "/customers/#{customer_id}"
         | 
| 70 | 
            +
                response = request(method,url,options)
         | 
| 71 | 
            +
                customers = Customer.new(response.body)
         | 
| 72 | 
            +
                return customers
         | 
| 73 | 
            +
              end
         | 
| 74 | 
            +
             | 
| 75 | 
            +
              def Customers.update(options={})
         | 
| 76 | 
            +
                customer_id = get_arg(options,:customer_id)
         | 
| 77 | 
            +
                if customer_id == NIL
         | 
| 78 | 
            +
                  raise InvalidArguementError.new("ERROR: `customer_id` is a required parameter for Customers.update().")
         | 
| 79 | 
            +
                end
         | 
| 80 | 
            +
             | 
| 81 | 
            +
                method = 'POST'
         | 
| 82 | 
            +
                url = "/customers/#{customer_id}"
         | 
| 83 | 
            +
                response = request(method,url,options)
         | 
| 84 | 
            +
                customers = Customer.new(response.body)
         | 
| 85 | 
            +
                return customers
         | 
| 86 | 
            +
              end
         | 
| 87 | 
            +
             | 
| 88 | 
            +
              def Customers.delete(options={})
         | 
| 89 | 
            +
                raise "ERROR: Not Implemented"
         | 
| 90 | 
            +
              end
         | 
| 91 | 
            +
             | 
| 92 | 
            +
            end
         | 
    
        data/lib/Orders.rb
    CHANGED
    
    | @@ -142,57 +142,26 @@ class Orders | |
| 142 142 | 
             
              end
         | 
| 143 143 |  | 
| 144 144 | 
             
              def Orders.create(options={})
         | 
| 145 | 
            +
                order = get_arg(options, :order_id)
         | 
| 146 | 
            +
                if order == NIL
         | 
| 147 | 
            +
                  raise InvalidArguementError.new("ERROR: `order_id` is required parameter for Orders.create()")
         | 
| 148 | 
            +
                end
         | 
| 149 | 
            +
             | 
| 145 150 | 
             
                method = 'POST'
         | 
| 146 151 | 
             
                url = '/order/create'
         | 
| 147 | 
            -
                parameters = {}
         | 
| 148 | 
            -
                required_args = {}
         | 
| 149 | 
            -
                Array[:order_id,:amount].each do |key|
         | 
| 150 | 
            -
                  required_args.store(key,'False')
         | 
| 151 | 
            -
                end
         | 
| 152 | 
            -
                options.each do |key, value|
         | 
| 153 | 
            -
                  parameters.store(key,value)
         | 
| 154 | 
            -
                  required_args[key] = 'True'
         | 
| 155 | 
            -
                end
         | 
| 156 | 
            -
                Array[:order_id,:amount].each do |key|
         | 
| 157 | 
            -
                  if required_args[key] == 'False'
         | 
| 158 | 
            -
                    raise "ERROR: #{key} is a required argument for Orders.create"
         | 
| 159 | 
            -
                  end
         | 
| 160 | 
            -
                end
         | 
| 161 | 
            -
                parameters.each do |key, _|
         | 
| 162 | 
            -
                  unless @all_input_params.include?(key)
         | 
| 163 | 
            -
                    puts " #{key} is an invalid argument for Orders.create"
         | 
| 164 | 
            -
                  end
         | 
| 165 | 
            -
                end
         | 
| 166 | 
            -
                if parameters[:amount].class != Fixnum and parameters[:amount].class != Float
         | 
| 167 | 
            -
                  raise "ERROR: 'amount' should be of type Fixnum or FLoat"
         | 
| 168 | 
            -
                end
         | 
| 169 152 | 
             
                response = request(method,url,options)
         | 
| 170 153 | 
             
                order = Order.new(response.body)
         | 
| 171 154 | 
             
                return order
         | 
| 172 155 | 
             
              end
         | 
| 173 156 |  | 
| 174 | 
            -
              def Orders. | 
| 157 | 
            +
              def Orders.status(options={})
         | 
| 158 | 
            +
                order = get_arg(options, :order_id)
         | 
| 159 | 
            +
                if order == NIL
         | 
| 160 | 
            +
                  raise InvalidArguementError.new("ERROR: `order_id` is required parameter for Orders.status()")
         | 
| 161 | 
            +
                end
         | 
| 162 | 
            +
             | 
| 175 163 | 
             
                method = 'GET'
         | 
| 176 164 | 
             
                url = '/order/status'
         | 
| 177 | 
            -
                parameters = {}
         | 
| 178 | 
            -
                required_args = {}
         | 
| 179 | 
            -
                Array[:order_id].each do |key|
         | 
| 180 | 
            -
                  required_args.store(key,'False')
         | 
| 181 | 
            -
                end
         | 
| 182 | 
            -
                options.each do |key, value|
         | 
| 183 | 
            -
                  parameters.store(key,value)
         | 
| 184 | 
            -
                  required_args[key] = 'True'
         | 
| 185 | 
            -
                end
         | 
| 186 | 
            -
                Array[:order_id].each do |key|
         | 
| 187 | 
            -
                  if required_args[key] == 'False'
         | 
| 188 | 
            -
                    raise "ERROR: #{key} is a required argument for Orders.get_status"
         | 
| 189 | 
            -
                  end
         | 
| 190 | 
            -
                end
         | 
| 191 | 
            -
                parameters.each do |key, _|
         | 
| 192 | 
            -
                  unless Array[:order_id].include?(key)
         | 
| 193 | 
            -
                    puts " #{key} is an invalid argument for Orders.get_status"
         | 
| 194 | 
            -
                  end
         | 
| 195 | 
            -
                end
         | 
| 196 165 | 
             
                response = request(method,url,options)
         | 
| 197 166 | 
             
                order = Order.new(response.body)
         | 
| 198 167 | 
             
                return order
         | 
| @@ -201,142 +170,40 @@ class Orders | |
| 201 170 | 
             
              def Orders.list(options={})
         | 
| 202 171 | 
             
                method = 'GET'
         | 
| 203 172 | 
             
                url = '/order/list'
         | 
| 204 | 
            -
                parameters = {}
         | 
| 205 | 
            -
                required_args = {}
         | 
| 206 | 
            -
                Array[].each do |key|
         | 
| 207 | 
            -
                  required_args.store(key,'False')
         | 
| 208 | 
            -
                end
         | 
| 209 | 
            -
                options.each do |key, value|
         | 
| 210 | 
            -
                  parameters.store(key,value)
         | 
| 211 | 
            -
                  required_args[key] = 'True'
         | 
| 212 | 
            -
                end
         | 
| 213 | 
            -
                Array[].each do |key|
         | 
| 214 | 
            -
                  if required_args[key] == 'False'
         | 
| 215 | 
            -
                    raise "ERROR: #{key} is a required argument for Orders.list"
         | 
| 216 | 
            -
                  end
         | 
| 217 | 
            -
                end
         | 
| 218 | 
            -
                parameters.each do |key, _|
         | 
| 219 | 
            -
                  unless Array[:'created.gt', :'created.gt', :'created.lt', :'created.ge', :'created.le', :count, :offset].include?(key)
         | 
| 220 | 
            -
                    puts " #{key} is an invalid argument for Orders.get_status"
         | 
| 221 | 
            -
                  end
         | 
| 222 | 
            -
                end
         | 
| 223 | 
            -
                parameters.each do |key,_|
         | 
| 224 | 
            -
                  if key == :'created.gt'
         | 
| 225 | 
            -
                    if parameters[:'created.gt'].class != Fixnum
         | 
| 226 | 
            -
                      puts 'created.gt should be of type Numeric\n'
         | 
| 227 | 
            -
                    end
         | 
| 228 | 
            -
                  end
         | 
| 229 | 
            -
                  if key == :'created.lt'
         | 
| 230 | 
            -
                    if parameters[:'created.lt'].class != Fixnum
         | 
| 231 | 
            -
                      puts 'lt should be of type Numeric\n'
         | 
| 232 | 
            -
                    end
         | 
| 233 | 
            -
                  end
         | 
| 234 | 
            -
                  if key == :'created.ge'
         | 
| 235 | 
            -
                    if parameters[:'created.ge'].class != Fixnum
         | 
| 236 | 
            -
                      puts 'created.ge should be of type Numeric\n'
         | 
| 237 | 
            -
                    end
         | 
| 238 | 
            -
                  end
         | 
| 239 | 
            -
                  if key == :'created.le'
         | 
| 240 | 
            -
                    if parameters[:'created.le'].class != Fixnum
         | 
| 241 | 
            -
                      puts 'created.le should be of type Numeric\n'
         | 
| 242 | 
            -
                    end
         | 
| 243 | 
            -
                  end
         | 
| 244 | 
            -
                  if key == :count
         | 
| 245 | 
            -
                    if parameters[:count].class != Fixnum
         | 
| 246 | 
            -
                      puts 'count should be of type Numeric\n'
         | 
| 247 | 
            -
                    end
         | 
| 248 | 
            -
                  end
         | 
| 249 | 
            -
                  if key == :offset
         | 
| 250 | 
            -
                    if parameters[:offset].class != Fixnum
         | 
| 251 | 
            -
                      puts 'offset should be of type Numeric\n'
         | 
| 252 | 
            -
                    end
         | 
| 253 | 
            -
                  end
         | 
| 254 | 
            -
                end
         | 
| 255 173 | 
             
                response = request(method,url,options).body
         | 
| 256 174 | 
             
                orders = {count: response['count'],total: response['total'], offset: response['offset'] }
         | 
| 257 175 | 
             
                list = []
         | 
| 258 | 
            -
                 | 
| 259 | 
            -
                 | 
| 260 | 
            -
                  order = Order.new( | 
| 176 | 
            +
                order_list = Array(response['list'])
         | 
| 177 | 
            +
                order_list.each do |orderData|
         | 
| 178 | 
            +
                  order = Order.new(orderData)
         | 
| 261 179 | 
             
                  list.push(order)
         | 
| 262 | 
            -
                  i+=1
         | 
| 263 180 | 
             
                end
         | 
| 264 181 | 
             
                orders[:list] = list
         | 
| 265 182 | 
             
                return orders
         | 
| 266 183 | 
             
              end
         | 
| 267 184 |  | 
| 268 185 | 
             
              def Orders.update(options={})
         | 
| 186 | 
            +
                order = get_arg(options, :order_id)
         | 
| 187 | 
            +
                if order == NIL
         | 
| 188 | 
            +
                  raise InvalidArguementError.new("ERROR: `order_id` is required parameter for Orders.update()")
         | 
| 189 | 
            +
                end
         | 
| 190 | 
            +
             | 
| 269 191 | 
             
                method = 'POST'
         | 
| 270 192 | 
             
                url = '/order/create'
         | 
| 271 | 
            -
                parameters = {}
         | 
| 272 | 
            -
                required_args = {}
         | 
| 273 | 
            -
                Array[:order_id].each do |key|
         | 
| 274 | 
            -
                  required_args.store(key,'False')
         | 
| 275 | 
            -
                end
         | 
| 276 | 
            -
                options.each do |key, value|
         | 
| 277 | 
            -
                  parameters.store(key,value)
         | 
| 278 | 
            -
                  required_args[key] = 'True'
         | 
| 279 | 
            -
                end
         | 
| 280 | 
            -
                Array[:order_id].each do |key|
         | 
| 281 | 
            -
                  if required_args[key] == 'False'
         | 
| 282 | 
            -
                    raise "ERROR: #{key} is a required argument for Orders.update"
         | 
| 283 | 
            -
                  end
         | 
| 284 | 
            -
                end
         | 
| 285 | 
            -
                parameters.each do |key, _|
         | 
| 286 | 
            -
                  unless @all_input_params.include?(key)
         | 
| 287 | 
            -
                    puts " #{key} is an invalid argument for Orders.create"
         | 
| 288 | 
            -
                  end
         | 
| 289 | 
            -
                end
         | 
| 290 | 
            -
                parameters.each do |key,_|
         | 
| 291 | 
            -
                  if key == :currency
         | 
| 292 | 
            -
                    puts 'currency cannot be changed\n'
         | 
| 293 | 
            -
                  end
         | 
| 294 | 
            -
                  if key == :customer_id
         | 
| 295 | 
            -
                    puts 'customer_id cannot be changed\n'
         | 
| 296 | 
            -
                  end
         | 
| 297 | 
            -
                  if key == :customer_email
         | 
| 298 | 
            -
                    puts 'customer_email cannot be changed\n'
         | 
| 299 | 
            -
                  end
         | 
| 300 | 
            -
                  if key == :customer_phone
         | 
| 301 | 
            -
                    puts 'customer_phone cannot be changed\n'
         | 
| 302 | 
            -
                  end
         | 
| 303 | 
            -
                  if key == :description
         | 
| 304 | 
            -
                    puts 'description cannot be changed\n'
         | 
| 305 | 
            -
                  end
         | 
| 306 | 
            -
                  if key == :product_id
         | 
| 307 | 
            -
                    puts 'product_id cannot be changed\n'
         | 
| 308 | 
            -
                  end
         | 
| 309 | 
            -
                  if key == :return_url
         | 
| 310 | 
            -
                    puts 'return_url cannot be changed\n'
         | 
| 311 | 
            -
                  end
         | 
| 312 | 
            -
                end
         | 
| 313 193 | 
             
                response = request(method,url,options)
         | 
| 314 194 | 
             
                order = Order.new(response.body)
         | 
| 315 195 | 
             
                return order
         | 
| 316 196 | 
             
              end
         | 
| 317 197 |  | 
| 318 198 | 
             
              def Orders.refund(options={})
         | 
| 199 | 
            +
                order = get_arg(options, :order_id)
         | 
| 200 | 
            +
                unique_request = get_arg(options, :unique_request_id)
         | 
| 201 | 
            +
                if order == NIL or unique_request == NIL
         | 
| 202 | 
            +
                  raise InvalidArguementError.new("ERROR: `order_id` & `unique_request_id` is required parameter for Orders.refund()")
         | 
| 203 | 
            +
                end
         | 
| 204 | 
            +
             | 
| 319 205 | 
             
                method = 'POST'
         | 
| 320 206 | 
             
                url = '/order/refund'
         | 
| 321 | 
            -
                parameters = {}
         | 
| 322 | 
            -
                required_args = {}
         | 
| 323 | 
            -
                Array[:unique_request_id,:order_id].each do |key|
         | 
| 324 | 
            -
                  required_args.store(key,'False')
         | 
| 325 | 
            -
                end
         | 
| 326 | 
            -
                options.each do |key, value|
         | 
| 327 | 
            -
                  parameters.store(key,value)
         | 
| 328 | 
            -
                  required_args[key] = 'True'
         | 
| 329 | 
            -
                end
         | 
| 330 | 
            -
                Array[:unique_request_id,:order_id].each do |key|
         | 
| 331 | 
            -
                  if required_args[key] == 'False'
         | 
| 332 | 
            -
                    raise "ERROR: #{key} is a required argument for Orders.refund"
         | 
| 333 | 
            -
                  end
         | 
| 334 | 
            -
                end
         | 
| 335 | 
            -
                parameters.each do |key, _|
         | 
| 336 | 
            -
                  unless Array[:unique_request_id,:order_id, :amount].include?(key)
         | 
| 337 | 
            -
                    puts " #{key} is an invalid argument for Orders.create"
         | 
| 338 | 
            -
                  end
         | 
| 339 | 
            -
                end
         | 
| 340 207 | 
             
                response = request(method,url,options)
         | 
| 341 208 | 
             
                order = Order.new(response.body)
         | 
| 342 209 | 
             
                return order
         | 
    
        data/lib/Payments.rb
    CHANGED
    
    | @@ -34,9 +34,12 @@ class Payments | |
| 34 34 | 
             
              def Payments.create_card_payment(options={})
         | 
| 35 35 | 
             
                method = 'POST'
         | 
| 36 36 | 
             
                url = '/txns'
         | 
| 37 | 
            -
                parameters = { | 
| 37 | 
            +
                parameters = {
         | 
| 38 | 
            +
                  :payment_method_type => "CARD",
         | 
| 39 | 
            +
                  :format => 'json'
         | 
| 40 | 
            +
                }
         | 
| 38 41 | 
             
                required_args = {}
         | 
| 39 | 
            -
                Array[:order_id, :merchant_id, : | 
| 42 | 
            +
                Array[:order_id, :merchant_id, :card_token, :payment_method_type, :card_number, :name_on_card,
         | 
| 40 43 | 
             
                      :card_exp_year, :card_exp_month, :card_security_code, :save_to_locker, :redirect_after_payment,
         | 
| 41 44 | 
             
                      :format].each do |key|
         | 
| 42 45 | 
             
                  required_args.store(key,'False')
         | 
| @@ -45,11 +48,15 @@ class Payments | |
| 45 48 | 
             
                  parameters.store(key,value)
         | 
| 46 49 | 
             
                  required_args[key] = 'True'
         | 
| 47 50 | 
             
                end
         | 
| 48 | 
            -
                 | 
| 49 | 
            -
             | 
| 50 | 
            -
             | 
| 51 | 
            +
                
         | 
| 52 | 
            +
                # Either token or card number validation    
         | 
| 53 | 
            +
                if required_args[:card_token] == 'False' and !([:card_number, :name_on_card, :card_exp_year,:card_exp_month, :card_security_code, :save_to_locker].all? {|s| options.key? s})
         | 
| 54 | 
            +
                    raise InvalidArguementError.new("ERROR: Either [card_token] or [card_number, name_on_card, card_exp_year, card_exp_month, card_security_code, save_to_locker] are required arguments for Payments.create_card_payment()")
         | 
| 55 | 
            +
                end
         | 
| 56 | 
            +
                    
         | 
| 57 | 
            +
                Array[:order_id, :merchant_id, :redirect_after_payment].each do |key|
         | 
| 51 58 | 
             
                  if required_args[key] == 'False'
         | 
| 52 | 
            -
                    raise "ERROR: #{key} is a required argument for Payments.create_card_payment"
         | 
| 59 | 
            +
                    raise InvalidArguementError.new("ERROR: #{key} is a required argument for Payments.create_card_payment")
         | 
| 53 60 | 
             
                  end
         | 
| 54 61 | 
             
                end
         | 
| 55 62 | 
             
                parameters.each do |key, _|
         | 
| @@ -59,13 +66,14 @@ class Payments | |
| 59 66 | 
             
                    puts " #{key} is an invalid argument for Payments.create_card_payment"
         | 
| 60 67 | 
             
                  end
         | 
| 61 68 | 
             
                end
         | 
| 62 | 
            -
                if parameters[:save_to_locker] != true and parameters[:save_to_locker] != false
         | 
| 63 | 
            -
                  raise "ERROR: 'save_to_locker' should be true or false"
         | 
| 69 | 
            +
                if required_args[:save_to_locker] == 'True' && parameters[:save_to_locker] != true and parameters[:save_to_locker] != false
         | 
| 70 | 
            +
                  raise InvalidArguementError.new("ERROR: 'save_to_locker' should be true or false")
         | 
| 64 71 | 
             
                end
         | 
| 65 72 | 
             
                if parameters[:redirect_after_payment] != true and parameters[:redirect_after_payment] != false
         | 
| 66 | 
            -
                  raise "ERROR: 'redirect_after_payment' should be true or false"
         | 
| 73 | 
            +
                  raise InvalidArguementError.new("ERROR: 'redirect_after_payment' should be true or false")
         | 
| 67 74 | 
             
                end
         | 
| 68 | 
            -
             | 
| 75 | 
            +
             | 
| 76 | 
            +
                response = request(method,url,parameters)
         | 
| 69 77 | 
             
                payment = Transaction.new(response.body)
         | 
| 70 78 | 
             
                return payment
         | 
| 71 79 | 
             
              end
         | 
| @@ -73,18 +81,21 @@ class Payments | |
| 73 81 | 
             
              def Payments.create_net_banking_payment(options={})
         | 
| 74 82 | 
             
                method = 'POST'
         | 
| 75 83 | 
             
                url = '/txns'
         | 
| 76 | 
            -
             | 
| 84 | 
            +
                    parameters = {
         | 
| 85 | 
            +
                  :payment_method_type => "NB",
         | 
| 86 | 
            +
                  :format => 'json'
         | 
| 87 | 
            +
                }
         | 
| 77 88 | 
             
                required_args = {}
         | 
| 78 | 
            -
                Array[:order_id, :merchant_id, : | 
| 89 | 
            +
                Array[:order_id, :merchant_id, :payment_method, :redirect_after_payment].each do |key|
         | 
| 79 90 | 
             
                  required_args.store(key,'False')
         | 
| 80 91 | 
             
                end
         | 
| 81 92 | 
             
                options.each do |key, value|
         | 
| 82 93 | 
             
                  parameters.store(key,value)
         | 
| 83 94 | 
             
                  required_args[key] = 'True'
         | 
| 84 95 | 
             
                end
         | 
| 85 | 
            -
                Array[:order_id, :merchant_id, : | 
| 96 | 
            +
                Array[:order_id, :merchant_id, :payment_method, :redirect_after_payment].each do |key|
         | 
| 86 97 | 
             
                  if required_args[key] == 'False'
         | 
| 87 | 
            -
                    raise "ERROR: #{key} is a required argument for Payments.create_net_banking_payment"
         | 
| 98 | 
            +
                    raise InvalidArguementError.new("ERROR: #{key} is a required argument for Payments.create_net_banking_payment")
         | 
| 88 99 | 
             
                  end
         | 
| 89 100 | 
             
                end
         | 
| 90 101 | 
             
                parameters.each do |key, _|
         | 
| @@ -92,9 +103,41 @@ class Payments | |
| 92 103 | 
             
                    puts " #{key} is an invalid argument for Payments.create_net_banking_payment"
         | 
| 93 104 | 
             
                  end
         | 
| 94 105 | 
             
                end
         | 
| 95 | 
            -
             | 
| 106 | 
            +
             | 
| 107 | 
            +
                response = request(method,url,parameters)
         | 
| 108 | 
            +
                payment = Transaction.new(response.body)
         | 
| 109 | 
            +
                return payment
         | 
| 110 | 
            +
              end
         | 
| 111 | 
            +
             | 
| 112 | 
            +
              def Payments.create_wallet_payment(options={})
         | 
| 113 | 
            +
                method = 'POST'
         | 
| 114 | 
            +
                url = '/txns'
         | 
| 115 | 
            +
                parameters = {
         | 
| 116 | 
            +
                  :payment_method_type => "WALLET",
         | 
| 117 | 
            +
                  :format => 'json'
         | 
| 118 | 
            +
                }
         | 
| 119 | 
            +
                required_args = {}
         | 
| 120 | 
            +
                Array[:order_id, :merchant_id, :payment_method, :redirect_after_payment].each do |key|
         | 
| 121 | 
            +
                  required_args.store(key,'False')
         | 
| 122 | 
            +
                end
         | 
| 123 | 
            +
                options.each do |key, value|
         | 
| 124 | 
            +
                  parameters.store(key,value)
         | 
| 125 | 
            +
                  required_args[key] = 'True'
         | 
| 126 | 
            +
                end
         | 
| 127 | 
            +
                Array[:order_id, :merchant_id, :payment_method, :redirect_after_payment].each do |key|
         | 
| 128 | 
            +
                  if required_args[key] == 'False'
         | 
| 129 | 
            +
                    raise InvalidArguementError.new("ERROR: #{key} is a required argument for Payments.create_wallet_payment")
         | 
| 130 | 
            +
                  end
         | 
| 131 | 
            +
                end
         | 
| 132 | 
            +
                parameters.each do |key, _|
         | 
| 133 | 
            +
                  unless Array[:order_id, :merchant_id, :payment_method_type, :payment_method, :redirect_after_payment, :format, :direct_wallet_token].include?(key)
         | 
| 134 | 
            +
                    puts " #{key} is an invalid argument for Payments.create_wallet_payment"
         | 
| 135 | 
            +
                  end
         | 
| 136 | 
            +
                end
         | 
| 137 | 
            +
             | 
| 138 | 
            +
                response = request(method,url,parameters)
         | 
| 96 139 | 
             
                payment = Transaction.new(response.body)
         | 
| 97 140 | 
             
                return payment
         | 
| 98 141 | 
             
              end
         | 
| 99 142 |  | 
| 100 | 
            -
            end
         | 
| 143 | 
            +
            end
         | 
    
        data/lib/Test.rb
    CHANGED
    
    | @@ -1,6 +1,8 @@ | |
| 1 1 | 
             
            require_relative 'Orders'
         | 
| 2 2 | 
             
            require_relative 'Cards'
         | 
| 3 3 | 
             
            require_relative 'Payments'
         | 
| 4 | 
            +
            require_relative 'Wallets'
         | 
| 5 | 
            +
            require_relative 'Customers'
         | 
| 4 6 | 
             
            require 'minitest/autorun'
         | 
| 5 7 | 
             
            require 'pp'
         | 
| 6 8 |  | 
| @@ -16,9 +18,8 @@ def pp(obj) | |
| 16 18 | 
             
            end
         | 
| 17 19 |  | 
| 18 20 | 
             
            class Test < Minitest::Test
         | 
| 19 | 
            -
             | 
| 20 | 
            -
              $ | 
| 21 | 
            -
              $environment = 'production'
         | 
| 21 | 
            +
              $api_key = '187BF8D543A545789497F14FCAFBD85C'
         | 
| 22 | 
            +
              $environment = 'staging'
         | 
| 22 23 |  | 
| 23 24 | 
             
              def setup
         | 
| 24 25 | 
             
                @timestamp = Time.now.to_i
         | 
| @@ -31,7 +32,7 @@ class Test < Minitest::Test | |
| 31 32 | 
             
                #pp order
         | 
| 32 33 |  | 
| 33 34 | 
             
                # Test for get_status
         | 
| 34 | 
            -
                status = Orders. | 
| 35 | 
            +
                status = Orders.status(order_id:@timestamp)
         | 
| 35 36 | 
             
                assert_equal(Float(status.order_id), @timestamp)
         | 
| 36 37 | 
             
                #pp status
         | 
| 37 38 |  | 
| @@ -42,12 +43,13 @@ class Test < Minitest::Test | |
| 42 43 |  | 
| 43 44 | 
             
                # Test for update
         | 
| 44 45 | 
             
                updated_order = Orders.update(order_id:@timestamp, amount:500)
         | 
| 45 | 
            -
                status = Orders. | 
| 46 | 
            +
                status = Orders.status(order_id:@timestamp)
         | 
| 46 47 | 
             
                assert_equal(status.amount, updated_order.amount)
         | 
| 47 | 
            -
             | 
| 48 | 
            +
              end
         | 
| 48 49 |  | 
| 50 | 
            +
              def test_refund
         | 
| 49 51 | 
             
                # Test for refund
         | 
| 50 | 
            -
                refunded_order = Orders.refund(unique_request_id: @timestamp, order_id:  | 
| 52 | 
            +
                refunded_order = Orders.refund(unique_request_id: @timestamp, order_id: '1471441349',amount: 1)
         | 
| 51 53 | 
             
                #pp refunded_order
         | 
| 52 54 | 
             
              end
         | 
| 53 55 |  | 
| @@ -61,7 +63,7 @@ class Test < Minitest::Test | |
| 61 63 | 
             
              def test_cards
         | 
| 62 64 |  | 
| 63 65 | 
             
                # Test for add
         | 
| 64 | 
            -
                card = Cards. | 
| 66 | 
            +
                card = Cards.create(merchant_id:'shreyas', customer_id:'user', customer_email:'abc@xyz.com',
         | 
| 65 67 | 
             
                    card_number:@timestamp*(10**6), card_exp_year:'20', card_exp_month:'12')
         | 
| 66 68 | 
             
                refute_nil(card.reference)
         | 
| 67 69 | 
             
                refute_nil(card.token)
         | 
| @@ -73,9 +75,9 @@ class Test < Minitest::Test | |
| 73 75 | 
             
                #pp deleted_card
         | 
| 74 76 | 
             
                # Test for list
         | 
| 75 77 | 
             
                #Test.delete_all_cards
         | 
| 76 | 
            -
                Cards. | 
| 78 | 
            +
                Cards.create(merchant_id:'shreyas', customer_id:'user', customer_email:'abc@xyz.com',
         | 
| 77 79 | 
             
                    card_number:@timestamp * (10 ** 6), card_exp_year:'20', card_exp_month:'12')
         | 
| 78 | 
            -
                Cards. | 
| 80 | 
            +
                Cards.create(merchant_id:'shreyas', customer_id:'user', customer_email:'abc@xyz.com',
         | 
| 79 81 | 
             
                    card_number:@timestamp * (10 ** 6)+1, card_exp_year:'20', card_exp_month:'12')
         | 
| 80 82 | 
             
                card_list = Cards.list(customer_id:'user')
         | 
| 81 83 | 
             
                refute_nil(card_list)
         | 
| @@ -88,13 +90,10 @@ class Test < Minitest::Test | |
| 88 90 |  | 
| 89 91 | 
             
                # Test for create_card_payment
         | 
| 90 92 | 
             
                payment = Payments.create_card_payment(
         | 
| 91 | 
            -
                    order_id: | 
| 92 | 
            -
                    merchant_id:' | 
| 93 | 
            -
                    payment_method_type:'CARD',
         | 
| 94 | 
            -
                    card_token:'68d6b0c6-6e77-473f-a05c-b460ef983fd8',
         | 
| 93 | 
            +
                    order_id:1470043679,
         | 
| 94 | 
            +
                    merchant_id:'azhar',
         | 
| 95 95 | 
             
                    redirect_after_payment:false,
         | 
| 96 | 
            -
                     | 
| 97 | 
            -
                    card_number:'5243681100075285',
         | 
| 96 | 
            +
                    card_number:'4242424242424242',
         | 
| 98 97 | 
             
                    name_on_card:'Customer',
         | 
| 99 98 | 
             
                    card_exp_year:'20',
         | 
| 100 99 | 
             
                    card_exp_month:'12',
         | 
| @@ -102,18 +101,74 @@ class Test < Minitest::Test | |
| 102 101 | 
             
                    save_to_locker:false)
         | 
| 103 102 | 
             
                refute_nil(payment.txn_id)
         | 
| 104 103 | 
             
                assert_equal(payment.status, 'PENDING_VBV')
         | 
| 105 | 
            -
             | 
| 104 | 
            +
             | 
| 106 105 | 
             
                # Test for create_net_banking_payment
         | 
| 107 106 | 
             
                payment = Payments.create_net_banking_payment(
         | 
| 108 | 
            -
                    order_id: | 
| 109 | 
            -
                    merchant_id:' | 
| 110 | 
            -
                     | 
| 111 | 
            -
                     | 
| 112 | 
            -
                    redirect_after_payment:false,
         | 
| 113 | 
            -
                    format:'json')
         | 
| 107 | 
            +
                    order_id:1470043679,
         | 
| 108 | 
            +
                    merchant_id:'azhar',
         | 
| 109 | 
            +
                    payment_method:'NB_DUMMY',
         | 
| 110 | 
            +
                    redirect_after_payment:false)
         | 
| 114 111 | 
             
                refute_nil(payment.txn_id)
         | 
| 115 112 | 
             
                assert_equal(payment.status, 'PENDING_VBV')
         | 
| 116 | 
            -
             | 
| 113 | 
            +
             | 
| 114 | 
            +
                # Test for create_wallet_payment
         | 
| 115 | 
            +
                payment = Payments.create_wallet_payment(
         | 
| 116 | 
            +
                    order_id:'check5',
         | 
| 117 | 
            +
                    merchant_id:'azharamin',
         | 
| 118 | 
            +
                    payment_method:'MOBIKWIK',
         | 
| 119 | 
            +
                    redirect_after_payment:false)
         | 
| 120 | 
            +
                refute_nil(payment.txn_id)
         | 
| 121 | 
            +
                assert_match(/^(PENDING_VBV|CHARGED)$/,payment.status)
         | 
| 122 | 
            +
              end
         | 
| 123 | 
            +
             | 
| 124 | 
            +
              def test_customers
         | 
| 125 | 
            +
                #Add customer
         | 
| 126 | 
            +
                customer = Customers.create(
         | 
| 127 | 
            +
                    object_reference_id: "CustId#{@timestamp}",
         | 
| 128 | 
            +
                    mobile_number: '7272727272',
         | 
| 129 | 
            +
                    email_address: 'az@temp.com',
         | 
| 130 | 
            +
                    first_name: 'temp',
         | 
| 131 | 
            +
                    last_name: 'kumar',
         | 
| 132 | 
            +
                    mobile_country_code: '35'
         | 
| 133 | 
            +
                  )
         | 
| 134 | 
            +
                refute_nil(customer)
         | 
| 135 | 
            +
             | 
| 136 | 
            +
                #Get customer
         | 
| 137 | 
            +
                customer = Customers.get(
         | 
| 138 | 
            +
                    customer_id: customer.id
         | 
| 139 | 
            +
                )
         | 
| 140 | 
            +
                refute_nil(customer)
         | 
| 141 | 
            +
             | 
| 142 | 
            +
                #Update customer
         | 
| 143 | 
            +
                customer = Customers.update(
         | 
| 144 | 
            +
                    customer_id: customer.id,
         | 
| 145 | 
            +
                    mobile_number: '7272727273',
         | 
| 146 | 
            +
                    email_address: 'newaz@temp.com',
         | 
| 147 | 
            +
                    first_name: 'newtemp',
         | 
| 148 | 
            +
                    last_name: 'newkumar',
         | 
| 149 | 
            +
                    mobile_country_code: '91'
         | 
| 150 | 
            +
                )
         | 
| 151 | 
            +
                refute_nil(customer)
         | 
| 152 | 
            +
             | 
| 153 | 
            +
                #List customer
         | 
| 154 | 
            +
                customer = Customers.list(
         | 
| 155 | 
            +
                    count: 1
         | 
| 156 | 
            +
                )
         | 
| 157 | 
            +
                assert_equal(customer['count'], 1)
         | 
| 158 | 
            +
              end
         | 
| 159 | 
            +
             | 
| 160 | 
            +
              def test_wallets
         | 
| 161 | 
            +
                # List wallets by orderId
         | 
| 162 | 
            +
                wallets = Wallets.list(order_id:'1471434419')
         | 
| 163 | 
            +
                refute_nil(wallets[0].id)
         | 
| 164 | 
            +
             | 
| 165 | 
            +
                # List wallets by customerId
         | 
| 166 | 
            +
                wallets = Wallets.list(customer_id:'guest_user_101')
         | 
| 167 | 
            +
                refute_nil(wallets[0].id)
         | 
| 168 | 
            +
             | 
| 169 | 
            +
                # List wallets by customerId
         | 
| 170 | 
            +
                wallets = Wallets.refresh_balance(customer_id:'guest_user_104')
         | 
| 171 | 
            +
                refute_nil(wallets[0].id)
         | 
| 117 172 | 
             
              end
         | 
| 118 173 | 
             
            end
         | 
| 119 174 |  | 
    
        data/lib/Wallets.rb
    ADDED
    
    | @@ -0,0 +1,74 @@ | |
| 1 | 
            +
            require_relative 'util'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            class Wallets
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              # noinspection ALL
         | 
| 6 | 
            +
              class Wallet
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                attr_reader :id, :wallet, :object, :token, :current_balance, :last_refresh
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                def initialize(options = {})
         | 
| 11 | 
            +
                  @id = get_arg(options, 'id')
         | 
| 12 | 
            +
                  @object = get_arg(options, 'object')
         | 
| 13 | 
            +
                  @wallet = get_arg(options, 'wallet')
         | 
| 14 | 
            +
                  @token = get_arg(options, 'token')
         | 
| 15 | 
            +
                  @current_balance = get_arg(options, 'current_balance')
         | 
| 16 | 
            +
                  @last_refresh = get_arg(options, 'last_refreshed')
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
              def Wallets.create(options={})
         | 
| 22 | 
            +
                raise "ERROR: Not Implemented"
         | 
| 23 | 
            +
              end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
              def Wallets.list(options={})
         | 
| 26 | 
            +
                order = get_arg(options, :order_id)
         | 
| 27 | 
            +
                customer = get_arg(options, :customer_id)
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                if customer == NIL and order == NIL
         | 
| 30 | 
            +
                  raise InvalidArguementError.new("ERROR: `customer_id` or `order_id` is required parameter for Wallets.list()")
         | 
| 31 | 
            +
                end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                if customer
         | 
| 34 | 
            +
                  url = "/customers/#{customer}/wallets"
         | 
| 35 | 
            +
                else
         | 
| 36 | 
            +
                  url = "/orders/#{order}/wallets"
         | 
| 37 | 
            +
                end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                method = 'GET'
         | 
| 40 | 
            +
                response = Array(request(method,url,{}).body['list'])
         | 
| 41 | 
            +
                wallets = []
         | 
| 42 | 
            +
                i=0
         | 
| 43 | 
            +
                while i != response.count
         | 
| 44 | 
            +
                  wallet = Wallet.new(response[i])
         | 
| 45 | 
            +
                  wallets.push(wallet)
         | 
| 46 | 
            +
                  i+=1
         | 
| 47 | 
            +
                end
         | 
| 48 | 
            +
                return wallets
         | 
| 49 | 
            +
              end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
              def Wallets.refresh_balance(options={})
         | 
| 52 | 
            +
                customer = get_arg(options, :customer_id)
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                if customer == NIL
         | 
| 55 | 
            +
                  raise InvalidArguementError.new("ERROR: `customer_id` is required parameter for Wallets.refresh_balance()")
         | 
| 56 | 
            +
                end
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                url = "/customers/#{customer}/wallets/refresh-balances"
         | 
| 59 | 
            +
                method = 'GET'
         | 
| 60 | 
            +
                response = Array(request(method,url,{}).body['list'])
         | 
| 61 | 
            +
                wallets = []
         | 
| 62 | 
            +
                i=0
         | 
| 63 | 
            +
                while i != response.count
         | 
| 64 | 
            +
                  wallet = Wallet.new(response[i])
         | 
| 65 | 
            +
                  wallets.push(wallet)
         | 
| 66 | 
            +
                  i+=1
         | 
| 67 | 
            +
                end
         | 
| 68 | 
            +
                return wallets
         | 
| 69 | 
            +
              end    
         | 
| 70 | 
            +
             | 
| 71 | 
            +
              def Wallets.delete(options={})
         | 
| 72 | 
            +
                raise "ERROR: Not Implemented"
         | 
| 73 | 
            +
              end
         | 
| 74 | 
            +
            end
         | 
| @@ -0,0 +1,14 @@ | |
| 1 | 
            +
            class JuspayError < StandardError
         | 
| 2 | 
            +
              
         | 
| 3 | 
            +
              def initialize(message=nil, http_status=nil, json_body=nil)
         | 
| 4 | 
            +
                @_message = message
         | 
| 5 | 
            +
                @http_status = http_status
         | 
| 6 | 
            +
                @json_body = json_body
         | 
| 7 | 
            +
              end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
              def to_s
         | 
| 10 | 
            +
                status_string = @http_status.nil? ? '' : "(Status #{@http_status})\n"
         | 
| 11 | 
            +
                json_string = @json_body.nil? ? '' : "(Response #{@json_body})\n"
         | 
| 12 | 
            +
                "\n#{status_string}#{json_string}#{@_message}\n"
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
            end
         | 
    
        data/lib/expresscheckout.rb
    CHANGED
    
    | @@ -1,12 +1,15 @@ | |
| 1 1 | 
             
            require "expresscheckout/version"
         | 
| 2 2 |  | 
| 3 3 | 
             
            module Expresscheckout
         | 
| 4 | 
            -
            	require 'unirest'
         | 
| 5 4 | 
             
            	require_relative 'Orders'
         | 
| 6 5 | 
             
            	require_relative 'Cards'
         | 
| 7 6 | 
             
            	require_relative 'Payments'
         | 
| 7 | 
            +
            	require_relative 'Customers'
         | 
| 8 | 
            +
            	require_relative 'Wallets'
         | 
| 8 9 |  | 
| 9 | 
            -
            	$api_key =  | 
| 10 | 
            -
            	$environment = ' | 
| 10 | 
            +
            	$api_key = nil
         | 
| 11 | 
            +
            	$environment = 'staging'
         | 
| 11 12 | 
             
            	$version= {:JuspayAPILibrary=>'Ruby v1.0'}
         | 
| 12 13 | 
             
            end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            require 'unirest'
         | 
    
        data/lib/util.rb
    CHANGED
    
    | @@ -1,19 +1,43 @@ | |
| 1 1 | 
             
            require_relative 'expresscheckout'
         | 
| 2 | 
            +
            # Errors
         | 
| 3 | 
            +
            require 'errors/juspay_error'
         | 
| 4 | 
            +
            require 'errors/api_error'
         | 
| 5 | 
            +
            require 'errors/api_connection_error'
         | 
| 6 | 
            +
            require 'errors/invalid_request_error'
         | 
| 7 | 
            +
            require 'errors/authentication_error'
         | 
| 8 | 
            +
            require 'errors/invalid_arguement_error'
         | 
| 2 9 |  | 
| 3 | 
            -
            def request(method,url,parameters={})
         | 
| 4 | 
            -
               | 
| 5 | 
            -
                $ | 
| 6 | 
            -
             | 
| 7 | 
            -
                $ | 
| 8 | 
            -
             | 
| 9 | 
            -
                 | 
| 10 | 
            -
             | 
| 11 | 
            -
             | 
| 12 | 
            -
                 | 
| 13 | 
            -
             | 
| 14 | 
            -
                 | 
| 10 | 
            +
            def request(method, url, parameters={})
         | 
| 11 | 
            +
              begin
         | 
| 12 | 
            +
                if $environment == 'production'
         | 
| 13 | 
            +
                  $server = 'https://api.juspay.in'
         | 
| 14 | 
            +
                elsif $environment == 'staging'
         | 
| 15 | 
            +
                  $server = 'https://sandbox.juspay.in'
         | 
| 16 | 
            +
                else
         | 
| 17 | 
            +
                  raise InvalidArguementError.new('ERROR: environment variable can be "production" or "staging"')
         | 
| 18 | 
            +
                end
         | 
| 19 | 
            +
                if $api_key == nil
         | 
| 20 | 
            +
                  raise AuthenticationError.new("ERROR: API key missing. Please specify api_key.")
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
                if method == 'GET'
         | 
| 23 | 
            +
                  response = Unirest.get $server+url, headers: $version, auth: {:user => $api_key, :password => ''}, parameters: parameters
         | 
| 24 | 
            +
                else
         | 
| 25 | 
            +
                  response = Unirest.post $server +url, headers: $version, auth: {:user => $api_key, :password => ''}, parameters: parameters
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
                if (response.code >= 200 && response.code < 300)
         | 
| 28 | 
            +
                  return response
         | 
| 29 | 
            +
                elsif ([400, 404].include? response.code)
         | 
| 30 | 
            +
                  raise InvalidRequestError.new('Invalid Request', response.code, response.body)
         | 
| 31 | 
            +
                elsif (response.code == 401)
         | 
| 32 | 
            +
                  raise AuthenticationError.new('Unauthenticated Request', response.code, response.body)
         | 
| 33 | 
            +
                else
         | 
| 34 | 
            +
                  raise APIError.new('Invalid Request', response.code, response.body)
         | 
| 35 | 
            +
                end
         | 
| 36 | 
            +
              rescue IOError
         | 
| 37 | 
            +
                raise APIConnectionError.new('Connection error')
         | 
| 38 | 
            +
              rescue SocketError
         | 
| 39 | 
            +
                raise APIConnectionError.new('Socket error. Failed to connect.')
         | 
| 15 40 | 
             
              end
         | 
| 16 | 
            -
              response
         | 
| 17 41 | 
             
            end
         | 
| 18 42 |  | 
| 19 43 | 
             
            def get_arg(options = {}, param)
         | 
| @@ -27,10 +51,10 @@ def get_arg(options = {}, param) | |
| 27 51 | 
             
            end
         | 
| 28 52 |  | 
| 29 53 | 
             
            def check_param(options = {}, param)
         | 
| 30 | 
            -
              options.each do |key,_|
         | 
| 54 | 
            +
              options.each do |key, _|
         | 
| 31 55 | 
             
                if key.include?(param)
         | 
| 32 56 | 
             
                  return true
         | 
| 33 57 | 
             
                end
         | 
| 34 58 | 
             
              end
         | 
| 35 59 | 
             
              false
         | 
| 36 | 
            -
            end
         | 
| 60 | 
            +
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: expresscheckout
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.1. | 
| 4 | 
            +
              version: 0.1.6
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Juspay
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2016-06 | 
| 11 | 
            +
            date: 2016-09-06 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         | 
| @@ -65,14 +65,24 @@ files: | |
| 65 65 | 
             
            - Gemfile
         | 
| 66 66 | 
             
            - LICENSE.txt
         | 
| 67 67 | 
             
            - README.md
         | 
| 68 | 
            +
            - RELEASE.md
         | 
| 68 69 | 
             
            - Rakefile
         | 
| 69 70 | 
             
            - bin/console
         | 
| 70 71 | 
             
            - bin/setup
         | 
| 72 | 
            +
            - example.rb
         | 
| 71 73 | 
             
            - expresscheckout.gemspec
         | 
| 72 74 | 
             
            - lib/Cards.rb
         | 
| 75 | 
            +
            - lib/Customers.rb
         | 
| 73 76 | 
             
            - lib/Orders.rb
         | 
| 74 77 | 
             
            - lib/Payments.rb
         | 
| 75 78 | 
             
            - lib/Test.rb
         | 
| 79 | 
            +
            - lib/Wallets.rb
         | 
| 80 | 
            +
            - lib/errors/api_connection_error.rb
         | 
| 81 | 
            +
            - lib/errors/api_error.rb
         | 
| 82 | 
            +
            - lib/errors/authentication_error.rb
         | 
| 83 | 
            +
            - lib/errors/invalid_arguement_error.rb
         | 
| 84 | 
            +
            - lib/errors/invalid_request_error.rb
         | 
| 85 | 
            +
            - lib/errors/juspay_error.rb
         | 
| 76 86 | 
             
            - lib/expresscheckout.rb
         | 
| 77 87 | 
             
            - lib/expresscheckout/version.rb
         | 
| 78 88 | 
             
            - lib/util.rb
         | 
| @@ -91,6 +101,8 @@ require_paths: | |
| 91 101 | 
             
            - lib/Cards.rb
         | 
| 92 102 | 
             
            - lib/Test.rb
         | 
| 93 103 | 
             
            - lib/util.rb
         | 
| 104 | 
            +
            - lib/Customers.rb
         | 
| 105 | 
            +
            - lib/Wallets.rb
         | 
| 94 106 | 
             
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 95 107 | 
             
              requirements:
         | 
| 96 108 | 
             
              - - ">="
         |