読者です 読者をやめる 読者になる 読者になる

RetroWeb ~iPhoneとAndroidでハイブリッドゲームアプリ開発~

AIR for iOS+AndroidでSmartPhone Game ハイブリッドアプリ開発

最近作ったアプリ
100億本の抜け毛 100億匹のモナー DQ3闘技場アプリ モナーペット(進化)

iPhoneアプリ、アイテム課金のレシート送信部分サンプル

AIR for iOS

ノイズまみれですが、こんな感じで申請出そうと思います。
しかしまだ前回の更新がストアに反映されてないので、それが終わるまでバージョンアップできませんw
2か所送信してるのは、開発と本番両方送信しないと審査はじかれるらしいから。果たしてうまくいくだろうか。

作ってるゲームアプリ → http://goo.gl/knd4G8

function sendVerifyReceipt(t:Transaction):void{
	
	purchaseLog = purchaseLog + "identifier:"+t.identifier+"\n";
	purchaseLog = purchaseLog + "date:"+t.date+"\n";
	purchaseLog = purchaseLog + "receipt:"+t.receipt+"\n";
	
	analiticsEvent("Purachase_iOS_sendVerifyReceipt", productId, _so_data.userHash+"@"+_so_data.userName+"_"+purchaseLog);
	
	var encodedReceipt:String = Base64.encode(t.receipt);
	//レシートデータをAppleサーバーに問い合わせる際
	//サンドボックス用のURL(https://sandbox.itunes.apple.com/verifyReceipt)
	//本番用のURL                    (https://buy.itunes.apple.com/verifyReceipt)の2種類が存在します。
	var req:URLRequest = new URLRequest("https://sandbox.itunes.apple.com/verifyReceipt");
	req.method = URLRequestMethod.POST;
	req.data = "{\"receipt-data\" : \""+ encodedReceipt+"\"}";
	var loader:URLLoader = new URLLoader(req);
	loader.load(req);
	loader.addEventListener(Event.COMPLETE,function(e:Event):void{
		//Toast2("★★LOAD COMPLETE: " + loader.data, root, NaN);
		analiticsEvent("Purachase_iOS_dev_LOAD COMPLETE", productId, _so_data.userHash+"@"+_so_data.userName+"_"+loader.data.toString());
		if(loader.data.toString().length > 100){
			purchaseLog = purchaseLog + "verifyReceipt:"+loader.data+"\n";
			callBack();
			endLoader();
			savePurchaseLog(purchaseLog);
		}
		removeEvents();
	});
	loader.addEventListener(IOErrorEvent.IO_ERROR, function(e:IOErrorEvent){ //
		Toast2("開発のIOエラーです e="+e + "/e.text = "+e.text+"/#2032 ストリームエラーなら、Wifiや電波の設定ミス? ");
		analiticsEvent("Purachase_iOS_dev_IO_ERROR", productId, _so_data.userHash+"@"+_so_data.userName+"_"+e.text);
		purchaseLog = purchaseLog + "IO_ERROR:"+e.text+"\n";
		callBack();
		endLoader();
		savePurchaseLog(purchaseLog);
		removeEvents();
	});
	
	//本番用の通信
	var req2:URLRequest = new URLRequest("https://buy.itunes.apple.com/verifyReceipt");
	req2.method = URLRequestMethod.POST;
	req2.data = "{\"receipt-data\" : \""+ encodedReceipt+"\"}";
	var loader2:URLLoader = new URLLoader(req2);
//							loader2.load(req2);
	loader2.addEventListener(Event.COMPLETE,function(e:Event):void{
		//Toast2("★★本番: " + loader2.data);
		analiticsEvent("Purachase_iOS_honban_LOAD COMPLETE", productId, _so_data.userHash+"@"+_so_data.userName+"_"+loader2.data.toString());
		if(loader2.data.toString().length > 100){
			////Toast2("★★LOAD COMPLETE: " + loader2.data, root, NaN);
			purchaseLog = purchaseLog + "verifyReceipt:"+loader2.data+"\n";
			callBack();
			endLoader();
			savePurchaseLog(purchaseLog);
		}
		removeEvents();
	});
	loader2.addEventListener(IOErrorEvent.IO_ERROR, function(e:IOErrorEvent){ //trace("IOエラーです ="+url + "/e.text = "+e.text+"/#2032 ストリームエラーなら、Wifiや電波の設定ミス? ");
		Toast2("本番のIOエラーです e="+e + "/e.text = "+e.text+"/#2032 ストリームエラーなら、Wifiや電波の設定ミス? ");
		analiticsEvent("Purachase_iOS_honban_IO_ERROR", productId, _so_data.userHash+"@"+_so_data.userName+"_"+e.text);
		purchaseLog = purchaseLog + "IO_ERROR:"+e.text+"\n";
		callBack();
		endLoader();
		savePurchaseLog(purchaseLog);
		removeEvents();
	});
	ins.finishTransaction(t.identifier);
}