Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Galera, boa tarde. Implementando ainda o pagamento via MoIP (estou ainda estudando a api sem ser a transparente), tenho o seguinte:
<?php
include_once "moip/autoload.inc.php";
$moip = new Moip();
$moip->setEnvironment('test');
$moip->setCredential(array(
'key' => 'MINHA_KEY',
'token' => 'MEU_TOKEN'
));
$moip->setUniqueID(false);
$moip->setValue($valor_mensal * $num_emp);
$moip->setReason('Pagamento de Mensalidade');
$moip->setPayer(array('name' => $nome_completo,
'email' => $email,
'payerId' => $id_logado,
'billingAddress' => array('address' => $end,
'number' => '' ,
'complement' => 'z' ,
'city' => $cidade,
'neighborhood' => $bairro,
'state' => $estado,
'country' => 'BRA',
'zipCode' => $cep,
'phone' => $tel)));
$moip->validate('Identification');
$moip->send();
//print_r($moip->getAnswer());
$response = $moip->getAnswer()->payment_url;
?>
Toda vez que abro a página, ele executa esse comando e gera o link de pagamento, que recebo nesse botão:
<form method="post" action="<? echo $response ?>">
<input type="submit" name="pagar" value="Gerar Pagamento" class="btn btn-success btn-group-lg" />
</form>
Funciona perfeitamente.
Mas, se eu transformar o comando PHP em função:
<?php
include_once "moip/autoload.inc.php";
function gerar_pag() {
...
}
?>
Como faço para o botão executar a função?
Você terá que fazer a requisição com ajax.
ESerra, eu vi uns exemplos, mas não queria usar Ajax, só em último caso.
Landerson, fiz assim mas não está redirecionando:
<?php
include_once "moip/autoload.inc.php";
function gerar_pag(){
$moip = new Moip();
$moip->setEnvironment('test');
$moip->setCredential(array(
'key' => 'MINHA_KEY',
'token' => 'MEU_TOKEN'
));
$moip->setUniqueID(false);
$moip->setValue($valor_mensal * $num_emp);
$moip->setReason('Pagamento de Mensalidade');
$moip->setPayer(array('name' => $nome_completo,
'email' => $email,
'payerId' => $id_logado,
'billingAddress' => array('address' => $end,
'number' => '' ,
'complement' => '' ,
'city' => $cidade,
'neighborhood' => $bairro,
'state' => $estado,
'country' => 'BRA',
'zipCode' => $cep,
'phone' => $tel)));
$moip->validate('Identification');
$moip->send();
//print_r($moip->getAnswer());
$response = $moip->getAnswer()->payment_url;
header("Location:$response");
}
?>
<?
$Post = filter_input(INPUT_POST, 'pagar');
if($Post):
gerar_pag();
endif;
?>
<form method="post">
<input type="submit" name="pagar" value="Gerar Pagamento" class="btn btn-success btn-group-lg" />
</form>Só pra constar não precisa do:
?>
<?
Mude seu form:
<form action="" method="post">
<input type="submit" name="pagar" value="Gerar Pagamento" class="btn btn-success btn-group-lg" />
</form>Landerson, também não funcionou. Ele não redireciona.
Talvez isso possa ajudar:
<form method="post" action="submit.php">
<input name="pagar" type="submit" value="Gerar Pagamento" class="btn btn-success btn-group-lg"/>
</form>
PHP:
<?php
if(isset($_POST['pagar']){
gerar_pag()
}else{
outraFuncao();
}
?>
Talvez você precise editar um pouco, mas acredito que seja essa a lógica :ph34r:
Descobri porque não estava redirecionando. Está dando esse erro:
Error: The following data required were not informed: [name] [email] [payerId] [address] [neighborhood] [city] [state] [zipCode] [phone] .
Quando ele se torna uma função, não consigo exibir os dados do select?
Ele esta chamando a função sem passar os dados preenchidos. Experimente editar sua função pra pegar o valor preenchido nos inputs
Os valores já estão nas variáveis. Vou dar uma pesquisada!
Consegui! =)
<?php
include_once "moip/autoload.inc.php";
function gerar_pag(){
global $nome_completo, $email, $valor_mensal, $num_emp, $id_logado, $end, $cidade, $bairro, $estado, $cep, $tel;
Obrigado pela ajuda Gremendes, ESerra e Landerson!
Ou:
$Post = filter_input(INPUT_POST, 'pagar');
if($Post):