Пример кредитов Facebook в App Engine?

Есть ли примеры использования кредитов Facebook в Google App Engine?

Я нашел этот пост в блоге, но он не полный http://blog.suinova.com/2011/01/integrating-facebook-credits-api-into.html

Я получил пример runwithfriends, работающий на App Engine, попытался расширить его с помощью кредитов, но пока не повезло.

Также искал форумы разработчиков FB, ничего не получил.

Какие ресурсы вы можете указать мне?

Что не работает:
1) Когда я нажимаю кнопку "оплатить через Facebook", я получаю "Ошибка приложения" без кода ошибки.
-Проверил консоль JavaScript
-Проверил настройки приложения fb
-Пробовал на локальном сервере и производственном сервере

2) callback.py не завершен, потому что я не смог разобрать подписанный запрос (нет кода, доступного в py для меня, чтобы учиться)

3) Что я в основном сделал, так это добавил код из Suinova Designs (ссылка выше) в существующий код приложения Run With Friends. Не получилось, как ожидалось.

мой код до сих пор:

//payment_page.html
<html>
<table>
<tr><th>Name</th><th>Price</th><th> </th></tr>
<tr><td>Something to buy</td><td>10 FC</td><td><a href="" onclick="return buyit();">
<img src="http://www.facebook.com/connect/button.php?app_id=215638625132268&feature=payments&type=light_l" />
</a></td></tr>
</table>

// javascript

function buyit(){
    FB.ui({
        method:'pay',
    purchase_type:'item',
    order_info:{
        item_id:'myitem',
                title:'Something to buy',
            price:2,
            description:'Whatever',
            image_url:'http://www.facebook.com/images/gifts/21.png',
             product_url:'http://www.facebook.com/images/gifts/21.png'}
},

function(resp){
    if(resp.order_id) window.top.location='http://apps.facebook.com/runwithfriends trial'; else alert(resp.error_message);
});
return false;

}

//callback.py
class FacebookPaymentRequest(webapp.RequestHandler):
def post(self):
    signed_request = parse_signed_request(self.request.get('signed_request'),conf.FACEBOOK_APP_SECRET)
    payload = signed_request['credits'] #credits:{buyer:int,order_id:int,order_info:{},receiver:int}
    order_id = payload['order_id']
    method = web.request.get('method')
    return_data = {'method':method}
    if method == 'payments_get_items':
        order_info = payload['order_info']  #order_info:{item_id:'',title:'',description:'',price:0,image_url:'',product_url:''}
        item = simplejson.loads(order_info) #needs to convert JSON string to dict
        #check item,price,etc and reply
        return_data['content'] = [item]
    elif method == 'payments_status_update':
        status = payload['status']
        return_data['content'] = {'status':'settled','order_id':order_id}
        if status == 'placed':
            #just return settled status to Facebook, this may be called twice
            order_details = simplejson.loads(payload['order_details'])
            #check and log here
        elif status == 'settled':
            order_details = simplejson.loads(payload['order_details'])
            #order_details:{order_id:0,buyer:0,app:0,receiver:0,amount:0,update_time:0,time_placed:0,data:'',items:[{}],status:'placed'}
            buyer = order_details['buyer']
            item = order_details['items'][0]
            #now save this transaction into our database
        else:
            #may be refunded, canceled, log the activity here
            return_data['content']['status'] = status
    self.response.out.write(simplejson.dumps(return_data))

1 ответ

Ваш код Python выглядит довольно нормально, поэтому я думаю, что у вас просто проблемы с авторизацией. В зависимости от того, как вы авторизуетесь (процесс довольно сложный, чем система кредитов), вам, скорее всего, будет выдан подписанный запрос, который только частично авторизован... означает, что вы авторизованы для доступа только к определенным частям Facebook, но обычно нет. авторизован для доступа к активному / зарегистрированному пользователю (т.е. мне).

Вы можете убедиться в этом, определив, является ли в подписанном вами запросе более 80 символов (вместо 40). Обычно я пытаюсь аутентифицироваться, расшифровывая профиль (signature_request), если это не удается, тогда я пытаюсь использовать ранее сохраненный файл cookie, а затем, если это не удается, я пытаюсь повторно зарегистрировать пользователя. Я определяю ошибку, размещая попытку / за исключением моих вызовов, чтобы получить объект "я" через GraphAPI.

Другие вопросы по тегам