def transaction(): #Assigns to the previously defined form class form = TransactionForm(request.form) # Takes the hashed value of the provided private key if request.method == "POST" and form.validate(): private_key_hash = hasher.sha1( form.private_key.data.encode('utf-8')).hexdigest() # checks whether the owner of the car and the vendor matches if all_owners()[form.car.data] != form.vendor.data: flash( "You are not owning a car with this ID. A transaction is therefore not possible", "danger") # Checks whether the hasehd private key in the db and the provided private key match if all_loggins()[form.vendor.data] != private_key_hash: flash( "The secret key you typed in does not match with your profil", "danger") else: next_id = check_id() + 1 hash_block = block(next_id, [ form.vendor.data, form.buyer.data, form.car.data, form.private_key.data ], previous_hash()).hash data = db(next_id, form.vendor.data, form.buyer.data, form.car.data, private_key_hash, 0, 0, hash_block, 0, 0, 0) data.trans_db() return render_template('transaction.html', form=form)
def add_transaction(): transaction_dict = request.json form = TransactionForm(**transaction_dict) if form.validate(): wallet = Wallet(key) transaction = Transaction(outputs=[(PrivateKey( transaction_dict['receiver']).public_key().to_bytes(), transaction_dict['amount'])]) signed_transaction = wallet.sign(transaction) transactionPool.receive_transaction(blockchain, signed_transaction) return '' return '', 403
def add_transaction(): form = TransactionForm(request.form) team_id = form.team_id.data drop_player = form.drop_player.data add_player = form.add_player.data if form.validate(): transaction = Transaction(drop_player=drop_player, add_player=add_player, team_id=team_id, status=Transaction.Status.PENDING) db.session.add(transaction) db.session.commit() return jsonify({}), 200, {} return jsonify({}), 404, {}
def add_trans(): print (str(session['email']),'is on add_trans') email = session['email'] form = TransactionForm() form.account.choices = [(a.name,a.name) for a in Accounts.query.filter_by(email=email).order_by(Accounts.name)] form.category.choices = [(c.name,c.name) for c in Categories.query.filter_by(email=email).order_by(Categories.name)] form.goal.choices = [(g.description,g.description) for g in Goals.query.filter_by(email=email).order_by(Goals.description)] if request.method == 'POST': if form.validate() == False: print ("validate failed: ",session['email'], form.account.data, form.category.data, form.notes.data, form.amount.data) return render_template('addtrans.html', form=form) else: newtrans = Transactions(str(session['email']), str(form.account.data), str(form.category.data), str(form.goal.data), today, str(form.notes.data), float(form.amount.data)) print ("validated Transaction data: ", session['email'], form.account.data, form.category.data, str(today), form.notes.data, form.amount.data) db_session.add(newtrans) db_session.commit() flash('You created a new transaction.') print (str(session['email']),'has successfully added a new transaction') return redirect('/home/',) print ("submit failed: ",session['email'], form.account.data, form.category.data, today, form.notes.data, form.amount.data) return render_template('addtrans.html', form=form)
def transaction(): form = TransactionForm() if request.method == 'POST': if form.validate()==False: flash('Preencha todos os campos') return render_template('transaction.html', form=form) else: #Para capturar o conteúdo dos campos str(form.name.data) #Captura dos dados digitados e envio para o endpoint da pagar.me params = { "amount": int(int(form.amount.data)*100), #Valor da transação em centavos "card_number": str(form.card_number.data), #Número do cartão de crédito "card_cvv": str(form.card_cvv.data), #Código de segurança do cartão de crédito "card_expiration_date": str(form.card_expiration_date.data), #Data de expiração do cartão (somente números) "card_holder_name": str(form.card_holder_name.data), #Nome do titular do cartão "customer": { #Informações do cliente "external_id": "#0001", "name": str(form.name.data), "type": "individual", "country": str(form.country.data), "email": str(form.email.data), "documents": [ #Documento do cliente (necessário para o antifraude) { "type": "cpf", "number": str(form.cpf.data) } ], "phone_numbers": ["+5511999998888"], "birthday": "1984-12-03" }, "billing": { #Informações da cobrança (Obrigatório com antifraude) "name": "Capsule Corp", #Entidade de cobrança "address": { #Endereço de cobrança "country": "jp", "state": "Chiyoda", "city": "Tokyo", "neighborhood": "Shogakukan", "street": "Jinbo Cho", "street_number": "3-13", "zipcode": "1000001" } }, "shipping": { #Informações de envio para bens físicos "name": "Capsule Corp", #Entidade de cobrança "fee": "1000", #Custo do envio "delivery_date": "2019-01-14", #Data de entrega no formato YYYY-MM-DD "expedited": True, #Entrega expressa (true or false) "address": { #Endereço de envio "country": str(form.scountry.data), "state": str(form.state.data), "city": str(form.city.data), "neighborhood": str(form.neighborhood.data), "street": str(form.street.data), "street_number": str(form.street_number.data), "zipcode": str(form.zipcode.data) } }, "items": [ #Informações do itens comprados { "id": "c123", #SKU (Unidade de manutenção de estoque) ou número de identificação da loja "title": "Nuvem voadora", #Nome do item vendido "unit_price": int(int(form.amount.data)*100), #Preço unitário "quantity": "1", #Quantidade "tangible": True #Bem tangivel (true or false) } ], #https://docs.pagar.me/v3/docs/split-rules "split_rules": [ #Informações de dois recebedores (split_rule) { "recipient_id": "re_cjqmnxj8o002ywv6e3guj9zbj", #Id do recebedor "percentage": 50, #Porcentagem da transação que irá pro recebedor (Sempre valores redondos 40, 50, 60, etc) pode ser substituído por amount "liable": True, #Se assume os riscos de chargeback (ao menos um deve estar como true) "charge_processing_fee": True #Se será cobrado pelas taxas de transação (ao menos um deve estar como true) },{ "recipient_id": "re_cjq867x4m01fl2p6dq9i32ttf", "percentage": 50, "liable": True, #Está errado na documentação, o true está minúsculo "charge_processing_fee": True #Está errado na documentação, o true está minúsculo } ] } try: transaction = pagarme.transaction.create(params) except: return render_template('transaction-fail.html', form=form) #Fim da interação com a API da Pagar.me return render_template('transaction-complete.html', form=form) elif request.method == 'GET': return render_template('transaction.html', form=form)