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, если бы я избегал этих ошибок.

Итак, как же нам избежать этих ошибок копирования при отправке приложения на проверку?

Решение: много чего:

  1. Не упоминайте «Shopify» в названии или слогане вашего приложения. Однако вы можете упомянуть и другие приложения (например, мое приложение использует Slack, поэтому я ссылаюсь на Slack).
  2. Если вы разрабатываете бесплатное приложение, не указывайте другие уровни ценообразования в текстовом поле общего описания. Кажется, вы можете включить их в свои скриншоты или включить их в раздел цен в описании приложения.
  3. Имя вашего приложения в магазине приложений должно совпадать с именем приложения при его установке. Я думал, что после установки приложения смогу заняться более серьезным маркетингом, но, очевидно, ошибался. Просто убедитесь, что названия приложений совпадают, и у вас не возникнет никаких проблем.

Я надеюсь, что этот пост поможет вам в разработке и выпуске вашего собственного приложения Shopify, и если у вас есть какие-либо вопросы, не стесняйтесь писать мне в любое время по адресу [email protected]!

Крис - программист-самоучка и соучредитель Threadbase: платформы, которая позволяет людям, не являющимся разработчиками, создавать свои собственные сообщества в стиле Reddit всего за несколько кликов, которая была приобретена в марте 2019 года. Он также только что закончил разработку Shoppy - бесплатное приложение, которое отправляет уведомления о заказах и сводные отчеты из вашего магазина Shopify в Slack.

До Threadbase и Shoppy Крис работал в маркетинге для стартапов, включая Quidsi и ComiXology (оба были приобретены Amazon) и Bonobos (приобретены Walmart).