2017-05-16 3 views
0

私はカスタム配送料を返す専用のShopifyアプリを構築しています。 API docsに続いて、this tutorialの助けを借りて、私は自分の店でいくつかのサンプル出荷レートを返す機能的な概念実証を作成しました。Customify CarrierServiceから料金を得ることができません

しかし、その概念実証アプリケーションはPHPで構築されており、最終版はRuby on Railsになければなりません。そのため、PHPアプリケーションとまったく同じコンテンツを返すRailsアプリを作成しましたが、何らかの理由で料金がShopifyバックエンドに表示されません。

私が気付く唯一の事は、HTTPヘッダーです(私はPHPアプリケーションにマッチさせるためにそれらを使用してみましたが、役に立たない)。私がここで紛失していることは明らかですか?ここで

は、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 

は再び、Shopifyは細かいPHPの応答を処理しますが、Railsの上で静かに失敗します応答。 Shopifyが拒否しているかもしれない2番目の(Rails)ブロックには何かがありますか?

Shopifyは残念なことに、このタイプの問題をデバッグするためのエラーログや方法を提供していません。あなたのアプリからレートを引き出すかどうかは関係ありません。ここで

は私の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 

私は多分Shopifyは非常に積極的にキャッシュされたので、私はまた私のプライベートのアプリやキャリアサービスの両方を破壊し、再作成しようとしただけでなく、callback_urlを変更疑わ。これまでのところ何も効果がありませんでした。

ありがとうございました!

+0

を、あなたのいくつかを投稿するためにちょっとザックが、それは可能でしょうコード? –

+0

@JoshBrownもちろん!私はRailsコントローラコードを追加しました。私はそれが多くの洞察を提供するとは確信していません - それはShopifyが求めているものを正確に出力しているようです。 (私は間違っていると思う!) – Zac

答えて

1

多くの掘り出しの後、私は答えを見つけました:Shopify要求率はPOST経由ですが、私のアプリはGETにしか反応しませんでした。クイックフィックスとして

が、私は routes.rbでスタティックルートを作成しました:振り返ってみると

Rails.application.routes.draw do 
    post 'customrates', to: 'rates#index' 
end 

、これは、私は気づいていなかったclearly stated in the documentationでしたが(結局、レート要求は、直感的には次のようですGETアクション)。この問題に遭遇した他の誰のために

、ちょうどそれが何それが必要戻っています確認するために、あなたのcallback_urlにCURL経由POSTを送信してください:

curl -X POST http://yourcallbackurl.com 
関連する問題