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>