使用PayPal API并使用SDKs and Downloads: Simplify Integrations with Downloads and SDKs中的名称 - 值对接口PHP源代码。
我的问题类似于“Removing (or prefilling) the address details for PayPal Express Checkout”,但我不想要运费或地址或任何与运费相关的内容。
我保留了我的系统上的所有运输详情(即使有时甚至没有运费也没有收费)我只希望用户通过PayPal付款而不收取运费和运费。
如何禁用结帐的送货部分?
答案 0 :(得分:29)
如果您使用较新的API,也可以传递NOSHIPPING = 1(不是no_shipping)
此处有关SetExpressCheckout所有可能参数的更多详细信息:
或在新REST API中查找Payment experience
答案 1 :(得分:14)
Hey Ergec,只需传递no_shipping
参数,其值为1
。
来自PayPal的documentation:
no_shipping Do not prompt payers for shipping address. Allowable values: 0 – prompt for an address, but do not require one 1 – do not prompt for an address 2 – prompt for an address, and require one The default is 0.
答案 2 :(得分:4)
对于其他寻求此帮助的人,因为PayPals文档是如此出色(咳嗽,咳嗽)。
不需要网络体验资料!
使用带有Javascript / JQuery的REST API V2并关闭“发件人”以进行订单,这是正确的代码示例:
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'
}
});
},
答案 3 :(得分:3)
目前正确的答案是 depracated 。要解决新API中的问题,我们应创建包含所需参数的付款网络体验资料,并将其附加到请求付款。
PHP示例:
transaction
注意:您可以通过链接找到以上使用的所有课程:https://github.com/paypal/PayPal-PHP-SDK/tree/master/lib/PayPal/Api
答案 4 :(得分:2)
根据API中的示例创建网络个人资料:CreateWebProfile.php
。
$createProfileResponse = require __DIR__ . '/CreateWebProfile.php';
$payment = new Payment();
$payment->setExperienceProfileId($createProfileResponse->getId());
文件路径:paypal/rest-api-sdk-php/sample/payment-experience/CreateWebProfile.php
答案 5 :(得分:2)
要从当前(2019年)的Web客户端.JS中解决此问题,请将application_context
块添加到请求正文中。
下面是createSubscription()
调用的示例;而且我认为这也可以与createOrder()
一起使用
paypal.Buttons({
createSubscription: function (data, actions) {
return actions.subscription.create({
'plan_id' : 'P-123',
'application_context': {
'shipping_preference': 'NO_SHIPPING'
}
});
},
onApprove: function (data, actions) {
// ...
}
})
.render('#paypal-button-container');
感谢此处的示例代码:
在此处列出字段枚举的地方:
答案 6 :(得分:1)
@Ergec:我试过了:
$nvpstr = "&ADDRESSOVERRIDE=1".$shiptoAddress."&L_NAME0=".$L_NAME0."&L_NAME1=".$L_NAME1."&L_AMT0=".$L_AMT0."&L_AMT1=".$L_AMT1."&L_QTY0=".$L_QTY0."&L_QTY1=".$L_QTY1."&MAXAMT=".(string)$maxamt."&ITEMAMT=".(string)$itemamt."&AMT=".$itemamt."&ReturnUrl=".$returnURL."&CANCELURL=".$cancelURL."&CURRENCYCODE=".$currencyCodeType;
有效。在这里,我们也可以使用送货地址,即使我们没有收取任何金额。