Shopify коренным образом изменил наше представление об электронной коммерции и построении онлайн-бизнеса. Теперь вы можете создать красивый веб-сайт электронной коммерции, перечислить продукты и начать зарабатывать деньги менее чем за день благодаря Shopify, и в мире, где Shopify имеет рыночная капитализация ›18 миллиардов долларов, более 600 000 продавцов , а партнеры и разработчики Shopify заработали более 430 миллионов долларов на услугах и приложениях , поэтому неудивительно, что все больше и больше людей заинтересованы в создании и монетизации приложений Shopify.
И я должен знать, потому что я создал свое первое приложение Shopify для этого.
Но я также узнал несколько вещей после разработки и получения моего первого приложения Shopify - Shoppy: A Better Slack Bot - выпущенного в магазине приложений, и я хотел бы поделиться 3 типичными ошибками, которые я допустил, когда делал свои первое приложение, чтобы вы могли избежать их и быстрее выйти на рынок.
Поехали…
1. Забываете настроить Authenticated_controller.rb
Одним из самых важных первых шагов в создании приложения Shopify является аутентификация нового магазина и использование данных сеанса для таких вещей, как использование данных магазина / заказов / продукта, ответа на веб-перехватчик или обработки платежа.
Когда я впервые настраивал свое приложение, я использовал следующий код на каждом контроллере, чтобы убедиться, что я правильно аутентифицировал сеанс:
session = ShopifyApp::SessionRepository.retrieve(1)ShopifyAPI::Base.activate_session(session) class ShopifyController < ApplicationController
Это невероятно неэффективно и приводило к очень неприятным ошибкам, которых можно было бы легко избежать, если бы я вместо этого ShopifyController
унаследовал аутентифицированный контроллер, который обрабатывал всю аутентификацию, связанную с Shopify.
Итак, как лучше всего гарантировать, что мы всегда аутентифицируем наши сеансы для получения доступа к API и данным магазина?
Решение. Убедитесь, что вы AuthenticatedController
правильно настроили и убедитесь, что любой контроллер, для которого требуется проверка подлинности Shopify, наследует следующее:
class AuthenticatedController < ActionController::Base include ShopifyApp::Localization include ShopifyApp::LoginProtection include ShopifyApp::EmbeddedApp protect_from_forgery with: :exception before_action :login_again_if_different_shop around_action :shopify_session end ... class ShopifyController < AuthenticatedController
2. Использование поля «домен» из Shopify при получении информации о вашем магазине в вашем контроллере.
В процессе разработки вы, вероятно, создадите магазин отладки, чтобы установить приложение и протестировать данные. С Shopify магазины создаются автоматически, поэтому, если ваш магазин отладки называется Debug Store
, Shopify предоставит вашему магазину домен, похожий на debug-store.myshopify.com
.
Этот домен Shopify будет храниться в двух полях: myshopify_domain
и domain
.
Во время разработки вам может быть интуитивно понятно настроить различные поиски магазинов следующим образом:
@shop = Shop.where(shopify_domain: ShopifyAPI::Shop.current.domain).first
Фактически, большинство репозиториев и руководств, которые я смог найти, искали из domain
, потому что в процессе разработки это имеет смысл. myshopify_domain
и domain
идентичны!
Однако в производственной среде большинство пользователей настраивают свой собственный домен, в результате чего получаются следующие данные:
myshopify_domain: "example.myshopify.com", domain: "example.com"
Я обнаружил это в первый раз, когда у меня был альфа-пользователь, установивший Shopy, и приложение полностью вылетело.
Я обнаружил, что Shopify дает вам ссылку на магазинmyshopify_domain
, которую вы можете сохранить в базе данных вашего приложения, поэтому, если вы выполняете свой запрос в магазине и полагаетесь на domain
, тогда запрос не будет правильно соответствовать, если магазин настроил собственный домен, в результате вылетает.
Так как же убедиться, что вы правильно соответствуете домену, полученному от Shopify в рабочей среде?
Решение. Когда вы получаете информацию о своем магазине в контроллере, всегда используйте myshopify_domain
вместо domain
. Это гарантирует, что вы правильно сопоставите домен пользователя с доменом Shopify, который вы получите после завершения установки.
Итак, ваш скорректированный производственный код должен выглядеть примерно так:
@shop = Shop.where(shopify_domain: ShopifyAPI::Shop.current. myshopify_domain).first
3. Делая простые ошибки при отправке приложения на рассмотрение, вы получите отказ.
Последнее, чем я хотел поделиться, - это ошибки, которые я сделал после того, как закончил разработку и отправил свое приложение на утверждение.
Ниже приведены официальные ошибки, которые я получил после того, как впервые отправил Shoppy:
1. Слово Shopify нельзя использовать в названиях приложений или слоганах. Информацию об ограничениях на использование товарных знаков см. В нашем Соглашении о партнерской программе.
2. Никакая информация о ценах не должна указываться где-либо в списке вашего приложения. См. Наши требования к ценовой части для получения более подробной информации.
3. Название приложения в вашей партнерской учетной записи отличается от того, что указано в списке Shopify App Store. Эти поля должны быть идентичными. Название приложения можно изменить в разделе настройки приложения на панели инструментов партнера.
Это были очень легко исправляемые ошибки, но поскольку я их допустил и они были отмечены, мне пришлось повторно отправить приложение после внесения правок. После этого потребовалось еще 10 дней, чтобы приложение перешло из состояния ожидания в состояние одобрения. Я мог бы сократить общее время утверждения с 30 до 20, если бы я избегал этих ошибок.
Итак, как же нам избежать этих ошибок копирования при отправке приложения на проверку?
Решение: много чего:
- Не упоминайте «Shopify» в названии или слогане вашего приложения. Однако вы можете упомянуть и другие приложения (например, мое приложение использует Slack, поэтому я ссылаюсь на Slack).
- Если вы разрабатываете бесплатное приложение, не указывайте другие уровни ценообразования в текстовом поле общего описания. Кажется, вы можете включить их в свои скриншоты или включить их в раздел цен в описании приложения.
- Имя вашего приложения в магазине приложений должно совпадать с именем приложения при его установке. Я думал, что после установки приложения смогу заняться более серьезным маркетингом, но, очевидно, ошибался. Просто убедитесь, что названия приложений совпадают, и у вас не возникнет никаких проблем.
Я надеюсь, что этот пост поможет вам в разработке и выпуске вашего собственного приложения Shopify, и если у вас есть какие-либо вопросы, не стесняйтесь писать мне в любое время по адресу [email protected]!
—
Крис - программист-самоучка и соучредитель Threadbase: платформы, которая позволяет людям, не являющимся разработчиками, создавать свои собственные сообщества в стиле Reddit всего за несколько кликов, которая была приобретена в марте 2019 года. Он также только что закончил разработку Shoppy - бесплатное приложение, которое отправляет уведомления о заказах и сводные отчеты из вашего магазина Shopify в Slack.
До Threadbase и Shoppy Крис работал в маркетинге для стартапов, включая Quidsi и ComiXology (оба были приобретены Amazon) и Bonobos (приобретены Walmart).