支付事件如何附加到 JS SDK 中的独立 PayPal 按钮与呈现所有可用的支付按钮?

How are the payment events attached to standalone PayPal button in the JS SDK versus rendering all available payment buttons?

我正在从具有多个屏幕的复制粘贴代码的简单 paypal 按钮过渡到它们的 JS SDK,其中可以为每个按钮配置税收和运输选项。只要 paypal.Buttons({...}).render('#paypal-button-container'); 设置用于显示所有可用的支付按钮,我就可以在沙箱中使用它。这一切都在客户端;不从服务器处理它。

当我尝试使用这些 paypal instructions 中描述的方法来限制资金来源时,呈现了正确的按钮,但它们不再与事件相关联。沙盒中的每次测试购买仅需一分钱。如果返回代码以呈现所有 paypal 按钮,则一切正常。

我敢肯定这是一个愚蠢的问题,因为我使用的是相同的 paypal.Buttons({...}).render('#paypal-button-container'); 方法,只是没有 .render('#paypal-button-container') 然后添加下面的代码。

请您解释一下FUNDING_SOURCES数组中每个按钮分别处理时如何获取添加的事件代码?我只尝试了两个:[paypal.FUNDING.PAYPAL, paypal.FUNDING.CARD].forEach( function (fundingSource) {...

谢谢。顺便说一下,我知道 paypal 建议显示所有可用的资金选项,但只有一种产品,而且价格很低;因此,在这种情况下,延期付款选项有点荒谬。谢谢。

// Loop over each funding source/payment method

FUNDING_SOURCES.forEach(function(fundingSource) {
    // Initialize the buttons
    var button = paypal.Buttons({
        fundingSource: fundingSource
    });

    // Check if the button is eligible
    if (button.isEligible()) {
        // Render the standalone button for that funding source
        button.render('#paypal-button-container');
    }
});

希望我正确理解了您的问题。否则请改写...

最好不要在选项中循环,而是在脚本初始化中启用您需要的/禁用您不需要的。

https://developer.paypal.com/sdk/js/configuration/

所有参数都列在“query parameters”下。

你需要的是 disable-funding / enable-funding.

可以使用 SDK 行 disable-funding,正如其他答案提到的那样,但如果您不使用独立按钮,则未明确禁用的内容始终有可能显示为按钮之一。

真正的独立按钮意味着明确指定资金来源,这是您问题中的这部分代码。

    paypal.Buttons({
        fundingSource: fundingSource
    });

现在解决你的问题:为了“将按钮连接到事件”,该部分需要扩展——基本上你需要一个 createOrder 和 onApprove,以及你想要的任何其他 JSDK 回调要使用的那个按钮;否则,您只会获得按钮的默认 0.01 演示行为。

有关应包含在 paypal.Buttons 调用中的所有代码的完整示例,请参阅 https://developer.paypal.com/demo/checkout/#/pattern/server(服务器或 client-only 版本)


无论如何,更具体到您的用例:

By the way, I know that paypal recommended showing every available funding option but there is only one product and it is very nominally priced; so, the deferred payment options are a bit ridiculous in this case. Thank you.

如果您真正想要完成的只是禁用稍后付款和 PayPal Credit,&disable-funding=credit 就足够了,您不需要呈现独立按钮。