Je construis une application privée Shopify qui renvoie des tarifs d'expédition personnalisés. Après le API docs, et avec l'aide de this tutorial, j'ai créé un proof-of-concept fonctionnel qui renvoie des taux de livraison d'échantillons dans mon magasin.Shopify n'obtient pas les tarifs du service personnalisé CarrierService
Cependant, cette application de preuve de concept est construite en PHP, et la version finale doit être en Ruby on Rails. J'ai donc créé une application Rails qui renvoie exactement le même contenu que l'application PHP, mais pour une raison quelconque, les tarifs n'apparaissent tout simplement pas dans le backend de Shopify. La seule chose que je remarque, c'est que les en-têtes HTTP sont différents (j'ai essayé de faire le tour avec eux pour faire correspondre l'application PHP, mais en vain). Y a-t-il quelque chose d'évident qui me manque ici?
Voici une comparaison des en-têtes de réponse HTTP:
PHP:
Connection: Keep-Alive
Content-Encoding: gzip
Content-Length: 186
Content-Type: text/html; charset=UTF-8
Date: Tue, 16 May 2017 13:00:30 GMT
Keep-Alive: timeout=5, max=100
Server: Apache/2.4.18 (Ubuntu)
Vary: Accept-Encoding
Rails:
Cache-Control: max-age=0, private, must-revalidate
Connection: keep-alive
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
Date: Tue, 16 May 2017 12:57:38 GMT
ETag: W/"ce885edaa10636b3b7459dca958f44dd"
Server: nginx
Transfer-Encoding: chunked
Vary: Accept-Encoding
X-Request-Id: 54e2575e-c86a-4f44-a315-d0a3fbbc13f9
X-Runtime: 0.616974
Encore une fois, Shopify gère la réponse PHP bien, mais échoue en silence sur les rails réponse. Y a-t-il quelque chose dans ce second bloc (Rails) que Shopify pourrait rejeter? Shopify ne fournit malheureusement pas de journal des erreurs ni de moyen de déboguer ce type de problème, qu'il tire ou non les tarifs de votre application.
Voici mes Rails rates_controller.rb
:
class RatesController < ApplicationController
def index
ups_rates = {
rates: [
{
service_name: 'Endertech Overnight',
service_code: 'ETON',
total_price: '000',
currency: 'USD',
min_delivery_date: (DateTime.now + 1.days).strftime('%F %T %z'),
max_delivery_date: (DateTime.now + 2.days).strftime('%F %T %z')
},
{
service_name: 'Endertech Regular',
service_code: 'ETREG',
total_price: '000',
currency: 'USD',
min_delivery_date: (DateTime.now + 3.days).strftime('%F %T %z'),
max_delivery_date: (DateTime.now + 7.days).strftime('%F %T %z')
}
]
}
# Tested returning both application/json (default) or text/html
#render json: ups_rates
render body: ups_rates.to_json, content_type: "text/html"
end
end
Je me doutais bien peut-être Shopify a été mise en cache de façon très agressive, donc j'ai aussi essayé de détruire et de recréer à la fois mon application privée et le service de transport, ainsi que la modification du callback_url
. Jusqu'à présent, rien n'a eu d'effet.
Merci!
Hey Zac, serait-il possible pour vous de certaines de vos code? –
@JoshBrown Bien sûr! J'ai ajouté le code du contrôleur Rails. Cependant, je ne suis pas sûr que cela fournira beaucoup de perspicacité - il semble sortir exactement ce que demande Shopify. (J'espère que j'ai tort!) – Zac