spree_vpago 0.1.0.pre.beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.env.example +3 -0
- data/.github/workflows/test_and_publish_gem.yml +96 -0
- data/.gitignore +24 -0
- data/.rspec +3 -0
- data/.rubocop.yml +56 -0
- data/.ruby-version +1 -0
- data/.tool-versions +1 -0
- data/.travis.yml +45 -0
- data/Appraisals +20 -0
- data/Gemfile +27 -0
- data/Gemfile.lock +656 -0
- data/LICENSE +26 -0
- data/README.md +151 -0
- data/Rakefile +21 -0
- data/app/.gitkeep +0 -0
- data/app/assets/config/spree_vpago_manifest.js +3 -0
- data/app/assets/images/backend-process.svg +3 -0
- data/app/assets/images/vpago/payway/abapay.png +0 -0
- data/app/assets/images/vpago/payway/cards.png +0 -0
- data/app/assets/javascripts/vpago/vpago_payments/request_process_payment.js +44 -0
- data/app/assets/javascripts/vpago/vpago_payments/user_informers/firebase.js +15802 -0
- data/app/controllers/.gitkeep +0 -0
- data/app/controllers/spree/acleda_redirects_controller.rb +22 -0
- data/app/controllers/spree/admin/payment_methods_controller_decorator.rb +65 -0
- data/app/controllers/spree/admin/payment_payway_base_controller.rb +25 -0
- data/app/controllers/spree/admin/payment_payway_checkers_controller.rb +34 -0
- data/app/controllers/spree/admin/payment_payway_markers_controller.rb +44 -0
- data/app/controllers/spree/admin/payment_payway_queriers_controller.rb +39 -0
- data/app/controllers/spree/admin/payment_wing_sdk_base_controller.rb +21 -0
- data/app/controllers/spree/admin/payment_wing_sdk_checkers_controller.rb +26 -0
- data/app/controllers/spree/admin/payment_wing_sdk_markers_controller.rb +36 -0
- data/app/controllers/spree/admin/payment_wing_sdk_queriers_controller.rb +20 -0
- data/app/controllers/spree/admin/payments_controller_decorator.rb +19 -0
- data/app/controllers/spree/admin/payout_profile_products_controller.rb +21 -0
- data/app/controllers/spree/admin/payout_profile_shipping_methods_controller.rb +21 -0
- data/app/controllers/spree/admin/payout_profiles_controller.rb +91 -0
- data/app/controllers/spree/admin/payouts_controller.rb +16 -0
- data/app/controllers/spree/api/v2/storefront/checkout_controller_decorator.rb +84 -0
- data/app/controllers/spree/payway_card_popups_controller.rb +20 -0
- data/app/controllers/spree/payway_results_controller.rb +11 -0
- data/app/controllers/spree/payway_v2_card_popups_controller.rb +20 -0
- data/app/controllers/spree/vpago_payments_controller.rb +71 -0
- data/app/controllers/spree/webhook/acleda_mobiles_controller.rb +88 -0
- data/app/controllers/spree/webhook/acledas_controller.rb +80 -0
- data/app/controllers/spree/webhook/base_controller.rb +6 -0
- data/app/controllers/spree/webhook/payways_controller.rb +77 -0
- data/app/controllers/spree/webhook/wings_controller.rb +63 -0
- data/app/controllers/spree/wing/base_controller.rb +29 -0
- data/app/controllers/spree/wing/transactions_controller.rb +27 -0
- data/app/controllers/spree/wing_redirects_controller.rb +20 -0
- data/app/helpers/vpago/admin/base_helper_decorator.rb +40 -0
- data/app/helpers/vpago/vpago_payments_helper.rb +12 -0
- data/app/javascripts/vpago/vpago_payments/user_informers/firebase.js +62 -0
- data/app/jobs/application_unique_job.rb +1 -0
- data/app/jobs/vpago/payment_processor_job.rb +8 -0
- data/app/models/.gitkeep +0 -0
- data/app/models/concerns/vpago/payoutable.rb +11 -0
- data/app/models/spree/gateway/acleda.rb +63 -0
- data/app/models/spree/gateway/acleda_mobile.rb +46 -0
- data/app/models/spree/gateway/payway.rb +66 -0
- data/app/models/spree/gateway/payway_v2.rb +174 -0
- data/app/models/spree/gateway/wing_sdk.rb +51 -0
- data/app/models/spree/payout.rb +23 -0
- data/app/models/spree/payout_profile.rb +107 -0
- data/app/models/spree/payout_profile_product.rb +14 -0
- data/app/models/spree/payout_profile_shipping_method.rb +14 -0
- data/app/models/spree/payout_profiles/payway_v2.rb +40 -0
- data/app/models/spree/vpago_payment_source.rb +21 -0
- data/app/models/vpago/adjustment_decorator.rb +28 -0
- data/app/models/vpago/line_item_decorator.rb +75 -0
- data/app/models/vpago/order_decorator.rb +78 -0
- data/app/models/vpago/payment_decorator.rb +44 -0
- data/app/models/vpago/payment_method_decorator.rb +91 -0
- data/app/models/vpago/payouts_generator.rb +125 -0
- data/app/models/vpago/product_decorator.rb +30 -0
- data/app/models/vpago/promotion_action_decorator.rb +9 -0
- data/app/models/vpago/shipment_decorator.rb +23 -0
- data/app/models/vpago/shipping_method_decorator.rb +33 -0
- data/app/models/vpago/shipping_rate_decorator.rb +25 -0
- data/app/models/vpago/store_decorator.rb +17 -0
- data/app/models/vpago/tax_category_decorator.rb +9 -0
- data/app/models/vpago/variant_decorator.rb +22 -0
- data/app/models/vpago/vendor_decorator.rb +10 -0
- data/app/overrides/spree/admin/adjustments/_adjustment/handle_by_table_body.html.erb.deface +11 -0
- data/app/overrides/spree/admin/adjustments/_adjustments_table/handle_by_table_header.html.erb.deface +3 -0
- data/app/overrides/spree/admin/adjustments/_form/handle_by_field.html.erb.deface +10 -0
- data/app/overrides/spree/admin/orders/_shipment/edit_method.html.erb.deface +26 -0
- data/app/overrides/spree/admin/orders/_shipment/show_method.html.erb.deface +27 -0
- data/app/overrides/spree/admin/payment_methods/_form/enable_pre_auth_field.html.erb.deface +17 -0
- data/app/overrides/spree/admin/payment_methods/_form/vendor_field.html.erb.deface +6 -0
- data/app/overrides/spree/admin/payment_methods/index/list.html.erb.deface +45 -0
- data/app/overrides/spree/admin/payment_methods/index/payment_methods_tabs.html.erb.deface +9 -0
- data/app/overrides/spree/admin/payment_methods/index/vendor_body.html.erb.deface +5 -0
- data/app/overrides/spree/admin/payment_methods/index/vendor_header.html.erb.deface +5 -0
- data/app/overrides/spree/admin/payments/_list/actions.html.erb.deface +13 -0
- data/app/overrides/spree/admin/promotions/_promotion_action/run_by_field.html.erb.deface +13 -0
- data/app/overrides/spree/admin/shared/_order_tabs/payouts.html.erb.deface +8 -0
- data/app/overrides/spree/admin/shared/_product_tabs/payout_profile_products.html.erb.deface +8 -0
- data/app/overrides/spree/admin/shared/sub_menu/_integrations/payout_profiles.html.erb.deface +3 -0
- data/app/overrides/spree/admin/shipping_methods/_form/handle_by.html.erb.deface +12 -0
- data/app/overrides/spree/admin/shipping_methods/edit/shipping_method_tabs.html.erb.deface +3 -0
- data/app/overrides/spree/admin/tax_categories/_form/collect_by_field.html.erb.deface +10 -0
- data/app/overrides/spree/admin/tax_categories/index/collect_by_table_body.html.erb.deface +4 -0
- data/app/overrides/spree/admin/tax_categories/index/collect_by_table_header.html.erb.deface +4 -0
- data/app/serializers/spree/api/v2/platform/vpago_payment_source_serializer.rb +11 -0
- data/app/serializers/spree/v2/storefront/payment_method_serializer_decorator.rb +23 -0
- data/app/serializers/spree/v2/storefront/payment_redirect_serializer.rb +13 -0
- data/app/serializers/spree/v2/storefront/payment_serializer_decorator.rb +13 -0
- data/app/serializers/spree/v2/storefront/vpago_payment_source_serializer.rb +9 -0
- data/app/services/.gitkeep +0 -0
- data/app/services/vpago/payment_finder.rb +27 -0
- data/app/services/vpago/payment_processor.rb +72 -0
- data/app/services/vpago/payment_redirect_handler.rb +194 -0
- data/app/services/vpago/payment_url_constructor.rb +32 -0
- data/app/services/vpago/payments/find_or_create.rb +51 -0
- data/app/services/vpago/payout_profiles/payway/base_payout_profile_request.rb +38 -0
- data/app/services/vpago/payout_profiles/payway/open_ssl_encrypter.rb +31 -0
- data/app/services/vpago/payout_profiles/payway/payout_profile_request_creator.rb +50 -0
- data/app/services/vpago/payout_profiles/payway/payout_profile_request_params_builder.rb +58 -0
- data/app/services/vpago/payout_profiles/payway/payout_profile_request_updater.rb +28 -0
- data/app/services/vpago/payway_return_options_builder.rb +39 -0
- data/app/services/vpago/user_informers/firebase.rb +52 -0
- data/app/views/.gitkeep +0 -0
- data/app/views/layouts/acleda.html.erb +18 -0
- data/app/views/layouts/payway.html.erb +24 -0
- data/app/views/layouts/payway_v2.html.erb +18 -0
- data/app/views/layouts/vpago_payments.html.erb +18 -0
- data/app/views/layouts/wing.html.erb +18 -0
- data/app/views/spree/_payment_icon.html.erb +25 -0
- data/app/views/spree/acleda_redirects/show.html.erb +3 -0
- data/app/views/spree/admin/payments/source_forms/_payment_payway.html.erb +4 -0
- data/app/views/spree/admin/payments/source_forms/_payway_v2.html.erb +7 -0
- data/app/views/spree/admin/payments/source_views/_acleda.html.erb +1 -0
- data/app/views/spree/admin/payments/source_views/_acleda_mobile.html.erb +1 -0
- data/app/views/spree/admin/payments/source_views/_payment_payway.html.erb +98 -0
- data/app/views/spree/admin/payments/source_views/_payway_v2.html.erb +5 -0
- data/app/views/spree/admin/payments/source_views/_vpago_payment_tmpl.html.erb +113 -0
- data/app/views/spree/admin/payments/source_views/_wingsdk.html.erb +5 -0
- data/app/views/spree/admin/payout_profile_products/_form.html.erb +28 -0
- data/app/views/spree/admin/payout_profile_products/edit.html.erb +18 -0
- data/app/views/spree/admin/payout_profile_products/index.html.erb +58 -0
- data/app/views/spree/admin/payout_profile_products/new.html.erb +22 -0
- data/app/views/spree/admin/payout_profile_shipping_methods/_form.html.erb +28 -0
- data/app/views/spree/admin/payout_profile_shipping_methods/edit.html.erb +22 -0
- data/app/views/spree/admin/payout_profile_shipping_methods/index.html.erb +6 -0
- data/app/views/spree/admin/payout_profile_shipping_methods/new.html.erb +27 -0
- data/app/views/spree/admin/payout_profiles/_filter.html.erb +19 -0
- data/app/views/spree/admin/payout_profiles/_form.html.erb +72 -0
- data/app/views/spree/admin/payout_profiles/edit.html.erb +33 -0
- data/app/views/spree/admin/payout_profiles/index.html.erb +63 -0
- data/app/views/spree/admin/payout_profiles/new.html.erb +13 -0
- data/app/views/spree/admin/payouts/_line_item_info_with_popover.html.erb +43 -0
- data/app/views/spree/admin/payouts/index.html.erb +46 -0
- data/app/views/spree/admin/shared/_payment_methods_tabs.html.erb +15 -0
- data/app/views/spree/admin/shared/_shipping_method_tabs.html.erb +19 -0
- data/app/views/spree/admin/shared/payout_profile/_info_card.html.erb +24 -0
- data/app/views/spree/admin/shared/payout_profile/_status.html.erb +11 -0
- data/app/views/spree/checkout/payment/_acleda.html.erb +1 -0
- data/app/views/spree/checkout/payment/_acleda_checkout_form.html.erb +14 -0
- data/app/views/spree/checkout/payment/_acleda_mobile.html.erb +0 -0
- data/app/views/spree/checkout/payment/_payment_payway.html.erb +21 -0
- data/app/views/spree/checkout/payment/_payway_loader.html.erb +2 -0
- data/app/views/spree/checkout/payment/_payway_root.html.erb +9 -0
- data/app/views/spree/checkout/payment/_payway_script.html.erb +77 -0
- data/app/views/spree/checkout/payment/_payway_v2.html.erb +1 -0
- data/app/views/spree/checkout/payment/_payway_v2_loader.html.erb +2 -0
- data/app/views/spree/checkout/payment/_payway_v2_root.html.erb +9 -0
- data/app/views/spree/checkout/payment/_payway_v2_script.html.erb +79 -0
- data/app/views/spree/checkout/payment/_wing_checkout_form.html.erb +18 -0
- data/app/views/spree/checkout/payment/_wingsdk.html.erb +1 -0
- data/app/views/spree/checkout/payment/acleda_form.html.erb +3 -0
- data/app/views/spree/checkout/payment/payway_form.html.erb +10 -0
- data/app/views/spree/checkout/payment/payway_v2_form.html.erb +10 -0
- data/app/views/spree/checkout/payment/wingsdk_form.html.erb +3 -0
- data/app/views/spree/payway_card_popups/_form.html.erb +10 -0
- data/app/views/spree/payway_card_popups/show.html.erb +5 -0
- data/app/views/spree/payway_results/failed.html.erb +1 -0
- data/app/views/spree/payway_results/success.html.erb +1 -0
- data/app/views/spree/payway_v2_card_popups/_form.html.erb +15 -0
- data/app/views/spree/payway_v2_card_popups/show.html.erb +3 -0
- data/app/views/spree/vpago_payments/checkout.html.erb +3 -0
- data/app/views/spree/vpago_payments/forms/spree/gateway/_payway_v2.html.erb +13 -0
- data/app/views/spree/vpago_payments/processing.html.erb +49 -0
- data/app/views/spree/vpago_payments/success.html.erb +3 -0
- data/app/views/spree/wing_redirects/show.html.erb +3 -0
- data/bin/rails +8 -0
- data/build.js +9 -0
- data/config/initializers/assets.rb +1 -0
- data/config/initializers/spree_permitted_attributes.rb +5 -0
- data/config/locales/en.yml +28 -0
- data/config/locales/km.yml +24 -0
- data/config/routes.rb +92 -0
- data/db/migrate/20210128040625_create_spree_vpago_payment_sources.rb +14 -0
- data/db/migrate/20210430052432_add_fields_to_payment_sources.rb +7 -0
- data/db/migrate/20210824044737_add_preference_to_spree_vpago_payment_source.rb +5 -0
- data/db/migrate/20240506095140_create_spree_payout_profiles.rb +22 -0
- data/db/migrate/20240506095148_create_spree_payout_profile_products.rb +10 -0
- data/db/migrate/20240523070757_add_optional_spere_payout_profile_products.rb +5 -0
- data/db/migrate/20240715091228_create_spree_payouts.rb +25 -0
- data/db/migrate/20240718195510_create_spree_payout_profile_shipping_methods.rb +15 -0
- data/db/migrate/20240718201453_add_handle_by_to_spree_adjustments.rb +5 -0
- data/db/migrate/20240718201509_add_run_by_to_spree_promotion_actions.rb +5 -0
- data/db/migrate/20240718201523_add_collect_by_to_spree_tax_categories.rb +5 -0
- data/db/migrate/20240718201538_add_handle_by_to_spree_shipping_method.rb +5 -0
- data/db/migrate/20240718201554_add_handle_by_to_spree_shipping_rates.rb +5 -0
- data/db/migrate/20240808102853_add_vendor_reference_to_spree_payment_methods.rb +7 -0
- data/db/migrate/20240904030132_add_gateway_status_to_spree_payments.rb +5 -0
- data/db/migrate/20241029071959_add_pre_auth_response_to_spree_payment.rb +5 -0
- data/db/migrate/20241202104014_add_enable_pre_auth_to_spree_payment_method.rb +5 -0
- data/db/migrate/20250121044614_add_transaction_response_to_spree_payments.rb +5 -0
- data/docs/acleda.md +65 -0
- data/gemfiles/spree_3_7.gemfile +9 -0
- data/gemfiles/spree_4_0.gemfile +8 -0
- data/gemfiles/spree_4_1.gemfile +9 -0
- data/gemfiles/spree_master.gemfile +8 -0
- data/lib/generators/spree_vpago/install/install_generator.rb +26 -0
- data/lib/generators/spree_vpago/install/templates/app/assets/images/vpago/payway/acleda_merchant_logo_300x300.png +0 -0
- data/lib/spree_vpago/engine.rb +36 -0
- data/lib/spree_vpago/factories.rb +6 -0
- data/lib/spree_vpago/version.rb +9 -0
- data/lib/spree_vpago.rb +5 -0
- data/lib/vpago/acleda/base.rb +111 -0
- data/lib/vpago/acleda/checkout.rb +105 -0
- data/lib/vpago/acleda/deeplink_checkout.rb +74 -0
- data/lib/vpago/acleda/payment_request_updater.rb +38 -0
- data/lib/vpago/acleda/transaction_status.rb +71 -0
- data/lib/vpago/acleda_mobile/base.rb +28 -0
- data/lib/vpago/acleda_mobile/callback_validator.php +35 -0
- data/lib/vpago/acleda_mobile/callback_validator.rb +38 -0
- data/lib/vpago/acleda_mobile/checkout.rb +78 -0
- data/lib/vpago/acleda_mobile/payment_request_updater.rb +34 -0
- data/lib/vpago/acleda_mobile/payment_retriever.rb +24 -0
- data/lib/vpago/acleda_mobile/transaction_status.rb +35 -0
- data/lib/vpago/payment_amount_calculator.rb +23 -0
- data/lib/vpago/payment_request_updater.rb +19 -0
- data/lib/vpago/payment_status_marker.rb +109 -0
- data/lib/vpago/payway/base.rb +112 -0
- data/lib/vpago/payway/checkout.rb +24 -0
- data/lib/vpago/payway/payment_request_updater.rb +31 -0
- data/lib/vpago/payway/payment_status_marker.rb +84 -0
- data/lib/vpago/payway/transaction_status.rb +74 -0
- data/lib/vpago/payway.rb +13 -0
- data/lib/vpago/payway_v2/base.rb +153 -0
- data/lib/vpago/payway_v2/checkout.rb +35 -0
- data/lib/vpago/payway_v2/payment_request_updater.rb +65 -0
- data/lib/vpago/payway_v2/payouts_params_constructor.rb +47 -0
- data/lib/vpago/payway_v2/pre_auth_canceler.rb +43 -0
- data/lib/vpago/payway_v2/pre_auth_completer.rb +76 -0
- data/lib/vpago/payway_v2/transaction_status.rb +85 -0
- data/lib/vpago/wing_sdk/base.rb +58 -0
- data/lib/vpago/wing_sdk/checkout.rb +20 -0
- data/lib/vpago/wing_sdk/payment_request_updater.rb +46 -0
- data/lib/vpago/wing_sdk/payment_retriever.rb +34 -0
- data/lib/vpago/wing_sdk/transaction_status_checker.rb +64 -0
- data/lib/vpago/wing_sdk/transaction_status_response.rb +33 -0
- data/node_modules/.yarn-integrity +147 -0
- data/package-lock.json +1491 -0
- data/package.json +10 -0
- data/spree_vpago.gemspec +33 -0
- data/yarn.lock +921 -0
- metadata +403 -0
data/README.md
ADDED
@@ -0,0 +1,151 @@
|
|
1
|
+
# SpreeVpago
|
2
|
+
|
3
|
+

|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
1. Add this extension to your Gemfile with this line:
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
gem 'spree_vpago', github: '[your-github-handle]/spree_vpago'
|
11
|
+
```
|
12
|
+
|
13
|
+
2. Install the gem using Bundler
|
14
|
+
|
15
|
+
```ruby
|
16
|
+
bundle install
|
17
|
+
```
|
18
|
+
|
19
|
+
3. Copy & run migrations
|
20
|
+
|
21
|
+
```ruby
|
22
|
+
bundle exec rails g spree_vpago:install
|
23
|
+
```
|
24
|
+
|
25
|
+
4. Restart your server
|
26
|
+
|
27
|
+
If your server was running, restart it so that it can find the assets properly.
|
28
|
+
|
29
|
+
## Releasing
|
30
|
+
|
31
|
+
To release the gem:
|
32
|
+
|
33
|
+
1. Bump new version in the file: lib/spree_vpago/version.rb, for example
|
34
|
+
|
35
|
+
```ruby
|
36
|
+
VERSION = '1.8.0-beta1'.freeze
|
37
|
+
```
|
38
|
+
|
39
|
+
to release `1.8.0-beta1`
|
40
|
+
|
41
|
+
2. Tag a repo with the same version, for example
|
42
|
+
|
43
|
+
```sh
|
44
|
+
git tag 1.8.0-beta1
|
45
|
+
```
|
46
|
+
|
47
|
+
3. Push the tag to the repo and github action will build and push the gem to rubygem.org
|
48
|
+
|
49
|
+
4. Get the gem version to the project in cm-market-server.
|
50
|
+
|
51
|
+
## Testing
|
52
|
+
|
53
|
+
First bundle your dependencies, then run `rake`. `rake` will default to building the dummy app if it does not exist, then it will run specs. The dummy app can be regenerated by using `rake test_app`.
|
54
|
+
|
55
|
+
```shell
|
56
|
+
bundle
|
57
|
+
bundle exec rake
|
58
|
+
```
|
59
|
+
|
60
|
+
When testing your applications integration with this extension you may use it's factories.
|
61
|
+
Simply add this require statement to your spec_helper:
|
62
|
+
|
63
|
+
```ruby
|
64
|
+
require 'spree_vpago/factories'
|
65
|
+
```
|
66
|
+
|
67
|
+
Run test
|
68
|
+
|
69
|
+
```sh
|
70
|
+
rspec spec/
|
71
|
+
```
|
72
|
+
|
73
|
+
## Required Variables
|
74
|
+
|
75
|
+
### Acleda
|
76
|
+
|
77
|
+
For mobile
|
78
|
+
`ruby
|
79
|
+
ENV['ACLEDA_MOBILE_SECRET_HASH_KEY']
|
80
|
+
`
|
81
|
+
For desktop
|
82
|
+
`ruby
|
83
|
+
ENV['ACLEDA_CHECK_STATUS_PATH']
|
84
|
+
ENV['ACLEDA_CREATE_SESSION_PATH']
|
85
|
+
`
|
86
|
+
Payment method configuration:
|
87
|
+
|
88
|
+
```env
|
89
|
+
Icon Name: acleda
|
90
|
+
```
|
91
|
+
|
92
|
+
### Payway
|
93
|
+
|
94
|
+
ENV configuration:
|
95
|
+
|
96
|
+
```ruby
|
97
|
+
ENV['PAYWAY_MERCHANT_PROFILE_CONTENT_TYPE'] # html, json
|
98
|
+
ENV['PAYWAY_CHECKOUT_PATH']
|
99
|
+
ENV['PAYWAY_CHECK_TRANSACTION_PATH']
|
100
|
+
ENV['PAYWAY_RETURN_CALLBACK_URL']
|
101
|
+
ENV['PAYWAY_CONTINUE_SUCCESS_CALLBACK_URL']
|
102
|
+
|
103
|
+
#pre-auth
|
104
|
+
ENV['PAYWAY_V2_PRE_AUTH_COMPLETE_PATH']
|
105
|
+
ENV['PAYWAY_V2_PRE_AUTH_CANCEL_PATH']
|
106
|
+
```
|
107
|
+
|
108
|
+
Payment method configuration:
|
109
|
+
|
110
|
+
```env
|
111
|
+
HOST: https://checkout-sandbox.payway.com.kh
|
112
|
+
Payment Option: one of the [abapay, cards]
|
113
|
+
Merchant: vtenh
|
114
|
+
Api Key: xxxxx
|
115
|
+
Icon Name: one of the [payway_abapay, payway_cards]
|
116
|
+
```
|
117
|
+
|
118
|
+
#### Push Back Setting
|
119
|
+
|
120
|
+
PayWay will call POST request to return_url when transaction is completed in either form-data or json. By default, its will request with json. If you prefer to use html or form-data format, asks ABA integration team to set the following settings AKA Pushback:
|
121
|
+
|
122
|
+
```s
|
123
|
+
# push back settings
|
124
|
+
Format: html
|
125
|
+
```
|
126
|
+
|
127
|
+
Make sure to set to env as well to let our system know how to handle when ABA push back.
|
128
|
+
|
129
|
+
```s
|
130
|
+
PAYWAY_MERCHANT_PROFILE_CONTENT_TYPE="html"
|
131
|
+
```
|
132
|
+
|
133
|
+
### Note
|
134
|
+
|
135
|
+
> Most payment gateways are written in php, you might compare ruby with its php counterpart by running code in the .php file.
|
136
|
+
|
137
|
+
## Handle missing info
|
138
|
+
|
139
|
+
> Some payment gateway require email for payment info. So we use enviroment variable "DEFAULT_EMAIL_FOR_PAYMENT" as default email when there is no email provided.
|
140
|
+
|
141
|
+
## Support Documents
|
142
|
+
|
143
|
+
- [Setup ACLEDA payment methods](docs/acleda.md)
|
144
|
+
|
145
|
+
## Contributing
|
146
|
+
|
147
|
+
If you'd like to contribute, please take a look at the
|
148
|
+
[instructions](CONTRIBUTING.md) for installing dependencies and crafting a good
|
149
|
+
pull request.
|
150
|
+
|
151
|
+
Copyright (c) 2021 [name of extension creator], released under the New BSD License
|
data/Rakefile
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'bundler'
|
2
|
+
Bundler::GemHelper.install_tasks
|
3
|
+
|
4
|
+
require 'rspec/core/rake_task'
|
5
|
+
require 'spree/testing_support/extension_rake'
|
6
|
+
|
7
|
+
RSpec::Core::RakeTask.new
|
8
|
+
|
9
|
+
task :default do
|
10
|
+
if Dir['spec/dummy'].empty?
|
11
|
+
Rake::Task[:test_app].invoke
|
12
|
+
Dir.chdir('../../')
|
13
|
+
end
|
14
|
+
Rake::Task[:spec].invoke
|
15
|
+
end
|
16
|
+
|
17
|
+
desc 'Generates a dummy app for testing'
|
18
|
+
task :test_app do
|
19
|
+
ENV['LIB_NAME'] = 'spree_vpago'
|
20
|
+
Rake::Task['extension:test_app'].invoke
|
21
|
+
end
|
data/app/.gitkeep
ADDED
File without changes
|
@@ -0,0 +1,3 @@
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-send" viewBox="0 0 16 16">
|
2
|
+
<path d="M15.854.146a.5.5 0 0 1 .11.54l-5.819 14.547a.75.75 0 0 1-1.329.124l-3.178-4.995L.643 7.184a.75.75 0 0 1 .124-1.33L15.314.037a.5.5 0 0 1 .54.11ZM6.636 10.07l2.761 4.338L14.13 2.576 6.636 10.07Zm6.787-8.201L1.591 6.602l4.339 2.76 7.494-7.493Z"/>
|
3
|
+
</svg>
|
Binary file
|
Binary file
|
@@ -0,0 +1,44 @@
|
|
1
|
+
async function requestProcessPayment({
|
2
|
+
params,
|
3
|
+
url,
|
4
|
+
maxRetries = 5,
|
5
|
+
retryDelayMs = 1000,
|
6
|
+
}) {
|
7
|
+
let attempt = 0;
|
8
|
+
const delay = () =>
|
9
|
+
new Promise((resolve) => setTimeout(resolve, retryDelayMs));
|
10
|
+
|
11
|
+
while (attempt < maxRetries) {
|
12
|
+
try {
|
13
|
+
const response = await fetch(url, {
|
14
|
+
method: "POST",
|
15
|
+
headers: {
|
16
|
+
"Content-Type": "application/json",
|
17
|
+
"X-CSRF-Token": document
|
18
|
+
.querySelector('meta[name="csrf-token"]')
|
19
|
+
.getAttribute("content"),
|
20
|
+
},
|
21
|
+
body: JSON.stringify(params),
|
22
|
+
});
|
23
|
+
|
24
|
+
if (!response.ok) {
|
25
|
+
throw new Error(`Request failed with status: ${response.status}`);
|
26
|
+
}
|
27
|
+
|
28
|
+
console.log("Request succeeded:", await response.json());
|
29
|
+
break;
|
30
|
+
} catch (error) {
|
31
|
+
attempt++;
|
32
|
+
console.error(`Attempt ${attempt} failed: ${error.message}`);
|
33
|
+
|
34
|
+
if (attempt === maxRetries) {
|
35
|
+
console.error("Max retries reached. Request failed.");
|
36
|
+
} else {
|
37
|
+
console.log("Retrying...");
|
38
|
+
await delay();
|
39
|
+
}
|
40
|
+
}
|
41
|
+
}
|
42
|
+
}
|
43
|
+
|
44
|
+
window.requestProcessPayment = requestProcessPayment;
|