使用PHP并使用来自SDKs and Downloads: Simplify Integrations with Downloads and SDKs的名称-值对接口PayPal源代码。
我的问题类似于"Removing (or prefilling) the address details for PayPal Express Checkout“,但我根本不想要运费/地址或任何与运费相关的东西。
我将所有的送货细节保存在我的系统上(甚至有时送货甚至不适用,而且没有任何费用),我只想让用户通过PayPal支付,而不需要送货地址和送货费用。
如何禁用结帐的发货部分?
发布于 2010-12-10 06:16:58
如果您使用的是较新的API,则还可以传递NOSHIPPING=1 (而不是no_shipping)
有关SetExpressCheckout的所有可能参数的更多详细信息,请访问:
或在新的REST API中查找Payment experience
发布于 2020-05-21 03:57:01
对于其他正在寻找它的人来说,因为PayPals文档太棒了(咳,咳)。
不需要web体验配置文件!
将REST API V2与Javascript/JQuery结合使用,并关闭订单的"Ship To“,以下是正确的代码示例:
createOrder: function(data, actions) {
$('#paypalmsg').html('<b>' + 'WAITING ON AUTHORIZATION TO RETURN...' + '</b>');
$('#chkoutmsg').hide()
return actions.order.create({
purchase_units: [{
description: 'GnG Order',
amount: {
value: cartTotal
}
}],
application_context: {
shipping_preference: 'NO_SHIPPING'
}
});
},
发布于 2017-12-01 23:07:16
当前的正确答案是depracated。要修复新的应用程序接口中的问题,我们应该创建支付web体验配置文件资源与所需的参数,并将其附加到request Payment。
PHP中的示例:
/** Note: Define some variables yourself. */
$inputFields = new InputFields();
$inputFields->setAllowNote(true)
->setNoShipping(1) // Important step
->setAddressOverride(0);
$webProfile = new WebProfile();
$webProfile->setName(uniqid())
->setInputFields($inputFields)
->setTemporary(true);
$createProfile = $webProfile->create($apiContext);
$payment = new Payment();
$payment->setPayer($payer);
$payment->setIntent($intent);
$payment->setRedirectUrls($redirectUrls)
$payment->setTransactions(array($transaction));
$payment->setExperienceProfileId($createProfile->getId()); // Important step.
$payment->create($apiContext);
if ($payment->getState() === "created") {
$approvalLink = $payment->getApprovalLink()
header("Location: $approvalLink"); // Redirects user to PayPal page.
}
注意:您可以通过以下链接找到上面使用的所有类:https://github.com/paypal/PayPal-PHP-SDK/tree/master/lib/PayPal/Api
https://stackoverflow.com/questions/4283251
复制相似问题