Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/workarea-commerce/workarea-gift-cards
https://github.com/workarea-commerce/workarea-gift-cards
Last synced: about 1 month ago
JSON representation
- Host: GitHub
- URL: https://github.com/workarea-commerce/workarea-gift-cards
- Owner: workarea-commerce
- License: other
- Created: 2019-08-21T19:24:33.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2020-12-02T13:25:47.000Z (about 4 years ago)
- Last Synced: 2024-10-19T16:48:03.433Z (2 months ago)
- Language: Ruby
- Size: 181 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
Workarea Gift Cards
================================================================================A Workarea Commerce plugin that enables customers to purchase physical and digital gift cards and redeem them for other merchandise within the catalog.
Overview
--------------------------------------------------------------------------------* Create gift card products, both digital and physical
* Allow gift card customization with recipient name, email, and personal message
* Automatically deliver digital gift card information to recipient upon purchase
* Use any number of gift cards as payment in checkout (with configurable limit)
* Check the balance of a digital gift card
* Manage digital gift cards from the admin
* View gift card redemptions from the admin
* Admin API management of gift cards
* Storefront API support for using gift cards in checkout
* Gateway support for easily using a third-party gift card service (see below)Getting Started
--------------------------------------------------------------------------------Add the gem to your application's Gemfile:
```ruby
# ...
gem 'workarea-gift_cards'
# ...
```Update your application's bundle.
```bash
cd path/to/application
bundle
```Using a custom gift card gateway
--------------------------------------------------------------------------------The `workarea-gift_cards` plugin comes fully functional with management of gift cards, tracking of redemptions and balances within the Workarea admin. However, using a third-party gift card service is not uncommon. Taking that into consideration, the plugin allows for the use of a custom gateway for looking up
balances, validating gift card info, and processing gift card payments. This allows a retailer to utilize the plugin for the gift card product behaviors, but continue using a third-party service for generating gift card codes and tracking the use of purchased gift cards.## Setup a custom gateway
The plugin adds a configuration value of `Workarea.config.gateways.gift_card`. By default, this is set to `Workarea::GiftCards::Gateway`, which utilizes the existing `Workarea::Payment::GiftCard` collection. This configuration value can be changed to a custom class of your choice that responds to the same methods.
```ruby
class ThirdPartyGiftCardGateway
# setup any relevant configuration required for connecting to a
# third-party service
#
def initialize; end# Optional. Define this method to tell the system you are using the
# Workarea::Payment::GiftCard collection. This will turn on a number of
# behaviors only relevant when using the collection. If the gateway does not
# respond to this method, it will assume false.
#
def uses_system_cards?
true
end# These are the transactional methods expected from the gateway. They each
# take two arguments:
# amount - is the value (in cents) that transaction is looking to apply.
# tender - will be a Workarea::Payment::Tender::GiftCard which you can use
# to find the relevant card number or other info stored on the
# tender associated to this transaction.
#
# The system expects these method to return an object that responds to
# two methods:
# success? - a boolean that determines if the transaction was successful
# message - information around the transaction result
#
def authorize(amount, tender); end
def cancel(amount, tender); end
def capture(amount, tender); end
def purchase(amount, tender); end
def refund(amount, tender); end# This passes in one or more tokens/numbers as strings and returns a Money
# object that represents the total balance of all valid card numbers.
#
def balance(token); end# This method is used when a customer looks up their balance from the
# storefront. This will often require them to provide some unique info
# to protect against malicious attempts at discovering gift card numbers.
# The request parameters are passed directly into the method to allow
# flexibility in the information you request from the user to show them
# the balance. By default, the system expects this method to return an
# object that responds to #balance, #token, and #to. This is entirely
# dependent on the resulting view rendered, which can be customized.
#
def lookup(params); end
end
```After building a custom class, set the config value to the custom class.
```ruby
Workarea.configure do |config|
config.gateways.gift_card = 'ThirdPartyGiftCardGateway'
end
```Note that it is set to a string of the class constant, and not an instance of the class. The system constantizes and initializes a new instance whenever it uses the gateway to ensure autoloading works correctly and so a gateway that cares about the current state of the application is applied correctly. This is most relevant in multi-site environments where each site might want to use their own gift card gateway.
### Testing Your Custom Gateway
Workarea comes with unit tests for the main Gateway class, and you can
decorate this test to provide your own setup code. A minimal
implementation would look as follows:```ruby
module Workarea
module GiftCards
decorate GatewayTest do
# Provide your own Gateway instance here to use it in each test.
def gateway
CustomGiftCardGateway.new
end# Provide a custom object representing a Gift Card on your
# 3rd-party service.
def gift_card
CustomGiftCard.new(balance: 10.to_m)
end
end
end
end
```Workarea Commerce Documentation
--------------------------------------------------------------------------------See [https://developer.workarea.com](https://developer.workarea.com) for Workarea Commerce documentation
License
--------------------------------------------------------------------------------Workarea Gift Cards is released under the [Business Software License](LICENSE)