Да, вы можете использовать API мгновенного обновления PayPal.
В двух словах; вам нужно настроить скрипт на вашем сервере, который принимает POST с данными адреса доставки от PayPal и требует, чтобы вы возвращали соответствующий ответ в виде вывода, включая сумму налога / стоимость доставки. Затем он будет использован во время оформления заказа в качестве суммы доставки / налога.
Посмотрите на https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_html_Appx_websitestandard_htmlvariables#id09CA80W0Z5Z и https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_nvp_r_CallbackAPI
Для платежей через веб-сайт Standard, нажмите кнопку с кодом следующей формы:
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" target="paypal">
<input type="hidden" name="upload" value="1">
<input type="hidden" name="cmd" value="_cart">
<input type="hidden" name="business" value="name@test.com">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="return" value="https://link-to-your-return-script.php">
<!--item 1 -->
<input type="hidden" name="quantity_1" value="1">
<input type="hidden" name="item_name_1" value="Gladiator - Extended">
<input type="hidden" name="item_number_1" value="3425654">
<input type="hidden" name="amount_1" value="10">
<!--item 2 -->
<input type="hidden" name="quantity_2" value="1">
<input type="hidden" name="item_name_2" value="Casino - Extended ">
<input type="hidden" name="item_number_2" value="4354567754">
<input type="hidden" name="amount_2" value="2">
<!--CALLBACK PARAMETERS -->
<input type="hidden" name="callback_url" value="https://link-to-your-callback-script.php">
<input type="hidden" name="callback_timeout" value="4">
<input type="hidden" name="callback_version" value="61"> <!--Required! -->
<input type="hidden" name="fallback_shipping_option_name_0" value="Option 1">
<input type="hidden" name="fallback_shipping_option_amount_0" value="1">
<input type="hidden" name="fallback_shipping_option_is_default_0" value="1">
<input type="hidden" name="fallback_shipping_option_name_1" value="Option 2">
<input type="hidden" name="fallback_shipping_option_amount_1" value="3">
<input type="hidden" name="fallback_shipping_option_is_default_1" value="0">
<input type="hidden" name="fallback_insurance_option_offered" value="0">
<!--CALLBACK PARAMETERS END-->
<input type="submit" value="Upload cart">
</form>
Всякий раз, когда покупатель выписывается, вы получаете POST с данными на https://link -to-your-callback-script.php
Ниже приведен пример полезной нагрузки POST, которую вы можете получить:
CallbackRequest
METHOD=CallbackRequest
CALLBACKVERSION=57
TOKEN=EC-7TF47275R51235219
LOCALECODE=en_US
CURRENCYCODE=USD
L_NAME0=Item name
L_NUMBER0=0123456789
L_DESC0=Description of item goes here
L_AMT0=1.00
L_QTY0=1
L_ITEMWEIGHTUNIT0=
L_ITEMWEIGHTVALUE0=0
L_ITEMHEIGHTUNIT0=
L_ITEMHEIGHTVALUE0=0
L_ITEMWIDTHUNIT0=
L_ITEMWIDTHVALUE0=0
L_ITEMLENGTHUNIT0=
L_ITEMLENGTHVALUE0=0
SHIPTOSTREET=1 Main St
SHIPTOCITY=San Jose
SHIPTOSTATE=CA
SHIPTOCOUNTRY=US
SHIPTOZIP=95131
SHIPTOSTREET2=
После этого вы должны рассчитать соответствующие суммы налога / стоимости доставки и вернуть правильное сообщение CallBackResponse.
Например;
CallBackResponse:
METHOD=CallbackResponse&
OFFERINSURANCEOPTION=true&
L_SHIPPINGOPTIONLABEL0=UPS Next Day Air TEST5&
L_SHIPPINGOPTIONAMOUNT0=1.00&
L_TAXAMT0=0.00&
L_INSURANCEAMOUNT0=0.00&
L_SHIPPINGOPTIONISDEFAULT0=false&
L_SHIPPINGOPTIONLABEL1=UPS Express 2 Days TEST4&
L_SHIPPINGOPTIONAMOUNT1=1.50&
L_TAXAMT1=0.00&
L_INSURANCEAMOUNT1=0.0&
L_SHIPPINGOPTIONISDEFAULT1=true&
L_SHIPPINGOPTIONLABEL2=UPS Ground2 to 7 Days TEST3&
L_SHIPPINGOPTIONAMOUNT2=1.50&
L_TAXAMT2=0.00&
L_INSURANCEAMOUNT2=0.00&
L_SHIPPINGOPTIONISDEFAULT2=false
Как только PayPal получит эту информацию, он автоматически обновит стоимость доставки / налогов.
Для получения дополнительной информации см. https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_ECInstantUpdateAPI