Я пытался внедрить экспресс-оплату PayPal на моем веб-сайте.Пока что платежи могут быть обработаны, и по завершении пользователь перенаправляется на другой сценарий для завершения платежа.
Однако каждый производимый платеж просто «авторизуется».Я хотел бы получить платеж немедленно.
Я уже попробовал поискать способы получения платежей, и наткнулся на эту возможность.Однако для этого мне нужен код транзакции, который пользователь получает в своем электронном письме и может просмотреть в обзоре своего аккаунта.
Объекты результатов Braintree не включают этот код.У меня есть доступ только к коду paymentCode, paymentID, payerID и уникальному идентификатору транзакции, но не к этому коду транзакции.
Это код CURL, который я использую:
$postdata='{
"amount":{
"currency":"EUR",
"total":"'.$_POST['amount'].'"
},
"is_final_capture":true
}';
$postdatafileh=tmpfile();
fwrite($postdatafileh,$postdata);
rewind($postdatafileh);
$ch=curl_init();
curl_setopt_array($ch,array(
CURLOPT_URL=>'https://api.paypal.com/v1/payments/authorization/$auth_id/capture',
CURLOPT_HTTPHEADER=>array(
'Content-Type: application/json',
'Authorization: Bearer $auth_token',
'Content-Length: '.strlen($postdata)
),
CURLOPT_INFILE=>$postdatafileh,
CURLOPT_INFILESIZE=>strlen($postdata),
CURLOPT_VERBOSE=>true,
CURLOPT_SSL_VERIFYPEER=>false,
CURLOPT_ENCODING=>'',
CURLOPT_POST=>true
));
$ret=curl_exec($ch);
fclose($postdatafileh);
print_r($ret);
Это кодэто было опубликовано в stackoverflow.
Теперь вот проблема: $ auth_id должен быть этот код транзакции.
Для справки, это код для генерации кнопки:
$clientToken = $gateway->clientToken()->generate();
echo '<div id="pp_button"></div>
<!-- Load the required checkout.js script -->
<script src="https://www.paypalobjects.com/api/checkout.js" data-version-4></script>
<!-- Load the required Braintree components. -->
<script src="https://js.braintreegateway.com/web/3.39.0/js/client.min.js"></script>
<script src="https://js.braintreegateway.com/web/3.39.0/js/paypal-checkout.min.js"></script>
<script>
paypal.Button.render({
braintree: braintree,
client: {
production: \''.$clientToken.'\',
sandbox: \''.$clientToken.'\'
},
env: \'production\',
commit : true,
intent: "sale",
payment: function (data, actions) {
return actions.braintree.create({
flow: \'checkout\', // Required
//amount: '.DB_ProductGetPrice($_GET['v'],$_GET['t']).', // Required
amount: 0.01,
currency: \'EUR\', // Required
enableShippingAddress: false,
options : {
submitForSettlement: true
}
});
},
onAuthorize: function (data,actions) {
return actions.payment.get().then(function(paymentDetails){
return actions.payment.execute().then(function(){
var formData = {
//amount : "'.DB_ProductGetPrice($_GET['v'],$_GET['t']).'",
amount : 0.01,
nonce : data.nonce
}
$.ajax ({
method : "POST",
data : formData,
url : "./src/auth/completeorder.php"
}).done(function(data){
$("#pp_button").html(data);
});
})
});
},
onError: function(data) {
console.log(data);
}
}, \'#pp_button\');
</script>';
Может быть, я что-то там забыл
У кого-нибудь есть идеи о том, как получить указанный код транзакции?Или платеж разрешен только для моей учетной записи PayPal?
С уважением