构建第一个Shopify应用程序时要避免的3个常见错误

构建第一个Shopify应用程序时要避免的3个常见错误

Shopify从根本上改变了我们思考电子商务和建立在线业务的方式。由于Shopify,现在您可以创建一个漂亮的电子商务网站,列出产品并在不到一天的时间内开始赚钱,而且在Shopify拥有市值超过180亿美元, 有600,000多家商家 ,Shopify的合作伙伴和开发人员在服务和应用程序方面的收入超过4.3亿美元,难怪越来越多的人对Shopify应用程序的构建和获利感兴趣。

而且,我应该知道,因为我构建了第一个Shopify应用程序来做到这一点。

但是,在开发并获得我的第一个Shopify应用程序-Shoppy:A Better Slack Bot-在App Store上发布后,我也学到了一些东西,我想分享我制作第一个应用程序时犯的3个常见错误因此您可以避免它们并更快地进入市场。

开始…

1.忘记设置authenticated_controller.rb

构建第一个Shopify应用程序时要避免的3个常见错误

制作Shopify应用程序最重要的第一步就是对新商店进行身份验证,并使用该会话数据执行诸如使用商店/订单/产品数据,响应Webhook或处理费用之类的事情。

首次设置应用程序时,我在每个控制器上使用以下代码来确保已正确验证会话:

session = ShopifyApp::SessionRepository.retrieve(1)ShopifyAPI::Base.activate_session(session)
class ShopifyController < ApplicationController

这是非常低效的,并且导致非常令人沮丧的错误,如果我改为让ShopifyController继承处理所有Shopify相关身份验证的Authenticated Controller,可以轻松避免这些错误。

那么,确保我们始终对会话进行身份验证以访问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.在控制器中检索有关Shop的信息时,使用Shopify的domain域

构建第一个Shopify应用程序时要避免的3个常见错误
从字面上看,我的第一个Alpha用户看到的屏幕就是因为这个错误。

在开发过程中,您可能会创建一个调试存储,以便您可以安装应用程序并测试数据。 使用Shopify,商店会自动生成,因此,如果您的调试商店称为Debug Store ,Shopify将为您的商店提供类似于debug-store.myshopify.com的域。

该Shopify域将存储在两个字段中: myshopify_domaindomain

在开发过程中,您可以像这样直观地设置各种商店查询:

@shop = Shop.where(shopify_domain: ShopifyAPI::Shop.current.domain).first

实际上,我可以找到的大多数资源库和教程都是在domain进行查找的,因为在开发中这很有意义。 myshopify_domaindomain相同!

但是,在生产中,大多数用户都设置了自己的自定义域,这将产生如下数据:

myshopify_domain: "example.myshopify.com", domain: "example.com"

我是第一次使用Alpha版用户安装Shopy时发现的,该应用程序完全崩溃了。

我发现Shopify为您提供了myshopify_domain商店链接供您存储在应用程序的数据库中,因此,如果您进行商店查询并依赖domain那么如果商店设置了自定义域,则查询将无法正确匹配,结果在崩溃中。

那么,如何确保在生产中从Shopify收到的域名正确匹配?

解决方案:在控制器中检索有关Shop的信息时,请始终使用myshopify_domain而不是domain 这样可确保您将用户的域与安装完成后收到的Shopify域正确匹配。

因此,调整后的生产代码应如下所示:

@shop = Shop.where(shopify_domain: ShopifyAPI::Shop.current.  myshopify_domain).first

3.在将应用提交审核时容易犯错误,这会导致您被拒绝。

构建第一个Shopify应用程序时要避免的3个常见错误

我想分享的最后一件事是在完成开发并提交应用程序以供批准后所犯的错误。

以下是我首次提交Shoppy后收到的官方错误:

1.在应用名称或标语中不能使用“ Shopify”一词。 有关商标限制,请参阅我们的合作伙伴计划协议
2.在您的应用列表中的任何地方都不应包含价格信息。 有关更多详细信息,请参阅我们的定价部分要求
3.您的合作伙伴帐户中的应用名称与Shopify应用商店列表中的名称不同。 这些字段必须相同。 您可以在合作伙伴信息中心的“应用设置”部分中更改应用名称。

这些都是超级容易解决的错误,但是由于我犯了这些错误并且已将它们标记出来,因此我必须在进行编辑后重新提交我的应用程序。 从那开始,该应用又花了10天的时间才从待审核状态变为批准状态。 如果避免这些错误,我本可以将总批准时间从30天减少到20天。

那么,在提交应用进行审核时,我们如何不犯这些复制错误呢?

解决方案:很多事情:

  1. 不要在应用名称或标语中引用“ Shopify”。 不过,您可以提及其他应用程序(例如,我的应用程序使用Slack,因此我引用了Slack)。
  2. 如果您要开发免费增值应用,请不要在一般说明文本框中提及其他定价层。 似乎您可以将它们包括在屏幕快照中,或者可以将其包括在应用说明的定价部分中。
  3. 应用商店中的应用名称必须与安装时的应用名称匹配。 我以为安装该应用程序后可以做更多的营销工作,但显然我错了。 只需确保应用名称相同,就不会有任何问题。

我希望这篇文章可以帮助您开发和发布自己的Shopify应用,如果您有任何疑问,请随时通过[email protected]向我发送电子邮件!

-

克里斯是一名自学成才的程序员,也是Threadbase的联合创始人:Threadbase是一个平台,该平台使非开发人员只需单击几下即可构建自己的Reddit风格社区 ,该平台于2019年3月被收购。他还刚刚完成了Shoppy的开发,一个免费的应用程序,可从Shopify商店向Slack发送订单通知和摘要报告。

在加入Threadbase和Shoppy之前,Chris曾在包括Quidsi和ComiXology(均被亚马逊收购)和Bonobos(已被沃尔玛收购)在内的初创公司营销工作。

From: https://hackernoon.com/3-common-mistakes-to-avoid-when-building-your-first-shopify-app-cc9006f06009