def yandex_response(): h = '' edlr_acc_id = request.args(0) if not edlr_acc_id: h += '''not edlr_acc_id in request params''' return h code = request.vars.get('code') if not code: #raise HTTP(400, 'ERROR: not code') return 'ERROR: not code' edlr_acc = db.dealers_accs[edlr_acc_id] edlr = edlr_acc and db.dealers[edlr_acc.dealer_id] if not edlr: return 'response: edlr or edlr_acc is empty!' api_pars, acc_pars, acc_name = ed_YD.get_pars(edlr, edlr_acc) r = ed_YD.YmOauthRedirectHandler(api_pars, acc_pars, code) accessToken = r.get('access_token', '') if accessToken == '': return 'ERROR: %s' % r.get('error') from datetime import timedelta edlr_acc.update_record( skey=accessToken, expired=request.now + timedelta(1000) # три года ) return '... received , expired: %s </br>new token: %s' % (edlr_acc.expired, accessToken)
def pay_test_to_mosenergo_confirm(): import ed_YD deal_acc=db.deal_accs[264] deal = db.deals[deal_acc.deal_id] dealer_acc = db.dealers_accs[deal.dealers_acc_id] dealer = db.dealers[dealer_acc.dealer_id] api_pars, acc_pars, acc_name = ed_YD.get_pars(dealer, dealer_acc) res = { 'request_id': '3734353838393737305f323535613763306161373966333461383833613238303266623630316132383264666535353665625f3332333937303939', } res = ed_YD.YmToConfirm(res, api_pars, dealer_acc.skey)
def YmToConfirm(): session.forget(response) if len(request.args) < 2: mess = '/[dealer_acc_id]/[request_id]' print mess return mess dealer_acc = db.dealers_accs[request.args(0)] dealer = db.dealers[dealer_acc.dealer_id] api_pars, acc_pars, acc_name = ed_YD.get_pars(dealer, dealer_acc) res = { 'request_id': '%s' % request.args(1), } res = ed_YD.YmToConfirm(res, api_pars, dealer_acc.skey) return BEAUTIFY(res)
def get_yandex_token(): if len(request.args) == 0: mess = CAT( 'len(request.args)==0', BR(), H4('Настройка аккаунта на Яндекс.Деньги'), UL( 'в настройках Yandex денег в Мои Приложения создать приложение БЕЗ 2-й аутинификации!!!' 'задать там ' + DOMEN + '+ https://' + DOMEN + ' support@' + DOMEN, 'задать redirect URL - https://' + DOMEN + '/ed_YD/yandex_response/410011949054154 - тонсть номер кашелька добавим', 'получить ИД приложения - APP_ID', ), H4('Настройка записи в базе даннных'), UL( 'set YM_REDIRECT_URI = "https://' + DOMEN + '/ed_YD/yandex_response" (acc_pars["YM_REDIRECT_URI"] = acc_pars["YM_REDIRECT_URI"] + "/%s" % edlr_acc.id)', 'set CLIENT_ID = APP_ID', ), ) return mess edlr_acc = db(db.dealers_accs.acc == request.args[0]).select().first() edlr = edlr_acc and db.dealers[edlr_acc.dealer_id] if not edlr: return 'not edlr or edlr_acc' api_pars, acc_pars, acc_name = ed_YD.get_pars(edlr, edlr_acc) print acc_name, ':', acc_pars acc_pars[ 'YM_REDIRECT_URI'] = acc_pars['YM_REDIRECT_URI'] + '/%s' % edlr_acc.id #return BEAUTIFY([api_pars, acc_pars, acc_name]) redir_url = ed_YD.YmOauthRequestToken(api_pars, acc_pars) if True: redirect(redir_url) return BEAUTIFY([ api_pars, acc_pars, acc_name, redir_url, 'for GO set to TRUUE if in script' ])
def set_pars_YD(dealer): acc = request.vars.acc h = CAT( DIV( LABEL('Account'),': ', INPUT(_name='acc', _value=acc or ''), ' - если аккаунта еще нет в БД - он добавится', _class='row '), DIV( LABEL('secret_response'),': ', INPUT(_name='secret_response'),' - If setted - will update [pkey] - CLIENT_ID is required too!', BR(), LABEL('CLIENT_ID'),': ', INPUT(_name='CLIENT_ID'),' - надо взять из ЯД - для подключения АПИ: ', A('Регистрация приложения', _href='https://money.yandex.ru/myservices/new.xml', _target='_blank'), BR(), _class='row gold-bgc'), ) secret_response = request.vars.secret_response if dealer and acc: ed_acc = db((db.dealers_accs.dealer_id==dealer.id) & (db.dealers_accs.acc==acc)).select().first() if secret_response: from gluon.contrib import simplejson as js pars = js.dumps({"CLIENT_ID": request.vars.CLIENT_ID, "YM_REDIRECT_URI": "https://"+DOMEN+"/ed_YD/yandex_response", "SCOPE": "account-info operation-history operation-details payment-shop.limit(1,37777) payment-p2p.limit(1,37777)", "secret_response": secret_response}) if ed_acc: ed_acc.update_record(pkey=pars) response.flash = 'updated' else: #ed_acc = db.dealers_accs[ db.dealers_accs.insert(dealer_id=dealer.id, pkey=pars) ] ed_acc = db.dealers_accs[ db.dealers_accs.insert(dealer_id=dealer.id, acc=acc, ecurr_id=request.vars.ecurr, pkey=pars) ] response.flash = 'added for ecurr_id ' + request.vars.ecurr db.commit() if ed_acc: import ed_YD api_pars, acc_pars, acc_name = ed_YD.get_pars(dealer, ed_acc) acc_pars['YM_REDIRECT_URI'] = acc_pars['YM_REDIRECT_URI'] + '/%s' % ed_acc.id ##return BEAUTIFY([api_pars, acc_pars, acc_name]) redir_url = ed_YD.YmOauthRequestToken(api_pars, acc_pars) h += P(A(H3('For get API token - click it!'), _href = redir_url, _target='_blank'), BR()) h += DIV(BEAUTIFY(ed_acc)) return h
def YmTo(): session.forget(response) if len(request.args) < 2: mess = '/[dealer_acc_id]/[deal_id]?acc=ACC&amo=AMO' print mess return mess dealer_acc = db.dealers_accs[request.args(0)] dealer = dealer_acc and db.dealers[dealer_acc.dealer_id] deal = dealer and db.deals[request.args(1)] dealer_deal = deal and db( (db.dealer_deals.deal_id == deal.id) & (db.dealer_deals.dealer_id == dealer.id)).select().first() if not dealer_deal: return 'NOT dealer_deal' acc = request.vars.get('acc', '---???---') sum = request.vars.get('sum', '300.0') pars_in = { # acc_names": ["user", "PROPERTY1", "rapida_param1", "customerNumber", "CustomerNumber"] #'PROPERTY1': acc, u'customerNumber': acc, # SUM_NAMES = ['sum', 'netSum', 'redsum' ] u'sum': sum, u'pattern_id': dealer_deal.scid, } test = log_on = None api_pars, acc_pars, acc_name = ed_YD.get_pars(dealer, dealer_acc) #def YmTo(db, deal, edlr_deal, api_pars, token, acc, amount, acc_name, test=None, log_on=None, pars_in=None): res = ed_YD.YmTo(db, deal, dealer_deal, api_pars, dealer_acc.skey, acc, sum, acc_name, test, log_on, pars_in) return BEAUTIFY({ 'deal': deal.name, 'dealer_acc': dealer_acc.acc, 'pars_in': pars_in, 'res': res })