def get(self, *args, **kwargs): nomtien = kwargs['nom_tien'] token=self.request.get('token') # EC-60U79048BN7719609& if not self.session or not self.session.has_key("ec_token") or not self.session.get("ec_token") == token: self.response.out.write(u"mal en cancelurlHandler url no hay session, token=%s,payerid=%s" % token) return regtra=todosmodelos.Transferencia.query(todosmodelos.Transferencia.token_ec==token).get() if not regtra: self.response.out.write(u"mal en cancelurlhandler url no hay registro transferencia , token=%s" % token) return tienda,tikey=utils.getMemTiendaMulti(nomtien) """nomtien=nomtien.upper() tienda=memcache.get(nomtien+"tienda") tikey=memcache.get(nomtien+"key")""" if not tienda: tien=regtra.tienda.get() if tien: tienda=utils.getTienda(tien,utils.getSegundos()) tikey=tien.key else: tien=ti=todosmodelos.Tienda.query(todosmodelos.Tienda.nombreupper==nomtien).get() if tien: tienda=utils.getTienda(tien,utils.getSegundos()) tikey=tien.key else: self.response.out.write(u"no puedo llamar a tienda cancelurlhandler, token=%s" % token) return tienda["paypal"]["modo"]= regtra.modo pay=tokenPay(tienda,tikey) if not pay.getPaypalToken(): self.response.out.write(u"%s, token=%s" % (pay.error,token)) return #GET /v1/payments/payment/{paymentId} try: result = urlfetch.fetch(url=pay.url_execute + regtra.id_payment, method=urlfetch.GET, headers={ "Authorization": ("Bearer %s" % pay.tienda["paypal"]["access_token"]), "Content-Type": "application/json" },validate_certificate=False) except Exception as e: self.response.out.write(u"exception en hacerPayment: %s" % e.message) return if result.status_code == 200: respujson=json.loads(result.content) if respujson.has_key("state") and respujson["state"] == "canceled": regtra.response_lookup=respujson regtra.estado="canceled" regtra.put() self.response.out.write("ok en cancelurlhandler lookup status 200 content = %s <br> y <p>regtra._id_pay=%s </p>,<p> <br> pay.tienda.acces_token=%s </p>, <p> token=%s </p>" % (respujson,regtra.id_payment, pay.tienda["paypal"]["access_token"],token)) else: self.response.out.write("no state aprobado en return url %s <br> y <p>regtra._id_pay=%s </p>, <p> <br> pay.tienda.acces_token=%s </p>, <p> token=%s </p>" % (respujson,regtra.id_payment,pay.tienda["paypal"]["access_token"],token)) else: self.response.out.write(u"mal en cancelurlhandler lookup paymen status_code %d = %s ,<p> content = %s</p>, token=%s, access_token=%s" % (result.status_code,pay.error_status_code(result),result.content,token,pay.tienda["paypal"]["access_token"]))
def get(self, *args, **kwargs): nomtien = kwargs['nom_tien'] token=self.request.get('token') PayerID=self.request.get('PayerID') if not self.session or not self.session.has_key("ec_token") or not self.session.get("ec_token") == token: self.response.out.write(u"mal en returnpayapl url no hay session, token=%s,payerid=%s" % (token,PayerID)) return regtra=todosmodelos.Transferencia.query(todosmodelos.Transferencia.token_ec==token).get() if not regtra: self.response.out.write(u"mal en returnpayapl url no hay registro transferencia , token=%s,payerid=%s" % (token,PayerID)) return tienda,tikey=utils.getMemTiendaMulti(nomtien) """nomtien=nomtien.upper() tienda=memcache.get(nomtien+"tienda") tikey=memcache.get(nomtien+"key")""" if not tienda: tien=regtra.tienda.get() if tien: tienda=utils.getTienda(tien,utils.getSegundos()) tikey=tien.key else: tien=todosmodelos.Tienda.query(todosmodelos.Tienda.nombreupper==nomtien).get() if tien: tienda=utils.getTienda(tien,utils.getSegundos()) tikey=tien.key else: self.response.out.write(u"no puedo llamar a tienda , token=%s,payerid=%s" % (token,PayerID)) return tienda["paypal"]["modo"]= regtra.modo pay=tokenPay(tienda,tikey) if not pay.getPaypalToken(): self.response.out.write(u"%s, token=%s,payerid=%s" % (pay.error,token,PayerID)) return vaex={ "payer_id":PayerID } try: #Create a payment by constructing a payment object using access token. result = urlfetch.fetch(url=pay.url_execute + regtra.id_payment+"/execute/", payload=json.dumps(vaex), method=urlfetch.POST, headers={ "Authorization": ("Bearer %s" % pay.tienda["paypal"]["access_token"]), "Content-Type": "application/json" },validate_certificate=False) except Exception as e: self.response.out.write(u"exception en hacerPayment: %s" % e.message) return if result.status_code == 200: respujson=json.loads(result.content) if respujson.has_key("state") and respujson["state"] == "approved": regtra.response_executed=respujson regtra.estado="approved" resp=self.env_pago_grab_pedido(2,tikey,regtra) if resp[0]: regtra.reg_pedido=resp[1] self.session["ec_token"]=None self.session["pedido"]=None self.session.pop('pedido') self.session.pop('ec_token') self.response.out.write("ok seha enviado y grabado el pedido, en execute status 200 content = %s <br> y <p>regtra._id_pay=%s </p>, <p> PayerID=%s </p>,<p> <br> pay.tienda.acces_token=%s </p>, <p> token=%s </p>" % (respujson,regtra.id_payment, PayerID,pay.tienda["paypal"]["access_token"],token)) else: self.response.out.write("error respuesta al enviar y grabar=%s, ok en execute status 200 content = %s <br> y <p>regtra._id_pay=%s </p>, <p> PayerID=%s </p>,<p> <br> pay.tienda.acces_token=%s </p>, <p> token=%s </p>" % (resp[1],respujson,regtra.id_payment, PayerID,pay.tienda["paypal"]["access_token"],token)) regtra.put() return #hay que hacer llamada a tienda pasando los datos y que nos de el numero de pedido int(resto["numped"]) #ahora lo hacemos asi numped=1 #grabar pedido pedido=regtra.pedido datped=pedido["datped"] detalle=json.loads(pedido["detallemio"]) lisdet=[] for d in detalle: try: if d["oferta"]: lisdet.append(todosmodelos.Detalle(articulo=d["articulo"],det=d["det"],ofertaid=d["oferta"]["idofer"],ofertadet=d["oferta"],preart=d["oferta"]["precio"])) else: lisdet.append(todosmodelos.Detalle(articulo=d["articulo"],det=d["det"],preart=d["preart"])) except Exception as e: self.response.out.write("Exception en for detalle status 200 content = %s <br> y <p>regtra._id_pay=%s </p>, <p> PayerID=%s </p>,<p> <br> pay.tienda.acces_token=%s </p>, <p> token=%s </p><p> detalle pedido=%s</p> mensage exception=%s" % (respujson,regtra.id_payment, PayerID,pay.tienda["paypal"]["access_token"],token,json.dumps(detalle),e.message)) return if datped["pedidoen"]>1: canom=todosmodelos.CalleNom(nom=datped["callenom"]["nom"],via=datped["callenom"]["via"],num=datped["callenom"]["num"],bloq=datped["callenom"]["bloq"],piso=datped["callenom"]["piso"],esca=datped["callenom"]["esca"],letra=datped["callenom"]["letra"],muni=datped["callenom"]["muni"]) else: canom=None kcli=None if self.session.get('cliente'): kcli=self.session.get('cliente') ped=todosmodelos.Pedido(parent=tikey,pedidoen=datped["pedidoen"],cliente=kcli,numped=numped,telefono=datped["telefono"],callenom=canom,importe=datped["importe"],horapedido=datped["horaped"],horaent=datped["horaent"],comen=datped["comen"],detalle=lisdet,suplemento=regtra.suplemento,pago=2,regpago=regtra.key) okped=ped.put() regtra.response_executed=respujson regtra.estado="approved" txtped="No se ha grabado pedido" if okped: txtped="se ha grabado pedido" regtra.reg_pedido=okped if kcli: kcli.get() nped=kcli.numpedidos+1 kcli.populate(ultimopedido=datped["horaped"],numpedidos=nped) kcli.put() txtped="se ha grabado pedido y se ha grabado cliente" regtra.put() self.response.out.write("ok en execute status 200 content = %s <br> y <p>regtra._id_pay=%s </p>, <p> PayerID=%s </p>,<p> <br> pay.tienda.acces_token=%s </p>, <p> token=%s </p><p> grabado=%s" % (respujson,regtra.id_payment, PayerID,pay.tienda["paypal"]["access_token"],token,txtped)) else: self.response.out.write("no state aprobado en return url %s <br> y <p>egtra._id_pay=%s </p>, <p> PayerID=%s </p>,<p> <br> pay.tienda.acces_token=%s </p>, <p> token=%s </p>" % (respujson,regtra.id_payment, PayerID,pay.tienda["paypal"]["access_token"],token)) #self.datadopay=json.loads(result.content) else: self.response.out.write(u"mal en execute paymen status_code %d = %s, content = %s, token=%s, memtoken=%s,payerid=%s" % (result.status_code,pay.error_status_code(result),result.content,token, memcache.get("access_token"),PayerID))