Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 贝宝快捷-添加折扣_Php_Paypal_E Commerce_Payment Gateway_Payment - Fatal编程技术网

Php 贝宝快捷-添加折扣

Php 贝宝快捷-添加折扣,php,paypal,e-commerce,payment-gateway,payment,Php,Paypal,E Commerce,Payment Gateway,Payment,我目前正在向Paypal Express发布一项常规交易,并且正在顺利到达网关 我想现在配置我的购物车向网关发送折扣。我的第一个想法是修改发送到网关的“AMT”值。但是,Paypal似乎通过计算项目金额、税收金额和发货金额字段的总额来验证“金额”字段,以确保总额不变: [L_AMT0] => 49.99 [L_NUMBER0] => 3706{3}8 [L_QTY0] => 1 [L_TAXAMT0] => 0.00 [ITEMAMT] => 49.99 [TAXA

我目前正在向Paypal Express发布一项常规交易,并且正在顺利到达网关

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

[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
我给贝宝寄了多少折扣?我查阅了我能找到的文件,但运气不佳;这里类似的问题也没有帮助。谢谢

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

明白了

事实证明,您可以将负金额作为行项目传递,然后自己将其标记为折扣。我必须添加上述代码:

$params['L_NAME1'] = 'Discount Coupon';
$params['L_AMT1'] = -$discountCodeAmount;
$params['L_QTY1'] = 1;
$params['ITEMAMT'] -= $discountCodeAmount;
$params['AMT'] -= $discountCodeAmount;
这产生了以下影响:

我在这个PDF中找到了我的答案:


由于某些原因,我读过的其他几篇PayPal express官方文章/文档中没有提供该信息。

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

[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项目金额无效”

但是,删除折扣产品并发送而不是“折扣”字段修复了此问题,并提供了新的:-) PayPal始终将此字段显示为“发货折扣”,而实际上它是商品折扣。
至少,它是有效的…

请参考此Paypal URL



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

您不能预先计算折扣并将其计入PayPal变量吗?@Josh我怎么做?贝宝将通过查看单个L_*元素重新计算“总数”;如果其计算结果与我本应修正的“AMT”字段不匹配,则它将返回网关错误。我确实想过修改每个人的
L_AMT*
,从每个人身上减去一部分折扣值,但这似乎是一个糟糕的解决方案。你能提供更深入的答复吗?(谢谢你的帖子。)@Josh回答了我自己的问题。不过,谢谢你的帮助!我也找不到它,尽管它是为其他PayPal解决方案记录的。很好的发现。
<input type="hidden" name="discount_amount_cart" id="discount_amount_cart"  value="3.00">