webpay 2.4.1 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +0 -2
  3. data/Rakefile +0 -6
  4. data/lib/webpay/account.rb +19 -24
  5. data/lib/webpay/api_resource.rb +5 -0
  6. data/lib/webpay/charge.rb +48 -27
  7. data/lib/webpay/customer.rb +56 -91
  8. data/lib/webpay/data_types.rb +2069 -0
  9. data/lib/webpay/error.rb +68 -0
  10. data/lib/webpay/event.rb +19 -16
  11. data/lib/webpay/recursion.rb +47 -46
  12. data/lib/webpay/shop.rb +37 -68
  13. data/lib/webpay/token.rb +19 -10
  14. data/lib/webpay.rb +114 -77
  15. data/webpay.gemspec +6 -13
  16. metadata +16 -179
  17. data/.rspec +0 -2
  18. data/.travis.yml +0 -12
  19. data/LICENSE.txt +0 -22
  20. data/README.md +0 -52
  21. data/gemfiles/no_doc_gems +0 -14
  22. data/lib/data/ca-certificates.crt +0 -3829
  23. data/lib/webpay/card.rb +0 -13
  24. data/lib/webpay/client.rb +0 -81
  25. data/lib/webpay/deleted_entity.rb +0 -8
  26. data/lib/webpay/entity.rb +0 -71
  27. data/lib/webpay/entity_list.rb +0 -25
  28. data/lib/webpay/fee.rb +0 -13
  29. data/lib/webpay/operations.rb +0 -49
  30. data/lib/webpay/response_converter.rb +0 -57
  31. data/lib/webpay/version.rb +0 -5
  32. data/lib/webpay/webpay_error.rb +0 -126
  33. data/spec/resources/account/delete.txt +0 -15
  34. data/spec/resources/account/retrieve.txt +0 -23
  35. data/spec/resources/charges/all.txt +0 -139
  36. data/spec/resources/charges/capture.txt +0 -49
  37. data/spec/resources/charges/create_with_card.txt +0 -49
  38. data/spec/resources/charges/create_with_customer.txt +0 -49
  39. data/spec/resources/charges/refund.txt +0 -57
  40. data/spec/resources/charges/retrieve.txt +0 -49
  41. data/spec/resources/charges/retrieve_not_captured.txt +0 -42
  42. data/spec/resources/customers/all.txt +0 -76
  43. data/spec/resources/customers/create.txt +0 -31
  44. data/spec/resources/customers/delete.txt +0 -16
  45. data/spec/resources/customers/retrieve.txt +0 -63
  46. data/spec/resources/customers/retrieve_deleted.txt +0 -16
  47. data/spec/resources/customers/update.txt +0 -31
  48. data/spec/resources/errors/bad_request.txt +0 -18
  49. data/spec/resources/errors/broken_json.txt +0 -16
  50. data/spec/resources/errors/card_error.txt +0 -19
  51. data/spec/resources/errors/not_found.txt +0 -18
  52. data/spec/resources/errors/not_found_ja.txt +0 -20
  53. data/spec/resources/errors/unauthorized.txt +0 -16
  54. data/spec/resources/errors/unknown_api_error.txt +0 -17
  55. data/spec/resources/events/all_with_type.txt +0 -164
  56. data/spec/resources/events/retrieve.txt +0 -41
  57. data/spec/resources/recursions/all.txt +0 -61
  58. data/spec/resources/recursions/create.txt +0 -26
  59. data/spec/resources/recursions/delete.txt +0 -16
  60. data/spec/resources/recursions/resume.txt +0 -26
  61. data/spec/resources/recursions/retrieve.txt +0 -26
  62. data/spec/resources/recursions/retrieve_deleted.txt +0 -16
  63. data/spec/resources/recursions/retrieve_suspended.txt +0 -26
  64. data/spec/resources/shops/all.txt +0 -122
  65. data/spec/resources/shops/create.txt +0 -54
  66. data/spec/resources/shops/retrieve.txt +0 -54
  67. data/spec/resources/shops/update.txt +0 -55
  68. data/spec/resources/tokens/create.txt +0 -30
  69. data/spec/resources/tokens/retrieve.txt +0 -30
  70. data/spec/spec_helper.rb +0 -37
  71. data/spec/webpay/account_spec.rb +0 -24
  72. data/spec/webpay/charge_spec.rb +0 -143
  73. data/spec/webpay/customer_spec.rb +0 -109
  74. data/spec/webpay/event_spec.rb +0 -30
  75. data/spec/webpay/recursion_spec.rb +0 -93
  76. data/spec/webpay/shop_spec.rb +0 -121
  77. data/spec/webpay/token_spec.rb +0 -33
  78. data/spec/webpay/webpay_error_spec.rb +0 -64
  79. data/spec/webpay_spec.rb +0 -40
data/lib/webpay/card.rb DELETED
@@ -1,13 +0,0 @@
1
- module WebPay
2
-
3
- # Object for API response hash object with <code>hash['object'] = card</code>.
4
- # Card is not accessible as an API endpoint
5
- class Card < Entity
6
-
7
- # Check equality with rhs
8
- # @return [Boolean] true if rhs is the same object, or it is a Card with the same fingerprint value
9
- def ==(other)
10
- other.equals?(self) || (other.instance_of?(self.class) && other.fingerprint == self.fingerprint)
11
- end
12
- end
13
- end
data/lib/webpay/client.rb DELETED
@@ -1,81 +0,0 @@
1
- require 'faraday'
2
- require 'json'
3
-
4
- module WebPay
5
-
6
- # API client wrapping of Faraday.
7
- # Not intended to use directly.
8
- class Client
9
-
10
- # Initialize client
11
- #
12
- # @param api_key [String] User's secret API key
13
- # @param api_base [String] the URL without trailing '/'.
14
- # @param api_version [String] the path indicating API version. `/v1`.
15
- #
16
- # @example Client for the default endpoint
17
- # Client.new('test_secret_XXXX', 'https://api.webpay.jp', '/v1')
18
- def initialize(api_key, api_base, api_version, api_proxy = nil, lang = :en)
19
- ssl_options = {ca_file: WebPay.ssl_ca_file}
20
- default_headers = {
21
- 'Authorization' => "Bearer #{api_key}",
22
- 'User-Agent' => "WebPay#{api_version} RubyBinding/#{WebPay::VERSION}",
23
- 'Accept-Language' => lang.to_s
24
- }
25
- @conn = Faraday.new(api_base, ssl: ssl_options, headers: default_headers, proxy: api_proxy) do |builder|
26
- builder.request :url_encoded
27
- builder.adapter Faraday.default_adapter
28
- end
29
- @api_version = api_version
30
- end
31
-
32
- # Convert faraday response to a hash by decoding JSON.
33
- # This raises error if the response indicates error status.
34
- #
35
- # @api private
36
- # @param response [Faraday::Response]
37
- # @return [Hash] Raw object
38
- # @raise [WebPay::WebPayError] For invalid requests (4xx) or internal server error (5xx)
39
- def handle_response(response)
40
- case response.status
41
- when 200..299
42
- begin
43
- JSON.parse(response.body.force_encoding(infer_encoding(response)))
44
- rescue JSON::ParserError => e
45
- raise WebPay::APIConnectionError.new("Response JSON is broken. #{e.message}: #{response.body}", e)
46
- end
47
- else
48
- raise WebPay::WebPayError.from_response(response.status, response.body)
49
- end
50
- end
51
-
52
- Faraday::Connection::METHODS.each do |method|
53
- define_method(method) do |url, *args|
54
- begin
55
- response = @conn.__send__(method, @api_version + url, *args)
56
- rescue Faraday::Error::ClientError, URI::InvalidURIError => e
57
- raise WebPay::APIConnectionError.faraday_error(e)
58
- end
59
- handle_response(response)
60
- end
61
- end
62
-
63
- private
64
-
65
- # Infer encoding from response
66
- #
67
- # @param response [Faraday::Response]
68
- # @return [Encoding]
69
- def infer_encoding(response)
70
- unless (type = response.headers['content-type']) &&
71
- (charset = type.split(';').find { |field| field.include?('charset=') })
72
- return Encoding.default_external
73
- end
74
-
75
- encoding_string = charset.split('=', 2).last.strip
76
- Encoding.find(encoding_string)
77
- rescue
78
- Encoding.default_external
79
- end
80
- end
81
- end
@@ -1,8 +0,0 @@
1
- module WebPay
2
- class DeletedEntity < Entity
3
- # @return [Boolean] true
4
- def deleted?
5
- true
6
- end
7
- end
8
- end
data/lib/webpay/entity.rb DELETED
@@ -1,71 +0,0 @@
1
- module WebPay
2
-
3
- # The base class for entity objects
4
- # @abstract
5
- class Entity
6
- class << self
7
- include Operations
8
-
9
- # Convert hash API response into an entity object
10
- # @param [Hash] hash Raw API response
11
- # @return [Entity] An entity object corresponds to hash
12
- def convert(hash)
13
- converter = ResponseConverter.new
14
- converter.convert(hash)
15
- end
16
- end
17
-
18
- # Attributes of this object.
19
- # <code>method_missing</code> and <code>#[]</code> are provided to access attributes
20
- attr_reader :attributes
21
-
22
- # Initialized by ResponseConverter
23
- # @api private
24
- def initialize(attributes)
25
- @attributes = attributes
26
- end
27
-
28
- # @return [Boolean] true if rhs is the same object or has the same id
29
- def ==(other)
30
- other.equal?(self) || (other.instance_of?(self.class) && other.id == self.id)
31
- end
32
-
33
- # Access attribute.
34
- # Using the attribute name as a method is recommended.
35
- # @return [Object] The attribute's value
36
- def [](key)
37
- send(key)
38
- end
39
-
40
- # Return a hash similar to the response from API.
41
- # @return [Hash] a hash similar to the response from API
42
- def to_hash
43
- Hash[@attributes.map { |k, v| [k, v.is_a?(Entity) ? v.to_hash : v] }]
44
- end
45
-
46
- alias_method :to_h, :to_hash
47
-
48
- # Provide access to attributes
49
- # @return [Object] The attribute's value
50
- def method_missing(method_name, *args, &block)
51
- key = method_name.to_s
52
- if @attributes.has_key?(key)
53
- @attributes[key]
54
- else
55
- super
56
- end
57
- end
58
-
59
- def respond_to_missing?(method_name, include_private = false)
60
- @attributes.has_key?(method_name.to_s) || super
61
- end
62
-
63
- private
64
- def update_attributes(attributes)
65
- raise "unexpected object" if attributes['object'] != @attributes['object']
66
- new_object = ResponseConverter.new.convert(attributes)
67
- @attributes = new_object.attributes
68
- self
69
- end
70
- end
71
- end
@@ -1,25 +0,0 @@
1
- module WebPay
2
-
3
- # Object for API response hash object with <code>hash['object'] = list</code>.
4
- # This enumerates containing data.
5
- class EntityList < Entity
6
- include Enumerable
7
-
8
- # @return [Boolean] true if rhs is the same object or id lists of containing data are the same
9
- def ==(other)
10
- other.equal?(self) ||
11
- (other.instance_of?(self.class) && other.data.map(&:id) == self.data.map(&:id))
12
- end
13
-
14
- # Return the all entry count, not limited by <code>limit</code>.
15
- # This overrides <code>Enumerable#count</code>. Not necessarily equal to the data size.
16
- def count
17
- @attributes['count']
18
- end
19
-
20
- # Enumerate containing data.
21
- def each(&block)
22
- self.data.each(&block)
23
- end
24
- end
25
- end
data/lib/webpay/fee.rb DELETED
@@ -1,13 +0,0 @@
1
- module WebPay
2
-
3
- # Object for API response hash object with <code>hash['object'] = fee</code>.
4
- # Fee is not accessible as an API endpoint
5
- class Fee < Entity
6
-
7
- # Check equality with rhs
8
- # @return [Boolean] true only if rhs is the same object
9
- def ==(other)
10
- self.equal?(other)
11
- end
12
- end
13
- end
@@ -1,49 +0,0 @@
1
- module WebPay
2
-
3
- # This module installs collection operations to entities.
4
- # Some of <code>create</code>, <code>retrieve</code>, and <code>all</code> are defined as class methods.
5
- module Operations
6
-
7
- # Install selected operations
8
- # @api private
9
- def install_class_operations(*operations)
10
- define_create if operations.include?(:create)
11
- define_retrieve if operations.include?(:retrieve)
12
- define_all if operations.include?(:all)
13
- end
14
-
15
- # Define <code>create</code> method
16
- # @api private
17
- def define_create
18
- instance_eval do
19
- def create(params = {})
20
- convert(WebPay.client.post(path, params))
21
- end
22
- end
23
- end
24
-
25
- # Define <code>retrieve(id)</code> method
26
- # @api private
27
- def define_retrieve
28
- instance_eval do
29
- def retrieve(id)
30
- id = id.to_s
31
- if id.strip == ''
32
- raise InvalidRequestError.invalid_id(id)
33
- end
34
- convert(WebPay.client.get([path, id].join('/')))
35
- end
36
- end
37
- end
38
-
39
- # Define <code>all</code> method
40
- # @api private
41
- def define_all
42
- instance_eval do
43
- def all(params = {})
44
- convert(WebPay.client.get(path, params))
45
- end
46
- end
47
- end
48
- end
49
- end
@@ -1,57 +0,0 @@
1
- module WebPay
2
-
3
- # Converts raw Hash response to an entity
4
- class ResponseConverter
5
-
6
- # Converts raw Hash response to an entity.
7
- # This recursively changes internal objects.
8
- # @param [Hash] attributes Raw API response
9
- # @return [Entity] Corresponding entity
10
- def convert(attributes)
11
- case attributes['object']
12
- when 'card'
13
- Card.new(attributes)
14
- when 'fee'
15
- Fee.new(attributes)
16
- when 'charge'
17
- if attributes['card']
18
- attributes['card'] = convert(attributes['card'])
19
- end
20
- if attributes['fees']
21
- attributes['fees'] = attributes['fees'].map { |fee| convert(fee) }
22
- end
23
- Charge.new(attributes)
24
- when 'customer'
25
- if attributes['active_card']
26
- attributes['active_card'] = convert(attributes['active_card'])
27
- end
28
- if attributes['recursions']
29
- attributes['recursions'] = attributes['recursions'].map { |recursion| convert(recursion) }
30
- end
31
- Customer.new(attributes)
32
- when 'token'
33
- if attributes['card']
34
- attributes['card'] = convert(attributes['card'])
35
- end
36
- Token.new(attributes)
37
- when 'event'
38
- if attributes['data']
39
- attributes['data']['object'] = convert(attributes['data']['object'])
40
- attributes['data'] = Event::Data.new(attributes['data'])
41
- end
42
- Event.new(attributes)
43
- when 'shop'
44
- Shop.new(attributes)
45
- when 'recursion'
46
- Recursion.new(attributes)
47
- when 'account'
48
- Account.new(attributes)
49
-
50
- when 'list'
51
- attributes['data'] ||= []
52
- attributes['data'].map! { |line| convert(line) }
53
- EntityList.new(attributes)
54
- end
55
- end
56
- end
57
- end
@@ -1,5 +0,0 @@
1
- module WebPay
2
-
3
- # Version of WebPay gem
4
- VERSION = "2.4.1"
5
- end
@@ -1,126 +0,0 @@
1
- require 'json'
2
- module WebPay
3
-
4
- # Abstract error class for WebPay errors.
5
- # All WebPay error classes inherit this.
6
- # This error itself is not raised.
7
- class WebPayError < StandardError
8
- # @api private
9
- # @return [WebPayError]
10
- def self.from_response(status, body)
11
- hash =
12
- begin
13
- JSON.load(body)
14
- rescue JSON::ParserError => e
15
- return WebPay::APIConnectionError.new("Response JSON is broken. #{e.message}: #{body}", e)
16
- end
17
- unless hash['error']
18
- return APIConnectionError.new("Invalid response #{body}")
19
- end
20
- error_hash = hash['error']
21
- case status
22
- when 400, 404
23
- InvalidRequestError.new(status, error_hash)
24
- when 401
25
- AuthenticationError.new(status, error_hash)
26
- when 402
27
- CardError.new(status, error_hash)
28
- else
29
- APIError.new(status, error_hash)
30
- end
31
- end
32
-
33
- # @return [Integer, nil] HTTP status code
34
- attr_reader :status
35
-
36
- # @return [Hash, nil] Responded error object
37
- attr_reader :error_response
38
-
39
- def initialize(message, status = nil, error_response = nil)
40
- @status, @error_response = status, error_response
41
- super(message)
42
- end
43
- end
44
-
45
- # This error is raised when API request fails.
46
- class APIConnectionError < WebPayError
47
- # @api private
48
- # @return [APIConnectionError]
49
- def self.faraday_error(e)
50
- new("Connection with WebPay API server failed. #{e.message}", e)
51
- end
52
-
53
- # @return [Error] The original error raised in request
54
- attr_reader :original_error
55
-
56
- def initialize(message, original_error = nil)
57
- @original_error = original_error
58
- super(message)
59
- end
60
- end
61
-
62
- # This error means WebPay service reported internal server error.
63
- class APIError < WebPayError
64
-
65
- # @return [String] 'api_error' or 'processing_error'
66
- attr_reader :type
67
-
68
- def initialize(status, error_response)
69
- @type = error_response['type']
70
- super(error_response['message'], status, error_response)
71
- end
72
- end
73
-
74
- # Occurs when api_key is invalid.
75
- # Check again that a correct api_key is set
76
- class AuthenticationError < WebPayError
77
- def initialize(status, error_response)
78
- super(error_response['message'], status, error_response)
79
- end
80
- end
81
-
82
- # Occurs when card information is invalid
83
- class CardError < WebPayError
84
-
85
- # @return [String] 'card_error'
86
- attr_reader :type
87
-
88
- # @return [String] Error code
89
- attr_reader :code
90
-
91
- # @return [String] The field where an error is detected
92
- attr_reader :param
93
-
94
- def initialize(status, error_response)
95
- @type = error_response['type']
96
- @code = error_response['code']
97
- @param = error_response['param']
98
- super(error_response['message'], status, error_response)
99
- end
100
- end
101
-
102
- # Occurs when the specified entity is not found, or request parameters are
103
- # invalid
104
- class InvalidRequestError < WebPayError
105
-
106
- # @return [String] 'invalid_request_error'
107
- attr_reader :type
108
-
109
- # @return [String] The field where an error is detected
110
- attr_reader :param
111
-
112
- def initialize(status, error_response)
113
- @type = error_response['type']
114
- @param = error_response['param']
115
- super(error_response['message'], status, error_response)
116
- end
117
-
118
- # Internal
119
- def self.invalid_id(id)
120
- InvalidRequestError.new(nil, {
121
- 'type' => 'invalid_request_error',
122
- 'message' => "ID must not be empty",
123
- 'param' => 'id' })
124
- end
125
- end
126
- end
@@ -1,15 +0,0 @@
1
- HTTP/1.1 200 OK
2
- Content-Type: application/json; charset=utf-8
3
- X-Ua-Compatible: IE=Edge
4
- Etag: "ffc2622aa8286367b501554d9625bc7e"
5
- Cache-Control: max-age=0, private, must-revalidate
6
- X-Request-Id: b90a98ba6c730796bb4651b30eefcf3d
7
- X-Runtime: 0.030542
8
- Server: WEBrick/1.3.1 (Ruby/1.9.3/2013-02-22)
9
- Date: Wed, 11 Sep 2013 12:50:01 GMT
10
- Content-Length: 22
11
- Connection: Keep-Alive
12
-
13
- {
14
- "deleted": true
15
- }
@@ -1,23 +0,0 @@
1
- HTTP/1.1 200 OK
2
- Content-Type: application/json; charset=utf-8
3
- X-Ua-Compatible: IE=Edge
4
- Etag: "bfda5f4ce8f4baff2dc95b81d3eeddc8"
5
- Cache-Control: max-age=0, private, must-revalidate
6
- X-Request-Id: ac424d922fefdd1625e41bda0e13f4b8
7
- X-Runtime: 0.057802
8
- Server: WEBrick/1.3.1 (Ruby/1.9.3/2013-02-22)
9
- Date: Wed, 11 Sep 2013 12:48:50 GMT
10
- Content-Length: 234
11
- Connection: Keep-Alive
12
-
13
- {
14
- "object": "account",
15
- "id": "acct_2Cmdexb7J2r78rz",
16
- "email": "test-me@example.com",
17
- "statement_descriptor": null,
18
- "details_submitted": false,
19
- "charge_enabled": false,
20
- "currencies_supported": [
21
- "jpy"
22
- ]
23
- }
@@ -1,139 +0,0 @@
1
- HTTP/1.1 200 OK
2
- Content-Type: application/json; charset=utf-8
3
- X-Ua-Compatible: IE=Edge
4
- Etag: "d62affbd4db0c10ce2244cc7d5a05249"
5
- Cache-Control: max-age=0, private, must-revalidate
6
- X-Request-Id: c53aade07e31b8c4cc03c18bfe5ee086
7
- X-Runtime: 0.013481
8
- Server: WEBrick/1.3.1 (Ruby/1.9.3/2013-02-22)
9
- Date: Mon, 14 Apr 2014 02:43:46 GMT
10
- Content-Length: 3067
11
- Connection: Keep-Alive
12
-
13
- {
14
- "object": "list",
15
- "url": "/v1/charges",
16
- "count": 4,
17
- "data": [
18
- {
19
- "id": "ch_511apkasx749bfE",
20
- "object": "charge",
21
- "livemode": false,
22
- "currency": "jpy",
23
- "description": "Test Charge",
24
- "amount": 1000,
25
- "amount_refunded": 0,
26
- "customer": "cus_5119ShaAgbLyfwS",
27
- "created": 1397443228,
28
- "paid": false,
29
- "refunded": false,
30
- "failure_message": null,
31
- "card": {
32
- "object": "card",
33
- "exp_year": 2016,
34
- "exp_month": 9,
35
- "fingerprint": "215b5b2fe460809b8bb90bae6eeac0e0e0987bd7",
36
- "name": "KEI KUBO",
37
- "country": "JP",
38
- "type": "Visa",
39
- "cvc_check": "pass",
40
- "last4": "4242"
41
- },
42
- "captured": false,
43
- "expire_time": 1398048028,
44
- "fees": [
45
-
46
- ]
47
- },
48
- {
49
- "id": "ch_5119xE4mH4zA9p9",
50
- "object": "charge",
51
- "livemode": false,
52
- "currency": "jpy",
53
- "description": "Test Charge",
54
- "amount": 1000,
55
- "amount_refunded": 0,
56
- "customer": "cus_5119ShaAgbLyfwS",
57
- "created": 1397443215,
58
- "paid": true,
59
- "refunded": false,
60
- "failure_message": null,
61
- "card": {
62
- "object": "card",
63
- "exp_year": 2016,
64
- "exp_month": 9,
65
- "fingerprint": "215b5b2fe460809b8bb90bae6eeac0e0e0987bd7",
66
- "name": "KEI KUBO",
67
- "country": "JP",
68
- "type": "Visa",
69
- "cvc_check": "pass",
70
- "last4": "4242"
71
- },
72
- "captured": true,
73
- "expire_time": null,
74
- "fees": [
75
- {
76
- "object": "fee",
77
- "transaction_type": "payment",
78
- "transaction_fee": 0,
79
- "rate": 35.0,
80
- "amount": 350,
81
- "created": 1397443216
82
- }
83
- ]
84
- },
85
- {
86
- "id": "ch_5112dr0Mu5Kyd2I",
87
- "object": "charge",
88
- "livemode": false,
89
- "currency": "jpy",
90
- "description": "Test Charge",
91
- "amount": 1000,
92
- "amount_refunded": 400,
93
- "customer": null,
94
- "created": 1397442849,
95
- "paid": true,
96
- "refunded": false,
97
- "failure_message": null,
98
- "card": {
99
- "object": "card",
100
- "exp_year": 2015,
101
- "exp_month": 12,
102
- "fingerprint": "215b5b2fe460809b8bb90bae6eeac0e0e0987bd7",
103
- "name": "YUUKO SHIONJI",
104
- "country": "JP",
105
- "type": "Visa",
106
- "cvc_check": "pass",
107
- "last4": "4242"
108
- },
109
- "captured": true,
110
- "expire_time": null,
111
- "fees": [
112
- {
113
- "object": "fee",
114
- "transaction_type": "payment",
115
- "transaction_fee": 0,
116
- "rate": 35.0,
117
- "amount": 350,
118
- "created": 1397442849
119
- },
120
- {
121
- "object": "fee",
122
- "transaction_type": "refund",
123
- "transaction_fee": 0,
124
- "rate": 35.0,
125
- "amount": -350,
126
- "created": 1397443154
127
- },
128
- {
129
- "object": "fee",
130
- "transaction_type": "payment",
131
- "transaction_fee": 0,
132
- "rate": 35.0,
133
- "amount": 210,
134
- "created": 1397443154
135
- }
136
- ]
137
- }
138
- ]
139
- }
@@ -1,49 +0,0 @@
1
- HTTP/1.1 200 OK
2
- Content-Type: application/json; charset=utf-8
3
- X-Ua-Compatible: IE=Edge
4
- Etag: "55751ab0623ce3649f648ce9161a340e"
5
- Cache-Control: max-age=0, private, must-revalidate
6
- X-Request-Id: e57b763f56b9212d2aac3d5204303b59
7
- X-Runtime: 0.471463
8
- Server: WEBrick/1.3.1 (Ruby/1.9.3/2013-02-22)
9
- Date: Mon, 14 Apr 2014 02:58:16 GMT
10
- Content-Length: 785
11
- Connection: Keep-Alive
12
-
13
- {
14
- "id": "ch_5113hA4L51yj8TF",
15
- "object": "charge",
16
- "livemode": false,
17
- "currency": "jpy",
18
- "description": "Test Charge",
19
- "amount": 1000,
20
- "amount_refunded": 0,
21
- "customer": "cus_5119ShaAgbLyfwS",
22
- "created": 1397444145,
23
- "paid": true,
24
- "refunded": false,
25
- "failure_message": null,
26
- "card": {
27
- "object": "card",
28
- "exp_year": 2016,
29
- "exp_month": 9,
30
- "fingerprint": "215b5b2fe460809b8bb90bae6eeac0e0e0987bd7",
31
- "name": "KEI KUBO",
32
- "country": "JP",
33
- "type": "Visa",
34
- "cvc_check": "pass",
35
- "last4": "4242"
36
- },
37
- "captured": true,
38
- "expire_time": 1398048945,
39
- "fees": [
40
- {
41
- "object": "fee",
42
- "transaction_type": "payment",
43
- "transaction_fee": 0,
44
- "rate": 3.25,
45
- "amount": 33,
46
- "created": 1397444296
47
- }
48
- ]
49
- }