我一直在尝试在我的网站上实施PayPal快速结帐。 到目前为止,付款已经可以处理,完成后,用户将被重定向到另一个脚本来完成付款。
但是,每次发出的付款都只是被“授权”了。我想立即收款。
我已经尝试过搜索如何收取款项,并且遇到了curl选项。 但是,要做到这一点,我需要用户在电子邮件中收到的交易代码,并可以在其帐户概览中查看。
Braintree的结果对象不包含此代码。我只能访问paymentCode,paymentID,payerID和唯一交易ID,而不能访问该交易代码。
这是我正在使用的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帐户有问题?
致谢