Esempio n. 1
0
	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"]))
Esempio n. 2
0
	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))