0

Google Wallet In App Payments を利用するアプリを構築しています。これは、python 環境の google app エンジンでホストされています。

ウォレット トランザクションの一部として、jwt を生成する必要があります。クライアント側のデータを取得し、それを ajax GET リクエストを介してサーバー側に送信して jwt 生成し、サーバーの応答でキャプチャします。私のコードは、ローカル開発環境 (キャッシュの問題を回避するために Chrome シークレットで実行) では期待どおりに動作します。ただし、アプリをライブでプッシュしてリクエストを行うと、何も返されず、python メソッドは実行されません。

Appengine のログは、リクエストが確認されていることを示していますが、それは処理されていないだけです。

2013-06-18 21:35:01.919 /payments/generate_jwt_token?topup_amount=1&user_token=108700000000000000889 302 51ms 0kb Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36
86.1.75.123 - someuser [18/Jun/2013:14:35:01 -0700] "GET /payments/generate_jwt_token?topup_amount=1&user_token=108700000000000000889 HTTP/1.1" 302 0 "http://myapp.appspot.com/me/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36" "myapp.appspot.com" ms=52 cpu_ms=0 app_engine_release=1.8.1 

postman を使用して (Chrome ブラウザから) 同じリクエストを行う場合、つまり、GET リクエストを

http://myapp.appspot.com/payments/generate_jwt_token?topup_amount=1&user_token=108700000000000000889

期待どおりの応答が得られます (ローカル開発環境と同じように)。App Engine にはアプリのバージョンが 1 つしかありません。

リクエストを POST リクエストに変更しようとしましたが、同じ問題が発生し、エラーが発生するはずです。

ajax リクエストは次のとおりです。

function get_jwt_token_for_user(topup_amount, callback)
{
    console.log("get_jwt_token is running"); // this is printed to console
    $.ajax({ 
        type: "GET",
        url: "/payments/generate_jwt_token",
        data: {"topup_amount" : topup_amount, "user_token" : "108700000000000000889"},
        success: function(result) {
            var myObject = JSON.parse(result);
            console.log("myObject"); // none of this is printed when on appengine, but it is when running locally
            console.log(myObject); // none of this is printed when on appengine, but it is when running locally
            if (myObject.jwt_token !== 'None')
            {
                callback(myObject.jwt_token);
            }
            else
            {
                console.log(myObject.error);
            }
        },
        failure: function(fail){ 
            console.log("fail");
            console.log(fail);
        }
     });
}

すべての console.log(s) にもかかわらず、ajax リクエスト内でコンソールに何も書き込まれません。ただし、最初の console.log が画面に出力されるのを見ることができるので、関数は実行されます。

私の質問は次のとおりです。

  1. これは appengine のエラー/機能ですか? もしそうなら、どうすれば修正できますか?
  2. 私はJQuery ajaxを誤用していますか?もしそうなら、どのように?
  3. このコードはすべてローカルでは機能するのに、ライブでプッシュすると機能しないのはなぜでしょうか。
4

0 に答える 0