I'm currently posting a regular transaction to Paypal Express and am reaching the gateway without error.
I would like to now configure my cart to send a discount to the gateway. My first thought was to modify the 'AMT' value that is sent to the gateway. However, it seems that Paypal validates the 'AMT' field by calculating the total of the ITEMAMT
, TAXAMT
and SHIPPINGAMT
fields to ensure the total is unchanged:
[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
How many I send a discount to Paypal? I have looked through what documentation I can find, with no luck; the similar questions here on SO were no help, either. Thanks.
Edit: I've noticed I can pass through the field SHIPDISCAMT
. I don't know if this will let me do what I need it to though - I am still getting errors that indicate soemthing is 'mismatched'.
I've used the negative price line item technique to achieve the discount, but have faced with a problem - if a discount value is equal to product price, e.g. line items like:
Then it produces the PayPal error "Field format error: 10431-Item amount is invalid.".
However, removing the discount product and sending instead of it "DISCOUNT" field fixed this issue and gave new one :-) PayPal always shows this field as "Shipping discount", while it is actually item discount. At least, it works...
Got it.
It turns out that you can pass a negative amount through as a line item and label it as a discount yourself. I had to add the above code:
This had the following effect:
I found my answer in this PDF:
https://cms.paypal.com/cms_content/CA/en_US/files/developer/PP_ExpressCheckout_IntegrationGuide.pdf
For some reason, that information was not given in several other official PayPal express articles/documents I had read.
Please refer this Paypal URL HTML Variable List
You can send Cart wide Discount (discount_amount_cart), Product wide Discount (discount_amount) using this parameters. You can find more in provide link. Make sure to pass Positive Integer value. PayPal Does not accept Negative Value.