예제 #1
0
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)
예제 #2
0
 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, {}
예제 #4
0
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)
예제 #5
0
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)