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 が画面に出力されるのを見ることができるので、関数は実行されます。
私の質問は次のとおりです。
- これは appengine のエラー/機能ですか? もしそうなら、どうすれば修正できますか?
- 私はJQuery ajaxを誤用していますか?もしそうなら、どのように?
- このコードはすべてローカルでは機能するのに、ライブでプッシュすると機能しないのはなぜでしょうか。