← back to Shopify Sample Shipping

full-order.mjs

31 lines

import {query} from './query.mjs';
import fs from 'node:fs';
const S=['gid://shopify/ProductVariant/44090076954675','gid://shopify/ProductVariant/44086096756787','gid://shopify/ProductVariant/44044973408307'];
const lineItems=S.map(v=>({variantId:v,quantity:2})); // 6 samples = $25.50 (free band)
const input={
  email:'steve@designerwallcoverings.com',
  tags:['TK-11333-TEST'],
  note:'TK-11333 free-shipping end-to-end proof (test order, safe to cancel/delete)',
  shippingAddress:{address1:'15442 Ventura Blvd',city:'Sherman Oaks',provinceCode:'CA',countryCode:'US',zip:'91403',firstName:'TK11333',lastName:'Test'},
  lineItems,
  shippingLine:{title:'Free Shipping (No Tracking)',price:'0.00'}
};
// 1) CREATE DRAFT
const c=`mutation($input:DraftOrderInput!){draftOrderCreate(input:$input){draftOrder{id name subtotalPrice totalShippingPrice totalPrice shippingLine{title price} lineItems(first:10){nodes{title quantity}}} userErrors{field message}}}`;
const cr=await query(c,{input});
if(cr.draftOrderCreate.userErrors.length){console.log('CREATE ERR:',JSON.stringify(cr.draftOrderCreate.userErrors));process.exit(1);}
const d=cr.draftOrderCreate.draftOrder;
console.log('=== DRAFT CREATED ===');
console.log('draft:',d.name,'| subtotal $'+d.subtotalPrice,'| shipping $'+d.totalShippingPrice,'| total $'+d.totalPrice,'| shippingLine:',d.shippingLine?.title,'$'+d.shippingLine?.price);
console.log('items:',d.lineItems.nodes.map(x=>`${x.quantity}x ${x.title}`).join(', '));
// 2) COMPLETE (unpaid)
const cm=`mutation($id:ID!){draftOrderComplete(id:$id,paymentPending:true){draftOrder{id order{id name displayFinancialStatus displayFulfillmentStatus totalPriceSet{shopMoney{amount currencyCode}} totalShippingPriceSet{shopMoney{amount}} shippingLine{title price}}} userErrors{field message}}}`;
const cmr=await query(cm,{id:d.id});
if(cmr.draftOrderComplete.userErrors.length){console.log('COMPLETE ERR:',JSON.stringify(cmr.draftOrderComplete.userErrors));process.exit(1);}
const o=cmr.draftOrderComplete.draftOrder.order;
console.log('\n=== ORDER CREATED (unpaid) ===');
console.log('order:',o.name,'| financial:',o.displayFinancialStatus,'| fulfillment:',o.displayFulfillmentStatus);
console.log('total $'+o.totalPriceSet.shopMoney.amount,'| shipping $'+o.totalShippingPriceSet.shopMoney.amount,'| shippingLine:',o.shippingLine?.title,'$'+o.shippingLine?.price);
console.log('order id:',o.id);
fs.writeFileSync(new URL('./verification/full-order-result.json',import.meta.url),JSON.stringify({draft:d,order:o,createdAt:new Date().toISOString()},null,2)+'\n');