eway_rapid 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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,25 @@
1
+ module EwayRapid
2
+ module Message
3
+ module Convert
4
+ class PaymentToPaymentDetails
5
+
6
+ # @param [InternalModels::Payment] payment
7
+ # @return [Models::PaymentDetails]
8
+ def do_convert(payment)
9
+ detail = Models::PaymentDetails.new
10
+
11
+ if payment
12
+ detail.currency_code = payment.currency_code
13
+ detail.invoice_description = payment.invoice_description
14
+ detail.invoice_number = payment.invoice_number
15
+ detail.invoice_reference = payment.invoice_reference
16
+ detail.total_amount = payment.total_amount
17
+ else
18
+ detail.total_amount = 0
19
+ end
20
+ detail
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,41 @@
1
+ module EwayRapid
2
+ module Message
3
+ module Convert
4
+ module Request
5
+ class RefundToDirectRefundReq
6
+
7
+ # @param [Models::Refund] refund
8
+ # @return [DirectRefundRequest]
9
+ def do_convert(refund)
10
+ request = DirectRefundRequest.new
11
+
12
+ if refund
13
+ shipping_convert = ShippingDetailsToAddress.new
14
+ customer_convert = CustomerToInternalCustomer.new
15
+ request.refund = refund.refund_details
16
+ request.shipping_address = shipping_convert.do_convert(refund.shipping_details)
17
+ request.customer = customer_convert.do_convert(refund.customer)
18
+ request.partner_id = refund.partner_id
19
+ request.device_id = refund.device_id
20
+ request.line_items = refund.line_items
21
+
22
+ # @type [Array]
23
+ list_options = refund.options
24
+
25
+ if list_options && list_options.length > 0
26
+ list_convert = []
27
+ list_options.each do |value|
28
+ op = InternalModels::Option.new
29
+ op.value = value
30
+ list_convert.push(op)
31
+ end
32
+ request.options = list_convert
33
+ end
34
+ end
35
+ request
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,28 @@
1
+ module EwayRapid
2
+ module Message
3
+ module Convert
4
+ module Request
5
+ class TransactionToCapturePayment
6
+
7
+ # @param [Models::Transaction] transaction
8
+ # @return [CapturePaymentRequest]
9
+ def do_convert(transaction)
10
+ request = CapturePaymentRequest.new
11
+ request.transaction_id = transaction.auth_transaction_id
12
+
13
+ if transaction.payment_details
14
+ payment = InternalModels::Payment.new
15
+ payment.currency_code = transaction.payment_details.currency_code
16
+ payment.invoice_description = transaction.payment_details.invoice_description
17
+ payment.invoice_number = transaction.payment_details.invoice_number
18
+ payment.invoice_reference = transaction.payment_details.invoice_reference
19
+ payment.total_amount = transaction.payment_details.total_amount
20
+ request.payment = payment
21
+ end
22
+ request
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,58 @@
1
+ module EwayRapid
2
+ module Message
3
+ module Convert
4
+ module Request
5
+ class TransactionToCreateAccessCodeRequest
6
+
7
+ # @param [Models::Transaction] transaction
8
+ # @return [CreateAccessCodeRequest]
9
+ def do_convert(transaction)
10
+ request = CreateAccessCodeRequest.new
11
+
12
+ if transaction
13
+ request.transaction_type = transaction.transaction_type
14
+ request.device_id = transaction.device_id
15
+ request.partner_id = transaction.partner_id
16
+ request.redirect_url = transaction.redirect_url
17
+ # request.payment.total_amount = transaction.payment_details.total_amount if transaction.payment_details
18
+
19
+ if transaction.customer
20
+ internal_cust_convert = CustomerToInternalCustomer.new(false)
21
+ request.customer = internal_cust_convert.do_convert(transaction.customer)
22
+ request.customer_ip = transaction.customer.customer_device_ip
23
+ end
24
+
25
+ ship_address_convert = TransactionShippingAddress.new
26
+ request.shipping_address = ship_address_convert.do_convert(transaction)
27
+
28
+ payment_convert = TransactionToPayment.new
29
+ request.payment = payment_convert.do_convert(transaction)
30
+
31
+ if transaction.checkout_url
32
+ request.checkout_payment = transaction.checkout_payment
33
+ request.checkout_url = transaction.checkout_url
34
+ end
35
+
36
+ line_item_convert = TransactionToArrLineItem.new
37
+ request.items = line_item_convert.do_convert(transaction)
38
+
39
+ option_convert = TransactionToArrOption.new
40
+ request.options = option_convert.do_convert(transaction)
41
+
42
+ if transaction.shipping_details && transaction.shipping_details.shipping_method
43
+ request.shipping_method = transaction.shipping_details.shipping_method
44
+ end
45
+
46
+ request.method = if transaction.capture
47
+ Enums::RequestMethod::PROCESS_PAYMENT
48
+ else
49
+ Enums::RequestMethod::AUTHORISE
50
+ end
51
+ end
52
+ request
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,54 @@
1
+ module EwayRapid
2
+ module Message
3
+ module Convert
4
+ module Request
5
+ class TransactionToCreateAccessCodeSharedRequest
6
+
7
+ # @param [Models::Transaction] input
8
+ # @return [CreateAccessCodeSharedRequest]
9
+ def do_convert(input)
10
+ request = CreateAccessCodeSharedRequest.new
11
+
12
+ if input
13
+ request.cancel_url = input.cancel_url
14
+ request.transaction_type = input.transaction_type
15
+ request.device_id = input.device_id
16
+ request.partner_id = input.partner_id
17
+ request.redirect_url = input.redirect_url
18
+ request.custom_view = input.custom_view
19
+ request.header_text = input.header_text
20
+ request.customer_ip = input.customer.customer_device_ip if input.customer
21
+ request.logo_url = input.logo_url
22
+ request.language = input.language
23
+ request.verify_customer_email = input.verify_customer_email
24
+ request.verify_customer_phone = input.verify_customer_phone
25
+ request.customer_read_only = input.customer_read_only
26
+
27
+ internal_cust_convert = CustomerToInternalCustomer.new
28
+ request.customer = internal_cust_convert.do_convert(input.customer)
29
+
30
+ ship_address_convert = TransactionShippingAddress.new
31
+ request.shipping_address = ship_address_convert.do_convert(input)
32
+
33
+ payment_convert = TransactionToPayment.new
34
+ request.payment = payment_convert.do_convert(input)
35
+
36
+ line_item_convert = TransactionToArrLineItem.new
37
+ request.items = line_item_convert.do_convert(input)
38
+
39
+ option_converter = TransactionToArrOption.new
40
+ request.options = option_converter.do_convert(input)
41
+
42
+ request.method = if input.capture
43
+ Enums::RequestMethod::PROCESS_PAYMENT
44
+ else
45
+ Enums::RequestMethod::AUTHORISE
46
+ end
47
+ end
48
+ request
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,45 @@
1
+ module EwayRapid
2
+ module Message
3
+ module Convert
4
+ module Request
5
+ class TransactionToDirectPayment
6
+
7
+ # @param [Models::Transaction] input
8
+ # @return [DirectPaymentRequest]
9
+ def do_convert(input)
10
+ request = DirectPaymentRequest.new
11
+ inter_cust_convert = CustomerToInternalCustomer.new
12
+
13
+ if input.customer
14
+ request.customer_ip = input.customer.customer_device_ip
15
+ request.customer = inter_cust_convert.do_convert(input.customer)
16
+ end
17
+
18
+ payment_convert = TransactionToPayment.new
19
+ request.payment = payment_convert.do_convert(input)
20
+
21
+ ship_converter = TransactionShippingAddress.new
22
+ request.shipping_address = ship_converter.do_convert(input)
23
+
24
+ line_item_convert = TransactionToArrLineItem.new
25
+ request.items = line_item_convert.do_convert(input)
26
+
27
+ option_converter = TransactionToArrOption.new
28
+ request.options = option_converter.do_convert(input)
29
+
30
+ request.device_id = input.device_id
31
+ request.partner_id = input.partner_id
32
+ request.transaction_type = input.transaction_type || ''
33
+ request.method = if input.capture
34
+ Enums::RequestMethod::PROCESS_PAYMENT
35
+ else
36
+ Enums::RequestMethod::AUTHORISE
37
+ end
38
+ request.redirect_url = input.redirect_url
39
+ request
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,23 @@
1
+ module EwayRapid
2
+ module Message
3
+ module Convert
4
+ module Response
5
+ class AccessCodeSharedToCreateCust
6
+
7
+ # @param [CreateAccessCodeSharedResponse] response
8
+ # @return [CreateCustomerResponse]
9
+ def do_convert(response)
10
+ customer_response = CreateCustomerResponse.new
11
+ customer_response.access_code = response.access_code
12
+ customer_response.errors = response.errors.split(/\s*,\s*/) if response.errors
13
+
14
+ cust_convert = InternalCustomerToCustomer.new
15
+ customer_response.customer = cust_convert.do_convert(response.customer)
16
+ customer_response.shared_payment_url = response.shared_payment_url
17
+ customer_response
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,28 @@
1
+ module EwayRapid
2
+ module Message
3
+ module Convert
4
+ module Response
5
+ class AccessCodeSharedToCreateTrans
6
+
7
+ # @param [CreateAccessCodeSharedResponse] response
8
+ # @return [CreateTransactionResponse]
9
+ def do_convert(response)
10
+ transaction_response = CreateTransactionResponse.new
11
+ transaction = Models::Transaction.new
12
+ cust_convert = InternalCustomerToCustomer.new
13
+ transaction.customer = cust_convert.do_convert(response.customer)
14
+
15
+ payment_convert = PaymentToPaymentDetails.new
16
+ transaction.payment_details = payment_convert.do_convert(response.payment)
17
+
18
+ transaction_response.transaction = transaction
19
+ transaction_response.errors = response.errors.split(/\s*,\s*/) if response.errors
20
+ transaction_response.shared_payment_url = response.shared_payment_url
21
+ transaction_response.access_code = response.access_code
22
+ transaction_response
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,24 @@
1
+ module EwayRapid
2
+ module Message
3
+ module Convert
4
+ module Response
5
+ class AccessCodeToCreateCust
6
+
7
+ # @param [CreateAccessCodeResponse] response
8
+ # @return [CreateCustomerResponse]
9
+ def do_convert(response)
10
+ customer_response = CreateCustomerResponse.new
11
+ customer_response.access_code = response.access_code
12
+ customer_response.form_action_url = response.form_action_url
13
+
14
+ convert = InternalCustomerToCustomer.new
15
+ customer_response.customer = convert.do_convert(response.customer)
16
+
17
+ customer_response.errors = response.errors.split(/\s*,\s*/) if response.errors
18
+ customer_response
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,27 @@
1
+ module EwayRapid
2
+ module Message
3
+ module Convert
4
+ module Response
5
+ class AccessCodeToCreateTrans
6
+
7
+ # @param [CreateAccessCodeResponse] response
8
+ # @return [CreateTransactionResponse]
9
+ def do_convert(response)
10
+ transaction_response = CreateTransactionResponse.new
11
+ transaction = Models::Transaction.new
12
+ cust_convert = InternalCustomerToCustomer.new
13
+ transaction.customer = cust_convert.do_convert(response.customer)
14
+
15
+ payment_convert = PaymentToPaymentDetails.new
16
+ transaction.payment_details = payment_convert.do_convert(response.payment)
17
+ transaction_response.transaction = transaction
18
+ transaction_response.errors = response.errors.split(/\s*,\s*/) if response.errors
19
+ transaction_response.access_code = response.access_code
20
+ transaction_response.form_action_url = response.form_action_url
21
+ transaction_response
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,37 @@
1
+ module EwayRapid
2
+ module Message
3
+ module Convert
4
+ module Response
5
+ class CancelAuthorisationToRefund
6
+ attr_reader :refund
7
+
8
+ # @param [Models::Refund] refund
9
+ def initialize(refund)
10
+ @refund = refund
11
+ end
12
+
13
+ # @param [CancelAuthorisationResponse] cancel
14
+ # @return [RefundResponse]
15
+ def do_convert(cancel)
16
+ response = RefundResponse.new
17
+ response.refund = @refund
18
+
19
+ status = Models::TransactionStatus.new
20
+ status.status = cancel.transaction_status
21
+
22
+ detail = Models::ProcessingDetails.new
23
+ detail.response_code = cancel.errors
24
+ detail.response_code = cancel.response_code
25
+
26
+ status.processing_details = detail
27
+ status.transaction_id = Integer(cancel.transaction_id)
28
+
29
+ response.transaction_status = status
30
+ response.errors = cancel.errors.split(/\s*,\s*/) if cancel.errors
31
+ response
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,43 @@
1
+ module EwayRapid
2
+ module Message
3
+ module Convert
4
+ module Response
5
+ class CapturePaymentToCreateTransaction
6
+
7
+ # @param [CapturePaymentResponse] capture
8
+ # @return [CreateTransactionResponse]
9
+ def do_convert(capture)
10
+ response = CreateTransactionResponse.new
11
+ status = Models::TransactionStatus.new
12
+ begin
13
+ status.transaction_id = parse_int(capture.transaction_id) if capture.transaction_id
14
+ rescue
15
+ raise ArgumentError.new 'Convert transaction id ' + capture.transaction_id + ' to integer error'
16
+ end
17
+
18
+ status.status = capture.transaction_status
19
+
20
+ detail = Models::ProcessingDetails.new
21
+ detail.response_code = capture.errors
22
+ detail.response_code = capture.response_code
23
+ detail.response_message = capture.response_message
24
+
25
+ status.processing_details = detail
26
+
27
+ response.transaction_status = status
28
+ response.errors = capture.errors.split(/\s*,\s*/) if capture.errors
29
+ response
30
+ end
31
+
32
+ def parse_int(string)
33
+ begin
34
+ Integer(string)
35
+ rescue RuntimeError
36
+ raise ArgumentError.new 'Convert transaction id ' + capture.transaction_id + ' to integer error'
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end