Order from Amazon Business via your terminal

2 min read Original article ↗

1RYE_API_KEY='Basic UllZlWVjYTlhZnU0NjIOYrQwNZgiMWk1Og=='

2RYE_SHOPPER_IP='184.13.22.47'

3RYE_CARD_TOKENIZATION_SECRET='Basic 5CVTNWcDB2M0dXYWFBaDNxdjJXaDF3dTU0eXE1Y2OOd21xzUU0bBFIeEpGNllUWXE='

5CREATE_CART_RESPONSE=<span style="color: #9cdcfe">$(curl</span> -s 'https://graphql.api.rye.com/v1/query' \

6 -H 'Content-Type: application/json' \

7 -H "Authorization: <span style="color: #9cdcfe">$RYE_API_KEY"</span> \

8 -H "Rye-Shopper-IP: <span style="color: #9cdcfe">$RYE_SHOPPER_IP"</span> \

10 "query": "mutation (<span style="color: #9cdcfe">$input:</span> CartCreateInput!) { createCart(input: <span style="color: #9cdcfe">$input)</span> { cart { id } errors { code message } } }",

14 "amazonCartItemsInput": [{

16 "productId": "B004WVZ3"

22 "email": "dev@rye.com",

23 "phone": "+15555555555",

24 "address1": "123 Main St",

36CART_ID=<span style="color: #9cdcfe">$(<span style="color: #569cd6">echo</span></span> "<span style="color: #9cdcfe">$CREATE_CART_RESPONSE"</span> | sed -n 's/.*"id":"\([^"]*\)".*/\1/p')

37ERRORS=<span style="color: #9cdcfe">$(<span style="color: #569cd6">echo</span></span> "<span style="color: #9cdcfe">$CREATE_CART_RESPONSE"</span> | sed -n 's/.*"errors":\(\[[^]]*]\).*/\1/p')

39<span style="color: #569cd6">if</span> [ -n "<span style="color: #9cdcfe">$CART_ID"</span> ] && [ "<span style="color: #9cdcfe">$ERRORS"</span> = "[]" ]; <span style="color: #569cd6">then</span>

40 <span style="color: #569cd6">echo</span> '✅ Cart successfully created!'

41<span style="color: #569cd6">else</span>

42 <span style="color: #569cd6">echo</span> '❌ Error: Unable to fetch CART_ID.'

43 <span style="color: #569cd6">echo</span> 'Response from server:'

44 <span style="color: #569cd6">echo</span> "<span style="color: #9cdcfe">$CREATE_CART_RESPONSE"</span>

45<span style="color: #569cd6">fi</span>

47CARD_TOKENIZATION_RESPONSE=<span style="color: #9cdcfe">$(curl</span> -s 'https://core.spreedly.com/v1/payment_methods.json' \

48 -H "Authorization: <span style="color: #9cdcfe">$RYE_CARD_TOKENIZATION_SECRET"</span> \

49 -H 'Content-Type: application/json' \

55 "number": "4111111111111111",

56 "verification_value": "123",

65PAYMENT_METHOD_TOKEN=<span style="color: #9cdcfe">$(<span style="color: #569cd6">echo</span></span> "<span style="color: #9cdcfe">$CARD_TOKENIZATION_RESPONSE"</span> | sed -n 's/.*"payment_method":{"token":"\([^"]*\)".*/\1/p')

67<span style="color: #569cd6">if</span> [ -n "<span style="color: #9cdcfe">$PAYMENT_METHOD_TOKEN"</span> ]; <span style="color: #569cd6">then</span>

68 <span style="color: #569cd6">echo</span> '✅ Card successfully tokenized!'

69<span style="color: #569cd6">else</span>

70 <span style="color: #569cd6">echo</span> "❌ Error: Unable to fetch PAYMENT_METHOD_TOKEN."

71 <span style="color: #569cd6">echo</span> 'Response from server:'

72 <span style="color: #569cd6">echo</span> "<span style="color: #9cdcfe">$CARD_TOKENIZATION_RESPONSE"</span>

73<span style="color: #569cd6">fi</span>

75SUBMIT_CART_RESPONSE=<span style="color: #9cdcfe">$(curl</span> -s 'https://graphql.api.rye.com/v1/query' \

76-H 'Content-Type: application/json' \

77-H "Authorization: <span style="color: #9cdcfe">$RYE_API_KEY"</span> \

78-H "Rye-Shopper-IP: <span style="color: #9cdcfe">$RYE_SHOPPER_IP"</span> \

79-d "<span style="color: #9cdcfe">$(cat</span> <<EOF

81 "query": "mutation (\<span style="color: #9cdcfe">$input:</span> CartSubmitInput!) { submitCart(input: \<span style="color: #9cdcfe">$input)</span> { cart { id stores { isSubmitted errors { code message } } } errors { code message } } }",

84 "id": "<span style="color: #9cdcfe">$CART_ID",</span>

85 "token": "<span style="color: #9cdcfe">$PAYMENT_METHOD_TOKEN"</span>

92IS_SUBMITTED=<span style="color: #9cdcfe">$(<span style="color: #569cd6">echo</span></span> "<span style="color: #9cdcfe">$SUBMIT_CART_RESPONSE"</span> | sed -n 's/.*"isSubmitted":\([^,]*\).*/\1/p')

93ERRORS=<span style="color: #9cdcfe">$(<span style="color: #569cd6">echo</span></span> "<span style="color: #9cdcfe">$SUBMIT_CART_RESPONSE"</span> | sed -n 's/.*"errors":\(\[[^]]*]\).*/\1/p')

95<span style="color: #569cd6">if</span> [ "<span style="color: #9cdcfe">$IS_SUBMITTED"</span> = "true" ] && [ "<span style="color: #9cdcfe">$ERRORS"</span> = "[]" ]; <span style="color: #569cd6">then</span>

96 <span style="color: #569cd6">echo</span> '🎉 Hooray! You ordered an Amazon product from your terminal!'

97 <span style="color: #569cd6">echo</span> 'You can view your order on https://console.rye.com/orders'

98<span style="color: #569cd6">else</span>

99 <span style="color: #569cd6">echo</span> '❌ Error! Unable to submit cart.'

100 <span style="color: #569cd6">echo</span> 'Response from server:'

101 <span style="color: #569cd6">echo</span> "<span style="color: #9cdcfe">$SUBMIT_CART_RESPONSE"</span>

102<span style="color: #569cd6">fi</span>