2012-03-14 82 views
12

我目前正在發佈一個正常的交易到貝寶快遞,並達到網關沒有錯誤。貝寶快遞 - 添加折扣

我想現在配置我的購物車向網關發送折扣。我的第一個想法是修改發送到網關的'AMT'值。然而,似乎貝寶通過計算總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 

我多少送折扣貝寶?我已經瀏覽了我可以找到的文檔,但沒有運氣;在SO上的類似問題也沒有幫助。謝謝。

編輯:我注意到我可以通過SHIPDISCAMT這個字段。我不知道這是否會讓我做我需要的東西 - 但我仍然收到錯誤,表明這些東西是'不匹配'。

+0

您是否可以預先計算您的貝寶變量的折扣和因素? – Josh 2012-03-14 21:01:36

+0

@Josh我該怎麼做? PayPal將通過查看單個L_ *元素來重新計算「總計」如果它的計算與我將要修改的'AMT'字段不匹配,那麼它將返回一個網關錯誤。 我確實想過修改每個單獨的'L_AMT *'來取消每個折扣值的一部分,但這似乎是一個可怕的解決方案。 你能提供更深入的答覆嗎? (感謝帖子。) – Pete171 2012-03-14 21:11:25

+0

@Josh回答了我自己的問題。儘管如此,感謝您的幫助! – Pete171 2012-03-14 21:40:42

回答

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快遞文章/文件中提供。

+0

我找不到它,雖然它被記錄爲其他貝寶解決方案。很棒的發現。 – Josh 2012-03-14 21:42:24

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-項目數量無效。」。

但是,刪除折扣商品併發送代替它的「折扣」字段解決了此問題並給出了新的:-) PayPal始終將此字段顯示爲「送貨折扣」,而它實際上是商品折扣。 至少,它的工作原理...

0

請參考此URL寶 HTML Variable List

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

你可以把車寬折扣(discount_amount_cart),使用此參數產品廣泛折扣(DISCOUNT_AMOUNT)。您可以在提供鏈接中找到更多信息。確保傳遞正整數值。 PayPal不接受負值。