This addon provides an adapter to use with the Goods platform (https://www.goods.co.uk).
- Ember.js v3.20 or above
- Ember CLI v3.20 or above
- Node.js v12 or above
ember install ember-goods
// environment.js
ENV.APP.goods = {
accessToken: "xxxxxx",
};
accessToken
: Generate this access token in your Goods account and add it here. Create a shop, then go to Settings > Access tokens. Yourcontent group
name in Goods must match the Ember model name. Thecontent entry
field reference is the dasherized name of the Ember model field.
All models that use a Goods content entry should inherit the content-entry
model. This contains default fields such as:
name: DS.attr(),
slug: DS.attr(),
insertedAt : DS.attr('date'),
createdAt : DS.attr('date'),
isArchived: DS.attr('boolean'),
isDeleted: DS.belongsTo('boolean'),
isPublished: DS.belongsTo('boolean'),
isHidden: DS.belongsTo('boolean')
npm run lint:hbs
npm run lint:js
npm run lint:js -- --fix
ember test
– Runs the test suite on the current Ember versionember test --server
– Runs the test suite in "watch mode"ember try:each
– Runs the test suite against multiple Ember versions
// models/spaceship.js
import DS from "ember-data";
import ContentEntry from "ember-goods/models/content-entry";
export default ContentEntry.extend({
colour: DS.attr(),
block: DS.attr(),
massToLowEarthOrbit: DS.attr(),
});
Example Goods content group:
Content group name: Spaceship
Content fields:
name: colour
reference: colour
type: Short text
name: block
reference: block
type: Options dropdown
name:Mass to LEO (Low Earth Orbit)
reference:mass-to-low-earth-orbit
type: Number
There is a PaymentChallenge component available which handles rendering the payment challenge in an iframe.
You will most likely want to render this component from within a modal. Simply pass it the payment record and it will handle the 3D secure iframe.
To handle completion of the 3D secure payment, you will need to set payment.challengeSuccessUrl
and payment.challengeFailedUrl
to URLs that will forward the user onto the completion page or show the error, and also allow you to breakout of the iframe.
To breakout of the iframe, something like this in your route:
import Route from "@ember/routing/route";
export default class Payment extends Route {
beforeModel() {
if (window.location !== window.top.location) {
parent.location.reload();
}
}
}
npm test
(Runsember try:each
to test your addon against multiple Ember versions)ember test
ember test --server
ember build
See the Contributing guide for details.
For more information on using ember-cli, visit https://ember-cli.com/.