def post(self): user = users.get_current_user() user_prefs = UserPrefs.all().filter('google_account =', user).get() if user_prefs is None: return self.error(404) receipt_data = self.request.get('receipt_data') logging.info('Row: %s' % receipt_data) store_purchase_tmp_history = StorePurchaseTmpHistory() store_purchase_tmp_history.user_prefs = user_prefs.key() store_purchase_tmp_history.platform = 'ios' store_purchase_tmp_history.receipt_data = receipt_data store_purchase_tmp_history.status = 'pending' store_purchase_tmp_history.secret_key = uuid.uuid4().hex store_purchase_tmp_history.put() try: taskqueue.add(url = '/store_api/task/verify_receipt', params = {'id': store_purchase_tmp_history.key().id()}) json = simplejson.dumps({'status': True, 'key': store_purchase_tmp_history.secret_key}, ensure_ascii=False) self.response.content_type = 'application/json' return self.response.out.write(json) except: logging.error('Add task failed.') json = simplejson.dumps({'status': False, 'key': None}, ensure_ascii=False) self.response.content_type = 'application/json' self.response.out.write(json)
def post(self): receipt_id = self.request.get('id') store_purchase_tmp_history = StorePurchaseTmpHistory.get_by_id(int(receipt_id)) if store_purchase_tmp_history is not None: receipt_data = store_purchase_tmp_history.receipt_data user_prefs = store_purchase_tmp_history.user_prefs logging.info('Row: %s' % receipt_data) debug_mode = True if debug_mode: verify_url = 'https://sandbox.itunes.apple.com/verifyReceipt' else: verify_url = 'https://buy.itunes.apple.com/verifyReceipt' receipt_data_b64 = base64.b64encode(receipt_data) logging.info('B64: %s' % receipt_data_b64) payload = simplejson.dumps({'receipt-data': receipt_data_b64}, ensure_ascii=False) logging.info('Verify URL: %s' % verify_url) response = urlfetch.fetch(url=verify_url, payload=payload, method=urlfetch.POST, headers={'Content-Type': 'application/json'}) if response.status_code == 200: result = simplejson.loads(response.content) logging.info(response.content) if result['status'] == 0: store_purchase_history = StorePurchaseHistory() store_purchase_history.user_prefs = user_prefs.key() store_purchase_history.product_id = result['receipt']['product_id'] store_purchase_history.platform = 'ios' store_purchase_history.receipt = response.content store_purchase_history.status = 'pending' store_purchase_history.put() logging.info('Status: Success') store_purchase_tmp_history.status = 'success' store_purchase_tmp_history.put() try: taskqueue.add(url = '/store_api/task/item_count_up', params = {'id': store_purchase_history.key().id()}) except: logging.error('Add task failed.') return self.error(500) logging.info('verify receipt success.') else: logging.error('Status: Failed') else: logging.error('ResponseCode: %d' % response.status_code) return self.error(500) logging.info('verify receipt failed.') else: logging.error('receipt_id not found.')
def post(self): secret_key = self.request.get('key') store_purchase_tmp_history = StorePurchaseTmpHistory.all().filter('secret_key =', secret_key).get() if store_purchase_tmp_history is not None: if store_purchase_tmp_history.status == 'pending': json = simplejson.dumps({'pending': True}, ensure_ascii=False) else: json = simplejson.dumps({'pending': False}, ensure_ascii=False) logging.info('Result: %s' % json) self.response.content_type = 'application/json' self.response.out.write(json) else: self.error(404)