我有以下情况:我的页面上有不同的付款选项。首先你选择一种方法,点击贝宝按钮后什么也不会发生。只有当您单击“订购和支付”按钮时,它才会运行“贝宝”按钮的行为,并打开“贝宝”对话框。
我的第一个想法是使用标准的贝宝按钮并将其存储在隐藏字段中。 通过单击 my-paypal-按钮,我加载 paypal-脚本,如下所示:
var wasLoaded = false;
function loadScript() {
if(wasLoaded) return;
wasLoaded = true;
var script = document.createElement('script');
script.type = 'text/javascript';
document.body.appendChild(script);
script.onload = function() {
paypal.Buttons({
// Set up the transaction
createOrder: function(data, actions) {
return actions.order.create({
purchase_units: [{
amount: {
value: '88.44'
}
}]
});
}, ...
load it to a hidden div.
}
script.src = 'https://www.paypal.com/sdk/js?client-id=SD&intent=capture&vault=false&commit=true';
}
将其加载到隐藏的 div 中。 通过单击“订单和付款”,我可以使用“button.click()”来执行“paypal-stuff”。 但不幸的是,papypal 的东西在 iframe 中,所以我无权访问它。
我在贝宝规范中找不到任何提示。他们不会总是使用那里的按钮。 我怎样才能实现这种方法?
如果您已经创建了一个按钮,我只需使用 PHP 生成的链接:
如果用户点击它,该用户将被重定向到 PayPal 页面 -> 在 paypal 上购买 -> 重定向到您的页面。
为此目的,我推荐 PayPal PHP Api:PayPal PHP Api
第 1 步: 要使您的库正常工作,请下载并安装 Paypal Api 并从该代码开始:
<?php
// 1. Autoload the SDK Package. This will include all the files and classes to your autoloader
// Used for composer based installation
require __DIR__ . '/vendor/autoload.php';
// Use below for direct download installation
require __DIR__ . '/PayPal-PHP-SDK/autoload.php';
第 2 步: 您需要设置 PayPay ClientID 和 Secret:
// After Step 1
$apiContext = new \PayPal\Rest\ApiContext(
new \PayPal\Auth\OAuthTokenCredential(
'AYSq3RDGsmBLJE-otTkBtM-jBRd1TCQwFf9RGfwddNXWz0uFU9ztymylOhRS', // ClientID
'EGnHDxD_qRPdaLdZz8iCr8N7_MzF-YHPTkjs6NKYQvQSBngp4PTTVWkPZRbL' // ClientSecret
)
);
第 3 步: 使用代码为您的按钮生成链接。您可以使用 Paypal Api 示例页面中的代码示例此处
我会向您推荐代码示例:“PayPal Payments - 类似于经典 API 中的 Express Checkout”
我知道也许有更好的方法在网页上实现贝宝按钮,但这对我来说效果最好。
请参考下面的服务器端API链接,它将帮助您实现服务器端支付集成,而无需PayPal客户端侧按钮。
https://developer.paypal.com/docs/business/checkout/server-side-api-calls/
如果您有任何疑问,请随时告诉我,我也很乐意分享邮递员集合来使用 API。