Paypal Express - 添加折扣

时间:2012-03-14 20:33:16

标签: php paypal e-commerce payment-gateway payment

我目前正在向Paypal Express发布常规交易,并且没有错误地到达网关。

我现在想配置我的购物车向网关发送折扣。我的第一个想法是修改发送到网关的“AMT”值。但是,似乎Paypal通过计算ITEMAMTTAXAMTSHIPPINGAMT字段的总和来验证“AMT”字段,以确保总数不变:

[L_AMT0] => 49.99
[L_NUMBER0] => 3706{3}8
[L_QTY0] => 1
[L_TAXAMT0] => 0.00
[ITEMAMT] => 49.99
[TAXAMT] => 0
[SHIPPINGAMT] => 14.95
[AMT] => 64.94

我向Paypal发送了多少折扣?我查看了我能找到的文件,没有运气;关于SO的类似问题也没有帮助。感谢。

编辑:我注意到我可以通过字段SHIPDISCAMT。我不知道这是否会让我做我需要做的事情 - 我仍然会收到错误,表明soemthing'不匹配'。

3 个答案:

答案 0 :(得分:22)

知道了。

事实证明,您可以将负数金额作为订单项传递,并自行将其标记为折扣。我不得不添加上面的代码:

$params['L_NAME1'] = 'Discount Coupon';
$params['L_AMT1'] = -$discountCodeAmount;
$params['L_QTY1'] = 1;
$params['ITEMAMT'] -= $discountCodeAmount;
$params['AMT'] -= $discountCodeAmount;

这具有以下效果:

enter image description here

我在这篇PDF中找到了答案:

https://cms.paypal.com/cms_content/CA/en_US/files/developer/PP_ExpressCheckout_IntegrationGuide.pdf

出于某种原因,我读过的其他几篇官方PayPal快递文章/文件中没有提供这些信息。

答案 1 :(得分:0)

我使用负价格订单项技术来实现折扣,但遇到了问题 - 如果折扣价值等于产品价格,例如订单项如:

[L_NAME0] => Product #1
[L_COST0] => 18.99
[L_QTY0] => 1
[L_NAME1] => Discount
[L_COST1] => -18.99
[L_QTY1] => 1
[ITEMAMT] => 0.00
[FREIGHTAMT] => 15.00
[HANDLINGAMT] => 0.00

然后它产生PayPal错误“字段格式错误:10431-项目金额无效。”。

然而,删除折扣产品并发送而不是“DISCOUNT”字段修复此问题并给出新的:-) PayPal始终将此字段显示为“运费折扣”,而实际上是商品折扣。 至少,它有效...

答案 2 :(得分:0)

请参阅此Paypal网址 HTML Variable List

<input type="hidden" name="discount_amount_cart" id="discount_amount_cart"  value="3.00">

您可以使用此参数发送购物车广泛折扣(discount_amount_cart),产品范围折扣(discount_amount)。您可以在提供链接中找到更多信息。确保传递正整数值。 PayPal不接受负值。