Skip to content

Instantly share code, notes, and snippets.

@mrhitman
Created July 28, 2020 12:58
Show Gist options
  • Save mrhitman/de4a9c2aff636d9e48df2ecb5e673cb2 to your computer and use it in GitHub Desktop.
Save mrhitman/de4a9c2aff636d9e48df2ecb5e673cb2 to your computer and use it in GitHub Desktop.
const crypto = require('crypto')
const SECRET = '1d5131dc63a6ceeea91ccf62eef2e74a8d618205aae030b1326bf4c9d0589a68'
const verifyHmac = (body, hmac) => {
const hash = crypto
.createHmac("sha256", SECRET)
.update(Buffer.from(body))
.digest("base64");
console.log({ hash, hmac, SECRET })
return hash === hmac
}
const data = `{"id":820982911946154508,"email":"[email protected]","closed_at":null,"created_at":"2020-07-28T06:50:28-04:00","updated_at":"2020-07-28T06:50:28-04:00","number":234,"note":null,"token":"123456abcd","gateway":null,"test":true,"total_price":"254.98","subtotal_price":"244.98","total_weight":0,"total_tax":"0.00","taxes_included":false,"currency":"EUR","financial_status":"voided","confirmed":false,"total_discounts":"5.00","total_line_items_price":"249.98","cart_token":null,"buyer_accepts_marketing":true,"name":"#9999","referring_site":null,"landing_site":null,"cancelled_at":"2020-07-28T06:50:28-04:00","cancel_reason":"customer","total_price_usd":null,"checkout_token":null,"reference":null,"user_id":null,"location_id":null,"source_identifier":null,"source_url":null,"processed_at":null,"device_id":null,"phone":null,"customer_locale":"en","app_id":null,"browser_ip":null,"landing_site_ref":null,"order_number":1234,"discount_applications":[{"type":"manual","value":"5.0","value_type":"fixed_amount","allocation_method":"across","target_selection":"explicit","target_type":"line_item","description":"Discount","title":"Discount"}],"discount_codes":[],"note_attributes":[],"payment_gateway_names":["visa","bogus"],"processing_method":"","checkout_id":null,"source_name":"web","fulfillment_status":"pending","tax_lines":[],"tags":"","contact_email":"[email protected]","order_status_url":"https:\/\/cg-dev-test-2.myshopify.com\/25858965562\/orders\/123456abcd\/authenticate?key=abcdefg","presentment_currency":"EUR","total_line_items_price_set":{"shop_money":{"amount":"249.98","currency_code":"EUR"},"presentment_money":{"amount":"249.98","currency_code":"EUR"}},"total_discounts_set":{"shop_money":{"amount":"5.00","currency_code":"EUR"},"presentment_money":{"amount":"5.00","currency_code":"EUR"}},"total_shipping_price_set":{"shop_money":{"amount":"10.00","currency_code":"EUR"},"presentment_money":{"amount":"10.00","currency_code":"EUR"}},"subtotal_price_set":{"shop_money":{"amount":"244.98","currency_code":"EUR"},"presentment_money":{"amount":"244.98","currency_code":"EUR"}},"total_price_set":{"shop_money":{"amount":"254.98","currency_code":"EUR"},"presentment_money":{"amount":"254.98","currency_code":"EUR"}},"total_tax_set":{"shop_money":{"amount":"0.00","currency_code":"EUR"},"presentment_money":{"amount":"0.00","currency_code":"EUR"}},"line_items":[{"id":487817672276298554,"variant_id":null,"title":"Aviator sunglasses","quantity":1,"sku":"SKU2006-001","variant_title":null,"vendor":null,"fulfillment_service":"manual","product_id":788032119674292922,"requires_shipping":true,"taxable":true,"gift_card":false,"name":"Aviator sunglasses","variant_inventory_management":null,"properties":[],"product_exists":true,"fulfillable_quantity":1,"grams":100,"price":"89.99","total_discount":"0.00","fulfillment_status":null,"price_set":{"shop_money":{"amount":"89.99","currency_code":"EUR"},"presentment_money":{"amount":"89.99","currency_code":"EUR"}},"total_discount_set":{"shop_money":{"amount":"0.00","currency_code":"EUR"},"presentment_money":{"amount":"0.00","currency_code":"EUR"}},"discount_allocations":[],"duties":[],"admin_graphql_api_id":"gid:\/\/shopify\/LineItem\/487817672276298554","tax_lines":[]},{"id":976318377106520349,"variant_id":null,"title":"Mid-century lounger","quantity":1,"sku":"SKU2006-020","variant_title":null,"vendor":null,"fulfillment_service":"manual","product_id":788032119674292922,"requires_shipping":true,"taxable":true,"gift_card":false,"name":"Mid-century lounger","variant_inventory_management":null,"properties":[],"product_exists":true,"fulfillable_quantity":1,"grams":1000,"price":"159.99","total_discount":"5.00","fulfillment_status":null,"price_set":{"shop_money":{"amount":"159.99","currency_code":"EUR"},"presentment_money":{"amount":"159.99","currency_code":"EUR"}},"total_discount_set":{"shop_money":{"amount":"5.00","currency_code":"EUR"},"presentment_money":{"amount":"5.00","currency_code":"EUR"}},"discount_allocations":[{"amount":"5.00","discount_application_index":0,"amount_set":{"shop_money":{"amount":"5.00","currency_code":"EUR"},"presentment_money":{"amount":"5.00","currency_code":"EUR"}}}],"duties":[],"admin_graphql_api_id":"gid:\/\/shopify\/LineItem\/976318377106520349","tax_lines":[]}],"fulfillments":[],"refunds":[],"total_tip_received":"0.0","original_total_duties_set":null,"current_total_duties_set":null,"admin_graphql_api_id":"gid:\/\/shopify\/Order\/820982911946154508","shipping_lines":[{"id":271878346596884015,"title":"Generic Shipping","price":"10.00","code":null,"source":"shopify","phone":null,"requested_fulfillment_service_id":null,"delivery_category":null,"carrier_identifier":null,"discounted_price":"10.00","price_set":{"shop_money":{"amount":"10.00","currency_code":"EUR"},"presentment_money":{"amount":"10.00","currency_code":"EUR"}},"discounted_price_set":{"shop_money":{"amount":"10.00","currency_code":"EUR"},"presentment_money":{"amount":"10.00","currency_code":"EUR"}},"discount_allocations":[],"tax_lines":[]}],"billing_address":{"first_name":"Bob","address1":"123 Billing Street","phone":"555-555-BILL","city":"Billtown","zip":"K2P0B0","province":"Kentucky","country":"United States","last_name":"Biller","address2":null,"company":"My Company","latitude":null,"longitude":null,"name":"Bob Biller","country_code":"US","province_code":"KY"},"shipping_address":{"first_name":"Steve","address1":"123 Shipping Street","phone":"555-555-SHIP","city":"Shippington","zip":"40003","province":"Kentucky","country":"United States","last_name":"Shipper","address2":null,"company":"Shipping Company","latitude":null,"longitude":null,"name":"Steve Shipper","country_code":"US","province_code":"KY"},"customer":{"id":115310627314723954,"email":"[email protected]","accepts_marketing":false,"created_at":null,"updated_at":null,"first_name":"John","last_name":"Smith","orders_count":0,"state":"disabled","total_spent":"0.00","last_order_id":null,"note":null,"verified_email":true,"multipass_identifier":null,"tax_exempt":false,"phone":null,"tags":"","last_order_name":null,"currency":"EUR","accepts_marketing_updated_at":null,"marketing_opt_in_level":null,"admin_graphql_api_id":"gid:\/\/shopify\/Customer\/115310627314723954","default_address":{"id":715243470612851245,"customer_id":115310627314723954,"first_name":null,"last_name":null,"company":null,"address1":"123 Elm St.","address2":null,"city":"Ottawa","province":"Ontario","country":"Canada","zip":"K2H7A8","phone":"123-123-1234","name":"","province_code":"ON","country_code":"CA","country_name":"Canada","default":true}}}`
const hmac = 'lU7iea/l0mgA0gsnbjknSxtlL28XDDKCerUL+Y09Hlk='
console.log(verifyHmac(data, hmac))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment