如何解决PayPal Checkout与智能付款按钮的集成
我目前正在使用PHP框架Codeigniter 4.0.4,并尝试使用智能付款按钮添加PayPal Checkout集成。
我以PayPal API为例,但尝试创建订单时总是收到错误消息。 当我单击PayPal按钮付款时,该窗口将打开1-2秒,然后立即再次关闭。
控制台错误:
Uncaught SyntaxError: Unexpected token < in JSON at position 0
Error: Unexpected token < in JSON at position 0
at $t.error (https://www.paypal.com/sdk/js?client-id=Af6lu4xavdi1_e_hEFLWQxUj48hq0bndx7o3RGgwNWuChHmenioXFLMnTOKt912F6zmftF1Siv9WsfCp&disable-funding=credit,card:2:59754)
at Object.<anonymous> (https://www.paypal.com/sdk/js?client-id=Af6lu4xavdi1_e_hEFLWQxUj48hq0bndx7o3RGgwNWuChHmenioXFLMnTOKt912F6zmftF1Siv9WsfCp&disable-funding=credit,card:2:67521)
at JSON.parse (<anonymous>)
at o (https://www.paypal.com/sdk/js?client-id=Af6lu4xavdi1_e_hEFLWQxUj48hq0bndx7o3RGgwNWuChHmenioXFLMnTOKt912F6zmftF1Siv9WsfCp&disable-funding=credit,card:2:67380)
at cr (https://www.paypal.com/sdk/js?client-id=Af6lu4xavdi1_e_hEFLWQxUj48hq0bndx7o3RGgwNWuChHmenioXFLMnTOKt912F6zmftF1Siv9WsfCp&disable-funding=credit,card:2:67533)
at Cr.u.on (https://www.paypal.com/sdk/js?client-id=Af6lu4xavdi1_e_hEFLWQxUj48hq0bndx7o3RGgwNWuChHmenioXFLMnTOKt912F6zmftF1Siv9WsfCp&disable-funding=credit,card:2:72204)
at Cr (https://www.paypal.com/sdk/js?client-id=Af6lu4xavdi1_e_hEFLWQxUj48hq0bndx7o3RGgwNWuChHmenioXFLMnTOKt912F6zmftF1Siv9WsfCp&disable-funding=credit,card:2:72341)
at https://www.paypal.com/sdk/js?client-id=Af6lu4xavdi1_e_hEFLWQxUj48hq0bndx7o3RGgwNWuChHmenioXFLMnTOKt912F6zmftF1Siv9WsfCp&disable-funding=credit,card:2:78460
at Function.n.try (https://www.paypal.com/sdk/js?client-id=Af6lu4xavdi1_e_hEFLWQxUj48hq0bndx7o3RGgwNWuChHmenioXFLMnTOKt912F6zmftF1Siv9WsfCp&disable-funding=credit,card:2:14069)
at https://www.paypal.com/sdk/js?client-id=Af6lu4xavdi1_e_hEFLWQxUj48hq0bndx7o3RGgwNWuChHmenioXFLMnTOKt912F6zmftF1Siv9WsfCp&disable-funding=credit,card:2:78257
服务器端:
$clientId = getenv('paypal.CLIENT_ID');
$clientSecret = getenv('paypal.CLIENT_SECRET');
$environment = new SandboxEnvironment($clientId,$clientSecret);
$client = new PayPalHttpClient($environment);
$request = new OrdersCreateRequest();
$request->prefer('return=representation');
$request->body = [
"intent" => "CAPTURE","purchase_units" => [[
'reference_id' => '123',"amount" => [
"value" => 10,"currency_code" => "USD"
]
]],"application_context" => [
"cancel_url" => base_url() . "/checkout","return_url" => base_url() . "/checkout"
]
];
try {
$response = $client->execute($request);
return json_encode($response);
} catch (HttpException $ex) {
echo $ex->statusCode;
print_r($ex->getMessage());
}
客户端:
<script type="text/javascript">
paypal.Buttons({
env: 'sandbox',style: {
layout: 'vertical',size: 'responsive',shape: 'pill',color: 'blue',label: 'pay'
},createOrder: function() {
return fetch('/checkout/paypal',{
method: 'post',headers: {
'content-type': 'application/json'
}
}).then(function(response) {
return response.json();
}).then(function(resJson) {
return resJson.result.id;
});
}
}).render('#paypal-button-container');
</script>
解决方法
尝试
<script type="text/javascript">
paypal.Buttons({
env: 'sandbox',style: {
layout: 'vertical',size: 'responsive',shape: 'pill',color: 'blue',label: 'pay'
},createOrder: function() {
return fetch('/checkout/paypal',{
method: 'post',headers: {
'content-type': 'application/json'
}
}).then(function(response) {
console.log(response);
});
}
}).render('#paypal-button-container');
</script>
控制台上会返回什么
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。