Создание заказа Shopify через почтальона / Shopify API

Я столкнулся с этот учебник, используя все технологии в мире, которые должны показать, как создать реагирующее приложение с нуля, чтобы использовать Shopify API. Однако есть также эта страница, описывающий простой вызов API, чтобы сделать более или менее то, что мне нужно.

Цель состоит в том, чтобы иметь полностью настраиваемый (чрезвычайно простой) процесс оформления заказа, который заканчивается в системе shopify. Это будет выглядеть примерно так:

Покупка с полосой в порядке -> заказ в магазине сохранен -> перенаправление на страницу благодарности.

EDIT: похоже, что формат https://api_key:[email protected]/admin/api/2019-07/orders.json решает проблему аутентификации. Звонок:

GET https://key:[email protected]/admin/api/2019-07/orders.json возвращает приятный { "orders": [] } так что аутентификация в порядке.

Тем не менее, делая POST https://key:[email protected]/admin/api/2019-07/orders.json

Кажется, вместо такой ошибки возвращается загадочная страница (которая просто ведет к вашему демонстрационному магазину/приложению):

Создание заказа Shopify через почтальона / Shopify API

Итак, в итоге у меня есть магазин, авторизованное приложение (которое успешно проходит аутентификацию), так как же программно добавить заказ на существующий SKU?

Вышеупомянутая ошибка, скорее всего, связана с файлами cookie. Не отправляйте файлы cookie через Postman в Shopify.

Bilal Akbar 15.07.2019 10:36

@BilalAkbar Я пробовал без файлов cookie с тем же результатом (кроме типа контента)

dsp_099 15.07.2019 12:10

Вы можете проверить свой заголовок? Похоже, у вас есть некоторые заголовки в запросе POST, которые могут быть причиной этого.

patilnitin 15.07.2019 20:07

Если вы ищете новейшее решение косвенной интеграции Stripe для Shopify, посмотрите эту демонстрацию: shopifystripe.techtolia.com — получайте оплату за свои заказы Shopify через Stripe с Alipay, Bancontact, EPS, giropay, iDEAL, Przelewy24, Sofort, WeChat Pay.

Leo 21.11.2021 15:46
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
4
3 019
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы уверены, что в запросе нет файлов cookie? Потому что я могу точно воспроизвести вашу проблему, если добавлю файлы cookie.

Возможно, будет проще использовать curl, чтобы иметь абсолютную ясность в том, что публикуется. Например:

# Edit to change app hostname, key/secret, and product/variant/customer ids 

curl -X POST 'https://key:[email protected]/admin/api/2019-07/orders.json' \
-H 'Content-Type: application/json' \
-d '{
  "order": {
    "line_items": [
      {
        "product_id": 2017449607219,
        "variant_id": 17985741619251,
        "quantity": 1
      }
    ],
    "customer": {
      "id": 1257159000115
    },
    "financial_status": "pending"
  }
}
'

Ответ:

{
  "order": {
    "id":952834392115,
    "email":"",
    "closed_at":null,
    "created_at":"2019-07-15T14:38:18-04:00",
...

Но если вы хотите придерживаться Postman, вот вспомогательные скриншоты, показывающие успех без файлов cookie и неудачу с:

Подтверждение того, что файлы cookie не установлены:

Успешная публикация в конечной точке orders.json:

Теперь добавьте файл cookie:

И я получаю ответ, показанный в вашем вопросе:

Коди, спасибо за ответ. Думаю, мы почти у цели. Однако я не могу воспроизвести ваш успешный вызов с помощью следующего завитка: curl -X POST 'https://key:[email protected]/admin/api/2‌​019-07/products.json‌​' \ -H 'Content-Type: application/json' \ -d '{ "order": { "line_items": [ { "product_id": 1884330262574, "variant_id": 16960861732910, "quantity": 1 } ], "financial_status": "pending" } } '

dsp_099 17.07.2019 12:52

Для справки, речь идет о продукте - exe-test-store.myshopify.com/admin/products/1884330262574.xm‌​l Я путаю идентификаторы или что-то в этом роде? Ошибка, которую я вижу сейчас, это {"errors":{"product":"Required parameter missing or invalid"}}. Я понимаю, что это немного другой вопрос, но, вероятно, это что-то очень простое, чего мне не хватает.

dsp_099 17.07.2019 12:53

Самое странное, что мне удалось заставить его работать ОДИН РАЗ, но не с тех пор.

dsp_099 17.07.2019 13:03

@dsp_099 dsp_099 Я думаю, проблема просто в том, что вы по ошибке отправляете сообщения в конечную точку products.json вместо orders.json.

cody 17.07.2019 15:10

Если вы читаете документацию по частным приложениям

Shopify doesn't support cookies in POST requests that use basic HTTP authentication. Any POST requests that use basic authentication and include cookies will fail with a 200 error code. Using cookies with basic authentication can expose your app to CSRF attacks, such as session hijacking.

https://help.shopify.com/en/api/getting-started/authentication/private-authentication

Это делается специально, делать это на стороне клиента — преступление. Если вы делаете что-то на стороне сервера, то можно использовать базовую аутентификацию. Но на стороне клиента вы не должны его использовать

Если вы хотите использовать в почтальоне, вам нужно использовать его с access_token

Private apps can authenticate with Shopify by including the request header X-Shopify-Access-Token: {access_token}, where {access_token} is replaced by your private app's Admin API password.

Другие вопросы по теме