-
Conteúdo Similar
-
Por Claudia França
Prezados há dias consegui chegar no fim do projeto e, agora resta apenas corrigir o erro que ocorro no fim da transação. "Atualizar informações de pagamento. "
Eu tenho aqui a doc. Mas não seu exatamente o que alterar no código para corrigir isso. E preciso de ajuda,
https://www.userede.com.br/desenvolvedores/pt/produto/e-Rede#documentacao-3ds
function updatePaymentAPI($apikey, $secret, $callid, $currencyCode,$total, $subtal){
$time = time();
$query_string = "apikey=".$apikey;
$resource = "payment/info/".$callid;
$body = "{\"updateInfo\":[{\"payInfo\":{\"reason\":\"ProductionKey Test\",
\"avsResponseCode\":\"Y\",\"total\":".$total.",\"currencyCode\":\"".$currencyCode."\",
\"eventStatus\":\"Success\",\"eventType\":\"Authorize\"}},{\"orderInfo\":{\"currencyCode\":\"".$currencyCode."\",
\"discount\":0,\"eventType\":\"Confirm\",\"giftWrap\":0,\"misc\":0,
\"reason\":\"Order_placed\",\"shippingHandling\":0,\"subtotal\":".$subtal.",\"tax\":0,\"total\":".$total."}}]}";
$certificatePath = 'cert.pem';
$privateKey = 'key_9e082920-8ec4-441a-8cfa-588b0829d326.pem';
//Hash for x-pay-token
$token = $time.$resource.$query_string.$body;
$hashtoken = "xv2:".$time.":".hash_hmac('sha256', $token, $secret); //X-PAY-TOKEN String
//$url = "https://api.visa.com/wallet-services-web/".$resource."?".$query_string;
$url = "https://api.visa.com/wallet-services-web/".$resource."?".$query_string;
updatePaymentLog("=========================================\n\n");
updatePaymentLog("CallID : ".$callid."\n");
updatePaymentLog("URL : ".$url."\n\n");
updatePaymentLog("Update Payment Request Parameters : \n");
updatePaymentLog($body);
//Header
$header = (array("X-PAY-TOKEN: ".$hashtoken, "Accept: application/json", "Content-Type: application/json","X-FRAME-OPTIONS: SAMEORIGIN"));
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSLVERSION , 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
//curl_setopt($ch, CURLOPT_SSLCERT, $certificatePath);
//curl_setopt($ch, CURLOPT_SSLKEY, $privateKey);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS,$body);
//getting response from server
$response = curl_exec($ch);
if(!$response) {
die('Error: "' . curl_error($ch) . '" - Code: ' . curl_errno($ch));
}
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$json = "";
$ret = array(
'status' =>"",
'data' => ""
);
if($statusCode == 200) { //If success => empty Object.
$ret['status'] = 'success';
updatePaymentLog("\nUpdate Payment Info called Successfully...\n");
}else{ // Return Error Object
$ret['status'] = 'fail';
$ret['data'] = $response;
updatePaymentLog("\nSomething Went Wrong....\n");
$json = json_decode($response);
$json = json_encode($json, JSON_PRETTY_PRINT);
}
updatePaymentLog("\nStatus Code : " . $statusCode ."\n");
updatePaymentLog($json);
updatePaymentLog("\n");
echo json_encode($ret);
}
updatePaymentAPI($visaApiKey, $sharedSecret, $callid, $currencyCode, $total, $subtotal);
?>
-
Por Claudia França
Pessoal estou com um problema para homologar um pagamento service.
o resultado do Status deve ser sucessfull.
Parte do codido do index.
"
$('#payButton').one('click', function(){
var amount = $('input[name=amount]').val();
var currency = $('[name=currency]').val();
console.log(amount, currency);
V.init( {
apikey: '<?php echo $visaApiKey ?>',
settings: {
//logoUrl: 'https://www.novachance.org.br/wp-content/uploads/2018/06/xLogo_INC.jpg.pagespeed.ic.QrM-Azm3n5.jpg',
locale: 'en_US',
displayName: 'Viva a Musica',
websiteUrl: 'https://www.vivaamusica.org.br',
customerSupportUrl: 'https://www.vivaamusica.org.br/contato',
dataLevel: 'FULL'
},
paymentRequest: {
currencyCode: currency,
total: amount,
merchantRequestId: 'you can send any value to API ang get it in callback',
orderId: 'you can send any value to API ang get it in callback',
description: 'any order description if needs'
}
});
V.on('payment.success', function(payment) {
console.log('Visa success:', JSON.stringify(payment));
$('#succesOverlay').show();
$.ajax({
type: 'POST',
url: 'mailer.php',
data: {json: JSON.stringify(payment)},
dataType: 'json',
success: function(data){
console.log('Ajax success');
console.log(data);
location = 'thanks.php';
},
error: function(jqXHR, textStatus, errorThrown) {
console.log('Ajax error:');
console.log(textStatus, errorThrown);
}
});
});
V.on('payment.cancel', function(payment){
console.log('Canceled:', payment);
});
V.on('payment.error', function(payment, error){
console.log('Visa error:', payment, error);
});
$('.v-button').click();
})
"
Chamada Json
"
"Customer": {
"Name": "[$userFullName]"
},
"Payment": {
"ServiceTaxAmount": 0,
"Installments": 1,
"Interest": 0,
"Capture": false,
"Authenticate": false,
"Recurrent": false,
"CreditCard": {
"CardNumber": "453211******1521",
"Holder": "Gama Gama",
"ExpirationDate": "08/2020",
"SaveCard": false,
"Brand": "Visa"
},
"Tid": "0319040817883",
"ProofOfSale": "817883",
"AuthorizationCode": "027795",
"Wallet": {
"Type": "VisaCheckout",
"WalletKey": "1140814777695873901",
"Eci": 0
},
"SoftDescriptor": "123456789ABCD",
"Amount": 100,
"ReceivedDate": "2018-03-19 16:08:16",
"Status": "eventStatus",
"IsSplitted": false,
"ReturnMessage": "Operation Successful",
"ReturnCode": "4",
"PaymentId": "e57b09eb-475b-44b6-ac71-01b9b82f2491",
"Type": "CreditCard",
"Currency": "BRL","en_US",
"Country": "BRA","USA",
"updateInfo": {
"payInfo": {
"reason": "Pagamento","Payment",
"avsResponseCode": "Y",
"Amount": 91.00,
"currencyCode": "USD",
"eventStatus": "Success",
"eventType": "Authorize",
"PaymentId": "e57b09eb-475b-44b6-ac71-01b9b82f2491",
}
}
}
}
{
"
O pessoal da empresa me fala que tenho que enviar o CallID gerado ( não sei como faço isso) e fazer a chamado do alteração de evento quando a transação for sucesso.
Pensei em criar um aquivo payment.php mas pelo que li no manual necessariamente, não eh necessário.
-
Por Wil_sf
Olá pessoal. Estou desenvolvendo um pequeno site de vendas(apenas para aprendizagem, nada comercial) e me deparei com uma dúvida que está tirando meu sono kkk
Fiz um esquema para que os produtos posam ser cadastrados e apareçam em uma pagina para a exibição, porém gostaria que quando o cliente clicasse na foto do produto seria aberta uma pagina com as descrições e detalhes do produto(da mesma forma que o Mercado Livre ou outro site de E-commerce).
<table cellpadding="8" cellspacing="5" border="0" width="100%">
<tr>
<?php
$loopH = 3;
$sql = "SELECT id, produto, preco, descricao, foto FROM postagem";
$dados=mysqli_query($con, $sql);
$linha = mysqli_fetch_assoc($dados);
$total = mysqli_num_rows($dados);
$x = 1;
if($total > 0){
while($linha = mysqli_fetch_assoc($dados)){
if($x < $loopH){
$linha = $id[4];
$x++;
?>
<td align="center" varign="top">
<a href="descricao_L.php"><img src="_imagens-posts/<?php echo $linha['foto']; ?>" width="365px" height="365px">
<h3> <?php echo $linha['produto'] ?> </h3>
<h4>R$: <?php echo $linha['preco'] ?></h4>
</a>
</td>
<?php }elseif($x = $loopH){
?>
<td align="center" varign="top">
<a href="descricao_L.php?perfil=$id"><img src="_imagens-posts/<?php echo $linha['foto']; ?>" width="365px" height="365px">
<h3> <?php echo $linha['produto'] ?> </h3>
<h4>R$: <?php echo $linha['preco'] ?></h4>
</a>
</td>
</tr>
<tr>
<?php $i = 0 ?>
<?php }}} ?>
</tr>
</table>
este é a tabela onde os produtos são exibidos(e apesar do código estar horrível essa parte está funcionando perfeitamente haha). bom, gostaria que alguém me desse uma luz, não sei o que devo fazer.
Desde já, obrigado a todos do fórum.
-
Por webChaos
Olá, amigos, boa noite.
Uma pergunta para quem já trabalha utilizando DevOps:
Se vocês fossem começar hoje a aprender DevOps, qual ordem de coisas vocês aprenderiam, metodologias e programas utilizariam?
Iniciando do zero ao avançado em DevOps mesmo.
Obrigado!
-
Por clusher_lost
Olá devs gostaria de saber se conhecem algum método de eu conseguir editar e testar um modificação no meu código JavaScript pelo próprio navegador sem mexer no fonte já testei o fire bug e nao deu certo conhecem algum outro método ?
-