eway_rapid 1.0.0

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.
Files changed (76) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +25 -0
  3. data/.travis.yml +11 -0
  4. data/CHANGELOG.md +7 -0
  5. data/Gemfile +2 -0
  6. data/LICENSE.md +21 -0
  7. data/README.md +96 -0
  8. data/Rakefile +14 -0
  9. data/eway_rapid.gemspec +26 -0
  10. data/lib/eway_rapid.rb +78 -0
  11. data/lib/eway_rapid/constants.rb +126 -0
  12. data/lib/eway_rapid/entities/cancel_authorisation_request.rb +9 -0
  13. data/lib/eway_rapid/entities/cancel_authorisation_response.rb +34 -0
  14. data/lib/eway_rapid/entities/capture_payment_request.rb +11 -0
  15. data/lib/eway_rapid/entities/capture_payment_response.rb +34 -0
  16. data/lib/eway_rapid/entities/create_access_code_request.rb +35 -0
  17. data/lib/eway_rapid/entities/create_access_code_response.rb +128 -0
  18. data/lib/eway_rapid/entities/create_access_code_shared_request.rb +53 -0
  19. data/lib/eway_rapid/entities/create_access_code_shared_response.rb +40 -0
  20. data/lib/eway_rapid/entities/create_customer_response.rb +8 -0
  21. data/lib/eway_rapid/entities/direct_customer_search_request.rb +9 -0
  22. data/lib/eway_rapid/entities/direct_customer_search_response.rb +23 -0
  23. data/lib/eway_rapid/entities/direct_payment_request.rb +29 -0
  24. data/lib/eway_rapid/entities/direct_payment_response.rb +58 -0
  25. data/lib/eway_rapid/entities/direct_refund_request.rb +26 -0
  26. data/lib/eway_rapid/entities/direct_refund_response.rb +44 -0
  27. data/lib/eway_rapid/entities/transaction_search_response.rb +23 -0
  28. data/lib/eway_rapid/exceptions.rb +51 -0
  29. data/lib/eway_rapid/message/convert/customer_to_internal_customer.rb +70 -0
  30. data/lib/eway_rapid/message/convert/direct_payment_to_trans_status.rb +47 -0
  31. data/lib/eway_rapid/message/convert/direct_refund_to_trans_status.rb +33 -0
  32. data/lib/eway_rapid/message/convert/internal_customer_to_customer.rb +41 -0
  33. data/lib/eway_rapid/message/convert/internal_trans_to_trans.rb +62 -0
  34. data/lib/eway_rapid/message/convert/internal_transaction_to_address.rb +27 -0
  35. data/lib/eway_rapid/message/convert/internal_transaction_to_status.rb +55 -0
  36. data/lib/eway_rapid/message/convert/payment_to_payment_details.rb +25 -0
  37. data/lib/eway_rapid/message/convert/request/refund_to_direct_refund_req.rb +41 -0
  38. data/lib/eway_rapid/message/convert/request/transaction_to_capture_payment.rb +28 -0
  39. data/lib/eway_rapid/message/convert/request/transaction_to_create_access_code_request.rb +58 -0
  40. data/lib/eway_rapid/message/convert/request/transaction_to_create_access_code_shared_request.rb +54 -0
  41. data/lib/eway_rapid/message/convert/request/transaction_to_direct_payment.rb +45 -0
  42. data/lib/eway_rapid/message/convert/response/access_code_shared_to_create_cust.rb +23 -0
  43. data/lib/eway_rapid/message/convert/response/access_code_shared_to_create_trans.rb +28 -0
  44. data/lib/eway_rapid/message/convert/response/access_code_to_create_cust.rb +24 -0
  45. data/lib/eway_rapid/message/convert/response/access_code_to_create_trans.rb +27 -0
  46. data/lib/eway_rapid/message/convert/response/cancel_authorisation_to_refund.rb +37 -0
  47. data/lib/eway_rapid/message/convert/response/capture_payment_to_create_transaction.rb +43 -0
  48. data/lib/eway_rapid/message/convert/response/direct_customer_to_query_customer.rb +55 -0
  49. data/lib/eway_rapid/message/convert/response/direct_payment_to_create_cust.rb +23 -0
  50. data/lib/eway_rapid/message/convert/response/direct_payment_to_create_trans.rb +32 -0
  51. data/lib/eway_rapid/message/convert/response/direct_refund_to_refund_response.rb +28 -0
  52. data/lib/eway_rapid/message/convert/response/search_to_query_trans.rb +30 -0
  53. data/lib/eway_rapid/message/convert/shipping_details_to_address.rb +35 -0
  54. data/lib/eway_rapid/message/convert/transaction_shipping_address.rb +37 -0
  55. data/lib/eway_rapid/message/convert/transaction_to_arr_line_item.rb +14 -0
  56. data/lib/eway_rapid/message/convert/transaction_to_arr_option.rb +25 -0
  57. data/lib/eway_rapid/message/convert/transaction_to_payment.rb +29 -0
  58. data/lib/eway_rapid/message/convert/verification_to_verification_result.rb +33 -0
  59. data/lib/eway_rapid/message/process/customer_process.rb +255 -0
  60. data/lib/eway_rapid/message/process/refund_process.rb +76 -0
  61. data/lib/eway_rapid/message/process/rest_process.rb +87 -0
  62. data/lib/eway_rapid/message/process/transaction_process.rb +139 -0
  63. data/lib/eway_rapid/models/enums.rb +126 -0
  64. data/lib/eway_rapid/models/internal_models.rb +431 -0
  65. data/lib/eway_rapid/models/models.rb +334 -0
  66. data/lib/eway_rapid/output/create_transaction_response.rb +24 -0
  67. data/lib/eway_rapid/output/query_customer_response.rb +25 -0
  68. data/lib/eway_rapid/output/query_transaction_response.rb +16 -0
  69. data/lib/eway_rapid/output/refund_response.rb +9 -0
  70. data/lib/eway_rapid/output/response_output.rb +14 -0
  71. data/lib/eway_rapid/rapid_client.rb +444 -0
  72. data/lib/eway_rapid/rapid_logger.rb +40 -0
  73. data/lib/eway_rapid/resources/err_code_resource_en.yml +237 -0
  74. data/lib/eway_rapid/resources/rapid-api.yml +4 -0
  75. data/lib/eway_rapid/version.rb +3 -0
  76. metadata +201 -0
@@ -0,0 +1,11 @@
1
+ module EwayRapid
2
+ class CapturePaymentRequest
3
+ attr_accessor :transaction_id
4
+ attr_accessor :payment
5
+
6
+ def to_json(options={})
7
+ {Constants::REQUEST_TRANSACTION_ID => transaction_id,
8
+ Constants::PAYMENT => InternalModels::Payment.to_hash(payment)}.to_json
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,34 @@
1
+ module EwayRapid
2
+ class CapturePaymentResponse
3
+ attr_accessor :response_code
4
+ attr_accessor :response_message
5
+ attr_accessor :transaction_id
6
+ attr_accessor :transaction_status
7
+ attr_accessor :errors
8
+
9
+ alias_method :transaction_status?, :transaction_status
10
+
11
+ def to_json(options={})
12
+ {Constants::RESPONSE_CODE => response_code,
13
+ Constants::RESPONSE_MESSAGE => response_message,
14
+ Constants::TRANSACTION_ID => transaction_id,
15
+ Constants::TRANSACTION_STATUS => transaction_status,
16
+ Constants::ERRORS => errors}.to_json
17
+ end
18
+
19
+ def self.from_json(json)
20
+ hash = JSON.parse(json)
21
+ from_hash(hash)
22
+ end
23
+
24
+ def self.from_hash(hash)
25
+ capture_payment_response = CapturePaymentResponse.new
26
+ capture_payment_response.response_code = hash[Constants::RESPONSE_CODE]
27
+ capture_payment_response.response_message = hash[Constants::RESPONSE_MESSAGE]
28
+ capture_payment_response.transaction_id = hash[Constants::TRANSACTION_ID]
29
+ capture_payment_response.transaction_status = hash[Constants::TRANSACTION_STATUS]
30
+ capture_payment_response.errors = hash[Constants::ERRORS_CAPITALIZED]
31
+ capture_payment_response
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,35 @@
1
+ module EwayRapid
2
+ class CreateAccessCodeRequest
3
+ attr_accessor :customer
4
+ attr_accessor :shipping_address
5
+ attr_accessor :shipping_method
6
+ attr_accessor :items
7
+ attr_accessor :options
8
+ attr_accessor :payment
9
+ attr_accessor :redirect_url
10
+ attr_accessor :method
11
+ attr_accessor :customer_ip
12
+ attr_accessor :device_id
13
+ attr_accessor :checkout_payment
14
+ attr_accessor :checkout_url
15
+ attr_accessor :transaction_type
16
+ attr_accessor :partner_id
17
+
18
+ def to_json(opts={})
19
+ {Constants::CUSTOMER => InternalModels::Customer.to_hash(customer),
20
+ Constants::SHIPPING_ADDRESS => InternalModels::ShippingAddress.to_hash(shipping_address),
21
+ Constants::SHIPPING_METHOD => shipping_method,
22
+ Constants::ITEMS => Models::LineItem.to_array(items),
23
+ Constants::OPTIONS => InternalModels::Option.to_array(options),
24
+ Constants::PAYMENT => InternalModels::Payment.to_hash(payment),
25
+ Constants::REDIRECT_URL => redirect_url,
26
+ Constants::METHOD => method,
27
+ Constants::CUSTOMER_DEVICE_IP => customer_ip,
28
+ Constants::DEVICE_ID => device_id,
29
+ Constants::CHECKOUT_PAYMENT => checkout_payment,
30
+ Constants::CHECKOUT_URL => checkout_url,
31
+ Constants::TRANSACTION_TYPE => transaction_type,
32
+ Constants::PARTNER_ID => partner_id}.to_json
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,128 @@
1
+ module EwayRapid
2
+ class CreateAccessCodeResponse
3
+ attr_accessor :customer
4
+ attr_accessor :payment
5
+ attr_accessor :access_code
6
+ attr_accessor :form_action_url
7
+ attr_accessor :errors
8
+ attr_accessor :complete_checkout_url
9
+ attr_accessor :total_amount
10
+ attr_accessor :invoice_number
11
+ attr_accessor :invoice_description
12
+ attr_accessor :invoice_reference
13
+ attr_accessor :currency_code
14
+ attr_accessor :token_customer_id
15
+ attr_accessor :reference
16
+ attr_accessor :title
17
+ attr_accessor :first_name
18
+ attr_accessor :last_name
19
+ attr_accessor :company_name
20
+ attr_accessor :job_description
21
+ attr_accessor :street1
22
+ attr_accessor :street2
23
+ attr_accessor :city
24
+ attr_accessor :state
25
+ attr_accessor :postal_code
26
+ attr_accessor :country
27
+ attr_accessor :email
28
+ attr_accessor :phone
29
+ attr_accessor :mobile
30
+ attr_accessor :comments
31
+ attr_accessor :fax
32
+ attr_accessor :url
33
+ attr_accessor :card_number
34
+ attr_accessor :card_name
35
+ attr_accessor :card_expiry_month
36
+ attr_accessor :card_expiry_year
37
+ attr_accessor :card_start_month
38
+ attr_accessor :card_start_year
39
+ attr_accessor :card_issue_number
40
+
41
+ def to_json(options={})
42
+ {Constants::CUSTOMER => customer,
43
+ Constants::PAYMENT => payment,
44
+ Constants::ACCESS_CODE => access_code,
45
+ Constants::FORM_ACTION_URL => form_action_url,
46
+ Constants::ERRORS_CAPITALIZED => errors,
47
+ Constants::COMPLETE_CHECKOUT_URL => complete_checkout_url,
48
+ Constants::TOTAL_AMOUNT => total_amount,
49
+ Constants::INVOICE_NUMBER => invoice_number,
50
+ Constants::INVOICE_DESCRIPTION => invoice_description,
51
+ Constants::INVOICE_REFERENCE => invoice_reference,
52
+ Constants::CURRENCY_CODE => currency_code,
53
+ Constants::TOKEN_CUSTOMER_ID => token_customer_id,
54
+ Constants::REFERENCE => reference,
55
+ Constants::TITLE => title,
56
+ Constants::FIRST_NAME => first_name,
57
+ Constants::LAST_NAME => last_name,
58
+ Constants::COMPANY_NAME => company_name,
59
+ Constants::JOB_DESCRIPTION => job_description,
60
+ Constants::STREET1 => street1,
61
+ Constants::STREET2 => street2,
62
+ Constants::CITY => city,
63
+ Constants::STATE => state,
64
+ Constants::POSTAL_CODE => postal_code,
65
+ Constants::COUNTRY => country,
66
+ Constants::EMAIL => email,
67
+ Constants::PHONE => phone,
68
+ Constants::MOBILE => mobile,
69
+ Constants::COMMENTS => comments,
70
+ Constants::FAX => fax,
71
+ Constants::URL => url,
72
+ Constants::CARD_NUMBER => card_number,
73
+ Constants::CARD_NAME => card_name,
74
+ Constants::CARD_EXPIRY_MONTH => card_expiry_month,
75
+ Constants::CARD_EXPIRY_YEAR => card_expiry_year,
76
+ Constants::CARD_START_MONTH => card_start_month,
77
+ Constants::CARD_START_YEAR => card_start_year,
78
+ Constants::CARD_ISSUE_NUMBER => card_issue_number}.to_json
79
+ end
80
+
81
+ def self.from_json(json)
82
+ hash = JSON.parse(json)
83
+ from_hash(hash)
84
+ end
85
+
86
+ def self.from_hash(hash)
87
+ create_access_code_response = CreateAccessCodeResponse.new
88
+ create_access_code_response.customer = InternalModels::Customer.from_hash(hash[Constants::CUSTOMER])
89
+ create_access_code_response.payment = InternalModels::Payment.from_hash(hash[Constants::PAYMENT])
90
+ create_access_code_response.access_code = hash[Constants::ACCESS_CODE]
91
+ create_access_code_response.form_action_url = hash[Constants::FORM_ACTION_URL]
92
+ create_access_code_response.errors = hash[Constants::ERRORS_CAPITALIZED]
93
+ create_access_code_response.complete_checkout_url = hash[Constants::COMPLETE_CHECKOUT_URL]
94
+ create_access_code_response.total_amount = hash[Constants::TOTAL_AMOUNT]
95
+ create_access_code_response.invoice_number = hash[Constants::INVOICE_NUMBER]
96
+ create_access_code_response.invoice_description = hash[Constants::INVOICE_DESCRIPTION]
97
+ create_access_code_response.invoice_reference = hash[Constants::INVOICE_REFERENCE]
98
+ create_access_code_response.currency_code = hash[Constants::CURRENCY_CODE]
99
+ create_access_code_response.token_customer_id = hash[Constants::TOKEN_CUSTOMER_ID]
100
+ create_access_code_response.reference = hash[Constants::REFERENCE]
101
+ create_access_code_response.title = hash[Constants::TITLE]
102
+ create_access_code_response.first_name = hash[Constants::FIRST_NAME]
103
+ create_access_code_response.last_name = hash[Constants::LAST_NAME]
104
+ create_access_code_response.company_name = hash[Constants::COMPANY_NAME]
105
+ create_access_code_response.job_description = hash[Constants::JOB_DESCRIPTION]
106
+ create_access_code_response.street1 = hash[Constants::STREET1]
107
+ create_access_code_response.street2 = hash[Constants::STREET2]
108
+ create_access_code_response.city = hash[Constants::CITY]
109
+ create_access_code_response.state = hash[Constants::STATE]
110
+ create_access_code_response.postal_code = hash[Constants::POSTAL_CODE]
111
+ create_access_code_response.country = hash[Constants::COUNTRY]
112
+ create_access_code_response.email = hash[Constants::EMAIL]
113
+ create_access_code_response.phone = hash[Constants::PHONE]
114
+ create_access_code_response.mobile = hash[Constants::MOBILE]
115
+ create_access_code_response.comments = hash[Constants::COMMENTS]
116
+ create_access_code_response.fax = hash[Constants::FAX]
117
+ create_access_code_response.url = hash[Constants::URL]
118
+ create_access_code_response.card_number = hash[Constants::CARD_NUMBER]
119
+ create_access_code_response.card_name = hash[Constants::CARD_NAME]
120
+ create_access_code_response.card_expiry_month = hash[Constants::CARD_EXPIRY_MONTH]
121
+ create_access_code_response.card_expiry_year = hash[Constants::CARD_EXPIRY_YEAR]
122
+ create_access_code_response.card_start_month = hash[Constants::CARD_START_MONTH]
123
+ create_access_code_response.card_start_year = hash[Constants::CARD_START_YEAR]
124
+ create_access_code_response.card_issue_number = hash[Constants::CARD_ISSUE_NUMBER]
125
+ create_access_code_response
126
+ end
127
+ end
128
+ end
@@ -0,0 +1,53 @@
1
+ module EwayRapid
2
+ class CreateAccessCodeSharedRequest
3
+ attr_accessor :customer
4
+ attr_accessor :shipping_address
5
+ attr_accessor :shipping_method
6
+ attr_accessor :items
7
+ attr_accessor :options
8
+ attr_accessor :payment
9
+ attr_accessor :redirect_url
10
+ attr_accessor :cancel_url
11
+ attr_accessor :checkout_url
12
+ attr_accessor :method
13
+ attr_accessor :device_id
14
+ attr_accessor :customer_ip
15
+ attr_accessor :transaction_type
16
+ attr_accessor :logo_url
17
+ attr_accessor :header_text
18
+ attr_accessor :partner_id
19
+ attr_accessor :language
20
+ attr_accessor :customer_read_only
21
+ attr_accessor :custom_view
22
+ attr_accessor :verify_customer_phone
23
+ attr_accessor :verify_customer_email
24
+ attr_accessor :checkout_payment
25
+
26
+ def to_json(opts={})
27
+ {
28
+ Constants::CUSTOMER => InternalModels::Customer.to_hash(customer),
29
+ Constants::SHIPPING_ADDRESS => InternalModels::ShippingAddress.to_hash(shipping_address),
30
+ Constants::SHIPPING_METHOD => shipping_method,
31
+ Constants::ITEMS => Models::LineItem.to_array(items),
32
+ Constants::OPTIONS => InternalModels::Option.to_array(options),
33
+ Constants::PAYMENT => InternalModels::Payment.to_hash(payment),
34
+ Constants::REDIRECT_URL => redirect_url,
35
+ Constants::CANCEL_URL => cancel_url,
36
+ Constants::CHECKOUT_URL => checkout_url,
37
+ Constants::METHOD => method,
38
+ Constants::DEVICE_ID => device_id,
39
+ Constants::CUSTOMER_DEVICE_IP => customer_ip,
40
+ Constants::TRANSACTION_TYPE => transaction_type,
41
+ Constants::LOGO_URL => logo_url,
42
+ Constants::HEADER_TEXT => header_text,
43
+ Constants::PARTNER_ID => partner_id,
44
+ Constants::LANGUAGE => language,
45
+ Constants::CUSTOMER_READ_ONLY => customer_read_only,
46
+ Constants::CUSTOMER_VIEW => custom_view,
47
+ Constants::VERIFY_CUSTOMER_PHONE => verify_customer_phone,
48
+ Constants::VERIFY_CUSTOMER_EMAIL => verify_customer_email,
49
+ Constants::CHECKOUT_PAYMENT => checkout_payment
50
+ }.to_json
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,40 @@
1
+ module EwayRapid
2
+ class CreateAccessCodeSharedResponse
3
+ attr_accessor :customer
4
+ attr_accessor :payment
5
+ attr_accessor :access_code
6
+ attr_accessor :form_action_url
7
+ attr_accessor :errors
8
+ attr_accessor :shared_payment_url
9
+ attr_accessor :complete_checkout_url
10
+
11
+ def to_json(options={})
12
+ {
13
+ Constants::CUSTOMER => customer,
14
+ Constants::PAYMENT => payment,
15
+ Constants::ACCESS_CODE => access_code,
16
+ Constants::FORM_ACTION_URL => form_action_url,
17
+ Constants::ERRORS_CAPITALIZED => errors,
18
+ Constants::SHARED_PAYMENT_URL => shared_payment_url,
19
+ Constants::COMPLETE_CHECKOUT_URL => complete_checkout_url
20
+ }.to_json
21
+ end
22
+
23
+ def self.from_json(json)
24
+ hash = JSON.parse(json)
25
+ from_hash(hash)
26
+ end
27
+
28
+ def self.from_hash(hash)
29
+ create_access_code = CreateAccessCodeSharedResponse.new
30
+ create_access_code.customer = InternalModels::Customer.from_hash(hash[Constants::CUSTOMER])
31
+ create_access_code.payment = InternalModels::Payment.from_hash(hash[Constants::PAYMENT])
32
+ create_access_code.access_code = hash[Constants::ACCESS_CODE]
33
+ create_access_code.form_action_url = hash[Constants::FORM_ACTION_URL]
34
+ create_access_code.errors = hash[Constants::ERRORS_CAPITALIZED]
35
+ create_access_code.shared_payment_url = hash[Constants::SHARED_PAYMENT_URL]
36
+ create_access_code.complete_checkout_url = hash[Constants::COMPLETE_CHECKOUT_URL]
37
+ create_access_code
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,8 @@
1
+ module EwayRapid
2
+ class CreateCustomerResponse < ResponseOutput
3
+ attr_accessor :customer
4
+ attr_accessor :shared_payment_url
5
+ attr_accessor :form_action_url
6
+ attr_accessor :access_code
7
+ end
8
+ end
@@ -0,0 +1,9 @@
1
+ module EwayRapid
2
+ class DirectCustomerSearchRequest
3
+ attr_accessor :token_customer_id
4
+
5
+ def to_json(options={})
6
+ {Constants::TOKEN_CUSTOMER_ID => token_customer_id}.to_json
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,23 @@
1
+ module EwayRapid
2
+ class DirectCustomerSearchResponse
3
+ attr_accessor :customers
4
+ attr_accessor :errors
5
+
6
+ def to_json(options={})
7
+ {Constants::CUSTOMERS => customers,
8
+ Constants::ERRORS => errors}.to_json
9
+ end
10
+
11
+ def self.from_json(json)
12
+ hash = JSON.parse(json)
13
+ from_hash(hash)
14
+ end
15
+
16
+ def self.from_hash(hash)
17
+ response = DirectCustomerSearchResponse.new
18
+ response.customers = InternalModels::Customer.from_array(hash[Constants::CUSTOMERS])
19
+ response.errors = hash[Constants::ERRORS_CAPITALIZED]
20
+ response
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,29 @@
1
+ module EwayRapid
2
+ class DirectPaymentRequest
3
+ attr_accessor :customer
4
+ attr_accessor :shipping_address
5
+ attr_accessor :items
6
+ attr_accessor :options
7
+ attr_accessor :payment
8
+ attr_accessor :method
9
+ attr_accessor :transaction_type
10
+ attr_accessor :customer_ip
11
+ attr_accessor :device_id
12
+ attr_accessor :partner_id
13
+ attr_accessor :redirect_url
14
+
15
+ def to_json(opts={})
16
+ {Constants::CUSTOMER => InternalModels::Customer.to_hash(customer),
17
+ Constants::SHIPPING_ADDRESS => InternalModels::ShippingAddress.to_hash(shipping_address),
18
+ Constants::ITEMS => Models::LineItem.to_array(items),
19
+ Constants::OPTIONS => InternalModels::Option.to_array(options),
20
+ Constants::PAYMENT => InternalModels::Payment.to_hash(payment),
21
+ Constants::METHOD => method,
22
+ Constants::TRANSACTION_TYPE => transaction_type,
23
+ Constants::CUSTOMER_DEVICE_IP => customer_ip,
24
+ Constants::DEVICE_ID => device_id,
25
+ Constants::PARTNER_ID => partner_id,
26
+ Constants::REDIRECT_URL => redirect_url}.to_json
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,58 @@
1
+ module EwayRapid
2
+ class DirectPaymentResponse
3
+ attr_accessor :authorisation_code
4
+ attr_accessor :response_code
5
+ attr_accessor :response_message
6
+ attr_accessor :transaction_id
7
+ attr_accessor :transaction_status
8
+ attr_accessor :transaction_type
9
+ attr_accessor :beagle_score
10
+ attr_accessor :errors
11
+ attr_accessor :transaction_captured
12
+ attr_accessor :fraud_action
13
+ attr_accessor :verification
14
+ attr_accessor :customer
15
+ attr_accessor :payment
16
+
17
+ alias_method :transaction_status?, :transaction_status
18
+
19
+ def to_json(options={})
20
+ {Constants::AUTHORISATION_CODE => authorisation_code,
21
+ Constants::RESPONSE_CODE => response_code,
22
+ Constants::RESPONSE_MESSAGE => response_message,
23
+ Constants::TRANSACTION_ID => transaction_id,
24
+ Constants::TRANSACTION_STATUS => transaction_status,
25
+ Constants::TRANSACTION_TYPE => transaction_type,
26
+ Constants::BEAGLE_SCORE => beagle_score,
27
+ Constants::ERRORS_CAPITALIZED => errors,
28
+ Constants::TRANSACTION_CAPTURED => transaction_captured,
29
+ Constants::FRAUD_ACTION => fraud_action,
30
+ Constants::VERIFICATION => verification,
31
+ Constants::CUSTOMER => customer,
32
+ Constants::PAYMENT => payment}.to_json
33
+ end
34
+
35
+ def self.from_json(json)
36
+ hash = JSON.parse(json)
37
+ from_hash(hash)
38
+ end
39
+
40
+ def self.from_hash(hash)
41
+ direct_payment_response = DirectPaymentResponse.new
42
+ direct_payment_response.authorisation_code = hash[Constants::AUTHORISATION_CODE]
43
+ direct_payment_response.response_code = hash[Constants::RESPONSE_CODE]
44
+ direct_payment_response.response_message = hash[Constants::RESPONSE_MESSAGE]
45
+ direct_payment_response.transaction_id = hash[Constants::TRANSACTION_ID]
46
+ direct_payment_response.transaction_status = hash[Constants::TRANSACTION_STATUS]
47
+ direct_payment_response.transaction_type = hash[Constants::TRANSACTION_TYPE]
48
+ direct_payment_response.beagle_score = hash[Constants::BEAGLE_SCORE]
49
+ direct_payment_response.errors = hash[Constants::ERRORS_CAPITALIZED]
50
+ direct_payment_response.transaction_captured = hash[Constants::TRANSACTION_CAPTURED]
51
+ direct_payment_response.fraud_action = hash[Constants::FRAUD_ACTION]
52
+ direct_payment_response.verification = InternalModels::Verification.from_hash(hash[Constants::VERIFICATION]) if hash[Constants::VERIFICATION]
53
+ direct_payment_response.customer = InternalModels::Customer.from_hash(hash[Constants::CUSTOMER])
54
+ direct_payment_response.payment = InternalModels::Payment.from_hash(hash[Constants::PAYMENT])
55
+ direct_payment_response
56
+ end
57
+ end
58
+ end