restarone / violet_rails

an app engine for your business. Seamlessly implement business logic with a powerful API. Out of the box CMS, blog, forum and email functionality. Developer friendly & easily extendable for your next SaaS/XaaS project. Built with Rails 6, Devise, Sidekiq & PostgreSQL
https://violet.restarone.solutions
MIT License
96 stars 44 forks source link

Printify Integration in Violet Rails #1562

Open alis-khadka opened 1 year ago

alis-khadka commented 1 year ago

@alis-khadka

SECTION - START

Currency

Printify has two currency settings;

We can find further details about it over Printify webpage. LINK 1, LINK 2

The Printify's products API does not provide any details regarding the currency being used. It only returns the price in figures.

Screenshot 2023-05-26 at 4 54 58 PM

So, to overcome this barrier, we would have to manually set the currency, which is being used or has been setup in Printify platform, in Violet-Rails end. It will be saved under a shop api-resource's properties as below; TEST-NET LINK

Screenshot 2023-05-26 at 5 12 42 PM

This currency information will be used to show the prices in products-listing, product-detail, cart and Stripe's checkout page.

Note: For now, we are using USD currency over the test-net.

SECTION - END

@Pralish

SECTION - START

HOW TO RUN PRINTIFY PLUGIN INSTALER SCRIPT

https://github.com/restarone/violet_rails/pull/1557

Export variables

Required Variables

Optional Variables

Run Installer

In development

In production

In test server with dokku

Variables

SHOP_NAME:

Name of the printify shop you want to sync to violet rails.

Screenshot 2023-05-30 at 5 30 19 PM


PRINTIFY_API_KEY:

https://github.com/restarone/violet_rails/assets/50227291/22a2853d-1d99-4fc0-8dc8-2a81e31eb67e


STRIPE_SECRET_KEY:

https://github.com/restarone/violet_rails/assets/50227291/1d92065c-c04c-4a45-a656-46017466429c


BUSINESS_NAME:

Business name in your printify account.

https://github.com/restarone/violet_rails/assets/50227291/ce67a088-6412-4c02-8f68-1b2c8392e945


PRODUCTS_PAGE_SLUG:

The url you want for your products list page. Default is 'products'

https://github.com/restarone/violet_rails/assets/50227291/125c9681-84ac-49c6-ab7e-8e6d784abcbe


STORE MANAGEMENT

How to hide product from the store:

Screenshot 2023-06-04 at 9 12 04 AM

https://github.com/restarone/violet_rails/assets/50227291/6698994e-1d33-4073-bc6e-6d18cd88a92c


How to change who pays processing fees (Pass On to customer or Absorb Fees)

If pass_processing_fees_to_customer is set to true, the Convenience fee, ie. the stripe processing fee (2.9% + $0.30) and stripe tax collection charge (0.5% if sales tax enabled) will be passed to customers

Screenshot 2023-06-04 at 9 33 51 AM Screenshot 2023-06-04 at 9 34 32 AM

https://github.com/restarone/violet_rails/assets/50227291/6b703d35-7b29-437f-b49e-43947cb4e9b1


DEBUGGING

If any feature is not working, please check shop_logs namespace. We store error logs there.

Stuck in publishing state?

https://github.com/restarone/violet_rails/assets/50227291/08e24d9f-b816-4cb8-9aa5-376f1771e7f1

How to check if Printify webhooks are created?

PRINTIFY_API_KEY="your api key"
PRINTIFY_HEADERS = {                                             
  "Content-Type" => 'application/json;charset=utf-8',
  "Authorization" => "Bearer #{PRINTIFY_API_KEY}" 
}

shop_id = ApiNamespace.friendly.find('shops').api_resources.first.properties['printify_shop_id']

response = HTTParty.get("https://api.printify.com/v1/shops/#{shop_id}/webhooks.json", headers: PRINTIFY_HEADERS)

JSON.parse(response.body)

SECTION - END

@Ayon95

SECTION - START

SECTION - END

alis-khadka commented 1 year ago

@Pralish @Ayon95

Lets work on above documentation in our respective section whenever we add some contents to it. And, in the end, we can compile the contents and finalize it.