-
Notifications
You must be signed in to change notification settings - Fork 14
/
shopify_hacks.js
94 lines (86 loc) · 2.84 KB
/
shopify_hacks.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
/* FORM FIELDS ON SHOPIFY CHECKOUT PAGE:
order[email]
billing_address[first_name]
billing_address[last_name]
billing_address[company]
billing_address[address1]
billing_address[address2]
billing_address[city]
billing_address[zip]
billing_address[country] United States
billing_address[province]
billing_address[phone]
billing_is_shipping on
shipping_address[first_name]
shipping_address[last_name]
shipping_address[company]
shipping_address[address1]
shipping_address[address2]
shipping_address[city]
shipping_address[zip]
shipping_address[country] United States
shipping_address[province]
shipping_address[phone]
*/
// Get the Shopify checkout URL
function getShopifyCheckoutUrl(shop_id) {
var cart_token = readCookie("cart");
//checkout URL has "create_order" appended to it to allow pre-filling forms
var checkout_url = "https://checkout.shopify.com/carts/" + shop_id + "/" + cart_token + "/create_order";
return checkout_url;
}
// Create query string parameters for the checkout page to pre-fill the checkout form.
// Model names are "order", "billing_address", and "shipping_address".
// Example "models" argument:
// models = {
// order: {
// email: "[email protected]"
// },
// billing_address: {
// first_name: "Joel",
// last_name: "Van Horn"
//
// // additional attributes: company, address1, address2, city, zip, country, province, phone
//
// },
// shipping_address: {
// first_name: "Joel",
// last_name: "Van Horn"
//
// // additional attributes: company, address1, address2, city, zip, country, province, phone
//
// }
// }
function getShopifyCheckoutPrefillQueryString(models) {
var query = [];
//create query string that pre-populates the checkout form
if (models) {
//loop through each model
for (name in models) {
//loop through each attribute
for (attribute in models[name]) {
var param = encodeURIComponent(name) + "[" + encodeURIComponent(attribute) + "]",
value = encodeURIComponent(models[name][attribute]);
//add query string name/value pair
query.push( param + "=" + value);
}
}
}
return query.join("&");
}
// Get the Shopify checkout URL with query string parameters to pre-fill the checkout form
function getShopifyCheckoutUrlWithPrefillQueryString(shop_id, params) {
var checkout_url = getShopifyCheckoutUrl(shop_id);
var query = getShopifyCheckoutPrefillQueryString(params);
return checkout_url + "?" + query;
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}