3.1.2 • Published 5 months ago

@unchainedshop/ticketing v3.1.2

Weekly downloads
-
License
EUPL-1.2
Repository
github
Last release
5 months ago

Unchained Ticketing Extension

Prepare Apple Certificate

  1. Add a new Pass Type ID on developer.apple.com, then gernerate fresh production certificate. Download the Certificate and import it into your Keychain.

  2. Export with Keychain: Select the "Certificates" Tab, then the Pass Type ID, then select both the ID and the key, export in p12 format.

  3. Convert to PEM It's important you set a PEM passphrase as it is required for Unchained Ticketing

openssl pkcs12 -in Zertifikate.p12 -legacy -clcerts -out cert_and_key.pem
  1. Configure the path and your Team ID by Env:
PASS_CERTIFICATE_PATH=./cert_and_key.pem
PASS_CERTIFICATE_SECRET=YOUR_PEM_PASSPHRASE
PASS_TEAM_ID=SSCB95CV6U

Setup Example

boot.js:

import { modules, setupTicketing } from "@unchainedshop/ticketing";
import { connect } from '@unchainedshop/api/express/index.js';

...
  const app = express();

  const httpServer = http.createServer(app);

  const engine = await startPlatform({
    modules,
    options: {},
  });

  connect(app, engine, { corsOrigins: [] });

  // Unchained Ticketing Extension
  setupTicketing(app, engine.unchainedAPI as TicketingAPI, {
    renderOrderPDF,
    createAppleWalletPass,
    createGoogleWalletPass,
  });
...

renderOrderPDF.ts:

import React from "react";
import ReactPDF, { Document } from "@react-pdf/renderer";

const TicketTemplate = ({ tickets }: { tickets: Array<any> }) => {
  return (
    <Document>
      Hello World
    </Document>
  );
};

export default async (
  { orderId, variant }: { orderId: string },
  { modules },
) => {
  const order = await modules.orders.findOrder({ orderId });
  ...
  const pdfStream = await ReactPDF.renderToStream(
    <TicketTemplate tickets={tickets} />,
  );
  return pdfStream;
};

createAppleWalletPass.ts:

import { UnchainedCore } from "@unchainedshop/core";
import { Template, constants } from "@walletpass/pass-js";

export default async (token, unchainedAPI: UnchainedCore) => {
  const template = new Template(
    "eventTicket",
    ...
  );
  const pass = await template.createPass(...);
  return pass;
};

createGoogleWalletPass.ts:

import { UnchainedCore } from "@unchainedshop/core";
import { google } from "googleapis";
import jwt from "jsonwebtoken";

export default async (token, unchainedAPI: UnchainedCore) => {
  
  const product = ...;

  // upsert class

  // upsert object

  const asURL = async () =>
    createJwtNewObjects(issuerId, product._id, token.chainTokenId);

  return { asURL };
};

Magic Key Order Access

Sometimes it's handy for users to allow them to access their orders and their tickets without actually logging in. For this you can generate a "magic key" that allows access to a single order and it's tickets via a request http header called x-magic-key.

For example: To retrieve the magic-key when sending an order-confirmation e-mail, just call await modules.passes.buildMagicKey(orderId); and append it to an URL like https://my-shop/:orderId?otp=:magicKey and then in the storefront, use the magic key and send it along via x-magic-key http header when using queries that are guarded by the actions viewOrder, updateToken and viewToken

3.1.2

5 months ago

3.1.1

5 months ago

3.1.0

5 months ago

2.18.1

6 months ago

3.0.0

6 months ago

3.0.0-rc.13

7 months ago

3.0.0-rc.15

6 months ago

3.0.0-rc.14

7 months ago

3.0.0-rc11

7 months ago

3.0.0-rc10

7 months ago

3.0.0-rc2

7 months ago

3.0.0-rc1

7 months ago

3.0.0-rc6

7 months ago

3.0.0-rc5

7 months ago

3.0.0-rc4

7 months ago

3.0.0-rc3

7 months ago

3.0.0-rc9

7 months ago

3.0.0-rc8

7 months ago

3.0.0-rc7

7 months ago

3.0.0-rc.12

7 months ago

2.18.0

7 months ago

3.0.0-rc.11

7 months ago

2.17.0

8 months ago

2.16.1

8 months ago

2.16.2

8 months ago

2.15.2

9 months ago

2.16.0

9 months ago

3.0.0-alpha5

9 months ago

3.0.0-alpha7

9 months ago

3.0.0-alpha6

9 months ago

3.0.0-alpha4

9 months ago

2.15.0

10 months ago

2.15.1

9 months ago

2.14.1

11 months ago

2.14.2

10 months ago

2.14.0

11 months ago

3.0.0-alpha3

10 months ago

2.13.2

11 months ago

2.13.1

12 months ago

2.13.0

12 months ago

3.0.0-alpha2

12 months ago

2.11.6

1 year ago

2.10.7

1 year ago

2.11.7

1 year ago

2.11.4

1 year ago

2.11.5

1 year ago

2.10.6

1 year ago

2.12.1

1 year ago

2.11.2

1 year ago

2.12.2

1 year ago

2.11.3

1 year ago

2.11.0

1 year ago

2.12.0

1 year ago

2.10.5

1 year ago

2.10.4

1 year ago

2.10.3

1 year ago

2.10.2

1 year ago

2.10.1

1 year ago

2.10.0

1 year ago