Я столкнулся с этот учебник, используя все технологии в мире, которые должны показать, как создать реагирующее приложение с нуля, чтобы использовать 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
Кажется, вместо такой ошибки возвращается загадочная страница (которая просто ведет к вашему демонстрационному магазину/приложению):
@BilalAkbar Я пробовал без файлов cookie с тем же результатом (кроме типа контента)
Вы можете проверить свой заголовок? Похоже, у вас есть некоторые заголовки в запросе POST, которые могут быть причиной этого.
Если вы ищете новейшее решение косвенной интеграции Stripe для Shopify, посмотрите эту демонстрацию: shopifystripe.techtolia.com — получайте оплату за свои заказы Shopify через Stripe с Alipay, Bancontact, EPS, giropay, iDEAL, Przelewy24, Sofort, WeChat Pay.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы уверены, что в запросе нет файлов 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/2019-07/products.json' \ -H 'Content-Type: application/json' \ -d '{ "order": { "line_items": [ { "product_id": 1884330262574, "variant_id": 16960861732910, "quantity": 1 } ], "financial_status": "pending" } } '
Для справки, речь идет о продукте - exe-test-store.myshopify.com/admin/products/1884330262574.xml Я путаю идентификаторы или что-то в этом роде? Ошибка, которую я вижу сейчас, это {"errors":{"product":"Required parameter missing or invalid"}}. Я понимаю, что это немного другой вопрос, но, вероятно, это что-то очень простое, чего мне не хватает.
Самое странное, что мне удалось заставить его работать ОДИН РАЗ, но не с тех пор.
@dsp_099 dsp_099 Я думаю, проблема просто в том, что вы по ошибке отправляете сообщения в конечную точку products.json вместо orders.json.
Если вы читаете документацию по частным приложениям
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.
Вышеупомянутая ошибка, скорее всего, связана с файлами cookie. Не отправляйте файлы cookie через Postman в Shopify.