-
Notifications
You must be signed in to change notification settings - Fork 9
/
retorno.php
65 lines (53 loc) · 2.19 KB
/
retorno.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?php
//URL: http://127.0.0.1/paypal/retorno.php
if ( isset( $_GET[ 'token' ] ) ) {
$token = $_GET[ 'token' ];
$nvp = array(
'TOKEN' => $token,
'METHOD' => 'GetExpressCheckoutDetails',
'VERSION' => '84',
'PWD' => 'xxxx',
'USER' => '[email protected]',
'SIGNATURE' => 'ASSINATURA'
);
$curl = curl_init();
curl_setopt( $curl , CURLOPT_URL , 'https://api-3t.paypal.com/nvp' ); //Link para ambiente de teste: https://api-3t.sandbox.paypal.com/nvp
curl_setopt( $curl , CURLOPT_SSL_VERIFYPEER , false );
curl_setopt( $curl , CURLOPT_RETURNTRANSFER , 1 );
curl_setopt( $curl , CURLOPT_POST , 1 );
curl_setopt( $curl , CURLOPT_POSTFIELDS , http_build_query( $nvp ) );
$response = urldecode( curl_exec( $curl ) );
$responseNvp = array();
if ( preg_match_all( '/(?<name>[^\=]+)\=(?<value>[^&]+)&?/' , $response , $matches ) ) {
foreach ( $matches[ 'name' ] as $offset => $name ) {
$responseNvp[ $name ] = $matches[ 'value' ][ $offset ];
}
}
if ( isset( $responseNvp[ 'TOKEN' ] ) && isset( $responseNvp[ 'ACK' ] ) ) {
if ( $responseNvp[ 'TOKEN' ] == $token && $responseNvp[ 'ACK' ] == 'Success' ) {
$nvp[ 'PAYERID' ] = $responseNvp[ 'PAYERID' ];
$nvp[ 'PAYMENTREQUEST_0_AMT' ] = $responseNvp[ 'PAYMENTREQUEST_0_AMT' ];
$nvp[ 'PAYMENTREQUEST_0_CURRENCYCODE' ] = $responseNvp[ 'PAYMENTREQUEST_0_CURRENCYCODE' ];
$nvp[ 'METHOD' ] = 'DoExpressCheckoutPayment';
$nvp[ 'PAYMENTREQUEST_0_PAYMENTACTION' ] = 'Sale';
curl_setopt( $curl , CURLOPT_POSTFIELDS , http_build_query( $nvp ) );
$response = urldecode( curl_exec( $curl ) );
$responseNvp = array();
if ( preg_match_all( '/(?<name>[^\=]+)\=(?<value>[^&]+)&?/' , $response , $matches ) ) {
foreach ( $matches[ 'name' ] as $offset => $name ) {
$responseNvp[ $name ] = $matches[ 'value' ][ $offset ];
}
}
if ( $responseNvp[ 'PAYMENTINFO_0_PAYMENTSTATUS' ] == 'Completed' ) {
echo 'Parabéns, sua compra foi concluída com sucesso';
} else {
echo 'Não foi possível concluir a transação';
}
} else {
echo 'Não foi possível concluir a transação';
}
} else {
echo 'Não foi possível concluir a transação';
}
curl_close( $curl );
}