Skip to content

Instantly share code, notes, and snippets.

$.getScript("https://js.squareup.com/v2/paymentform").done(function () {
paymentForm = new SqPaymentForm({
// Setup your SqPaymentForm object, see https://docs.connect.squareup.com/payments/sqpaymentform/sqpaymentform-setup
// for more details
});
// We're manually building the form here, since the page is already loaded and won't trigger the event SqPaymentForm
// is expecting
paymentForm.build();
});
Template.squarePaymentForm.onRendered(function () {
$(document).ready(function () {
createPaymentForm();
});
$("#submitCard").on("click", function () {
paymentForm.requestCardNonce();
});
});
AutoForm.addHooks("square-payment-form", {
onSubmit: function (doc) {
submitting = true;
const template = this.template;
hidePaymentAlert();
const form = {
cardNonce: doc.nonce // Here is where we're placing our nonce
};
Meteor.subscribe("Packages", Reaction.getShopId());
const packageData = Packages.findOne({
const fs = require('fs');
const Storage = require('@google-cloud/storage');
const BUCKET_NAME = ''; // This would actually have the name of our bucket
const storage = new Storage({
projectId: '', // This should be your Google Cloud Project ID where you're deploying your function & have your bucket
keyFilename: './keyfile.json'
});
exports.webhook = (request, response) => {
const data = JSON.stringify(request.body, null, 2);
@mootrichard
mootrichard / square_authorize.js
Last active March 11, 2018 23:32
Square Authorization Route
const CLIENT_ID = process.env.APPLICATION_ID;
const SECRET = process.env.SECRET;
function getState() {
return (crypto.randomBytes(32)).toString('base64');
}
router.get("/authorize", (req, res) => {
if(req.auth.isLoggedIn) {
res.redirect("/authorized");
@mootrichard
mootrichard / square_callback.js
Last active March 11, 2018 23:47
Callback for Square OAuth
router.get("/callback", (req, res) => {
const tokenURL = "https://connect.squareup.com/oauth2/token";
const redirectURI = "https://square-oauth-example.glitch.me/auth/callback";
if (req.query.state === req.auth.state) {
axios
.post(tokenURL, {
client_id: CLIENT_ID,
client_secret: SECRET,
code: req.query.code,
@mootrichard
mootrichard / product.html
Last active April 17, 2018 21:33
A product element in our Swag Shop
<!-- start product -->
<div class='product'>
<div class='imageContainer'>
<img class='productImage' src="/0.jpeg" />
<!-- insert product image url here -->
<div class='imageOverlay'>
<button>View Details</button>
</div>
</div>
<div class='modal clearfix'>
@mootrichard
mootrichard / index.html
Last active April 17, 2018 22:52
Our Index Page for the Swag Shop
<!DOCTYPE html>
<html>
<head>
<title>Square Swag Shop</title>
<meta name="description" content="A Simple eCommerce Store">
<link id="favicon" rel="icon" href="/favicon.ico" type="image/x-icon">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name='viewport' content='width=device-width, initial-scale=1'>
@mootrichard
mootrichard / handler.js
Created April 13, 2018 00:01
Our Initial Version of the Serverless function
'use strict';
const SquareConnect = require('square-connect');
module.exports.checkout = (event, context, callback) => {
let response = "Success! Our function is running!";
callback(null, response);
};
@mootrichard
mootrichard / serverless.yml
Created April 13, 2018 00:03
Our Serverless YML
service: serverless-checkout # NOTE: update this with your service name
provider:
name: aws
runtime: nodejs8.10
stage: prod
memorySize: 256
package:
include: