Отсутствует сумма и сводка заказов в PayPal Express Checkout - PullRequest
21 голосов
/ 21 ноября 2011

Я интегрировал PayPal в codeigniter с помощью paypal_helper (не помню, где я его нашел, но это слегка переписанная версия оригинального кода Paypals для экспресс-проверки. Я пытаюсь вызвать эту функцию,

CallShortcutExpressCheckout ($ paymentAmount, $ currencyCodeType, $ paymentType, $ returnURL, $ cancelURL)

отправка $ paymentAmount как int, $ currencyCodeType как «NOK» и $ paymentType как «Sale».

Как в Песочнице, так и в реальном времени, на сайте PayPal сумма не отображается ...

Что может быть не так?

Изменить, чтобы более подробно объяснить мой процесс. Я использую это, в основном, как указано в https://www.paypal -labs.com /grationwizard / ecpaypal / cart.php . Это должно быть выполнимо без формы? PaymentAmount может быть отправлено как стандартная переменная при вызове функции CallShortcutExpressCheckout?:

$resArray = CallShortcutExpressCheckout ($paymentAmount, $currencyCodeType, $paymentType, $returnURL, $cancelURL);
$ack = strtoupper($resArray["ACK"]);
if($ack=="SUCCESS" || $ack=="SUCCESSWITHWARNING")
{
    RedirectToPayPal ( $resArray["TOKEN"] );
} 
else  
{
    //Display a user friendly Error on the page using any of the following error information returned by PayPal
    $ErrorCode = urldecode($resArray["L_ERRORCODE0"]);
    $ErrorShortMsg = urldecode($resArray["L_SHORTMESSAGE0"]);
    $ErrorLongMsg = urldecode($resArray["L_LONGMESSAGE0"]);
    $ErrorSeverityCode = urldecode($resArray["L_SEVERITYCODE0"]);

    echo "SetExpressCheckout API call failed. ";
    echo "Detailed Error Message: " . $ErrorLongMsg;
    echo "Short Error Message: " . $ErrorShortMsg;
    echo "Error Code: " . $ErrorCode;
    echo "Error Severity Code: " . $ErrorSeverityCode;
}

Токен сохраняется в базе данных. Пользователь перенаправляется на Paypal, где сумма не указана.

Ответы [ 3 ]

50 голосов
/ 21 ноября 2011

Поскольку вы не передаете так называемые «данные позиции» (данные о продукте), PayPal не отображает общую сумму.

Если вы хотите показать только сумму для текущей покупки, перенаправьте покупателей на https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-xxxxxx&useraction=commit (вместо https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-xxxxx)

Если вы хотите начать отправку сведений о позиции в PayPal, включите в запрос SetExpressCheckout API следующее:

// Total amount of the purchase, incl shipping, tax, etc  
PAYMENTREQUEST_0_AMT=300.0  
// Total amount of items purchased, excl shipping, tax, etc     
PAYMENTREQUEST_0_ITEMAMT=300.0  
// Authorize the funds first (Authorization), or capture immediately (Sale)?    
PAYMENTREQUEST_0_PAYMENTACTION=Sale  
// First item  
L_PAYMENTREQUEST_0_NAME0=Item1  
L_PAYMENTREQUEST_0_QTY0=1  
L_PAYMENTREQUEST_0_AMT0=100.00  
// Second item  
L_PAYMENTREQUEST_0_NAME1=Item2  
L_PAYMENTREQUEST_0_QTY1=1  
L_PAYMENTREQUEST_0_AMT1=200.00  

Если вы хотите увидеть это и в своей собственной истории, вам также необходимо включить это в DoExpressCheckoutPayment.

Это также было опубликовано в php PayPal Express Checkout проблема

14 голосов
/ 20 мая 2013

После обширного прочтения на грязном сайте документации Paypal это краткое руководство по ExpressCheckout, работающее в 2013 году. Я хотел, чтобы детали товара отображались на странице оплаты PayPal и на странице истории транзакций продавца.

Ссылки на документацию Paypal

Вы можете позвонитьСледуйте методам URL непосредственно в веб-браузере, соответственно обновите параметры токена и payerid.

Это цифровой товар, поэтому плата за доставку и обработку не взимается.Строка одного элемента.Сумма и налоги указаны.Не требуется подтвержденный адрес доставки, поля адреса доставки, запрещенная заметка в свободном тексте, плательщику не требуется учетная запись PayPal и не требуется регистрация ( solutiontype = sole ).Активируйте раздел кредитной карты на сайте PayPal ( посадочная страница = биллинг ).Используйте индивидуальное название бренда на сайте PayPal.Используйте настраиваемое поле, чтобы указать собственное значение для целей отслеживания.В истории транзакций на сайте продавца должен быть указан элемент (указать данные о методах SetExpressCheckout и DoExpressCheckoutPayment).

Метод SetExpressCheckout открывает новую транзакцию

https://api-3t.sandbox.paypal.com/nvp?
    USER=<userid>
    &PWD=<pwd>
    &SIGNATURE=<mysig>
    &METHOD=SetExpressCheckout
    &VERSION=98
    &PAYMENTREQUEST_0_PAYMENTACTION=SALE
    &REQCONFIRMSHIPPING=0
    &NOSHIPPING=1
    &ALLOWNOTE=0
    &SOLUTIONTYPE=Sole
    &LANDINGPAGE=Billing
    &BRANDNAME=MY+WEBSHOP+TITLE
    &PAYMENTREQUEST_0_AMT=22.22
    &PAYMENTREQUEST_0_TAXAMT=4.30
    &PAYMENTREQUEST_0_ITEMAMT=17.92
    &PAYMENTREQUEST_0_DESC=mypurdesc
    &PAYMENTREQUEST_0_CUSTOM=custom1
    &PAYMENTREQUEST_0_CURRENCYCODE=EUR
    &L_PAYMENTREQUEST_0_NUMBER0=itemid1
    &L_PAYMENTREQUEST_0_NAME0=MyItem1
    &L_PAYMENTREQUEST_0_DESC0=Item1+description
    &L_PAYMENTREQUEST_0_QTY0=1
    &L_PAYMENTREQUEST_0_AMT0=17.92
    &L_PAYMENTREQUEST_0_TAXAMT0=4.30
    &RETURNURL=https://myserver.com/webapp/paypal.jsp%3Fcmd=successexp
    &CANCELURL=https://myserver.com/webapp/paypal.jsp%3Fcmd=cancelexp

Ответ должен содержать ACK= Успех или ACK = SuccessWithWarning, прочитайте значение TOKEN

Перенаправьте браузер пользователя на сайт Paypal, введите значение токена

https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=<token>

Пользователь использует учетную запись PayPal или кредитную карту.Paypal перенаправляет пользователя на возврат или отмену URL.URL-адрес назначения перенаправления получает значения параметров token и PayerID .Транзакция еще не завершена, мы должны вызвать метод doExpressCheckoutPayment.

Показать диалог подтверждения на экране (с помощью кнопки ОК, ОТМЕНА) или просто зафиксировать транзакцию и показать «Спасибо, покупка завершена» сообщение.Пользователь уже принял платеж на сайте PayPal и ожидает, что транзакция будет завершена.

Вы можете зафиксировать транзакцию в том же обработчике запроса-ответа или с помощью асинхронной фоновой задачи.Сайт Paypal может быть временно недоступен, поэтому не ожидайте, что он сразу же заработает.

Подтвердите транзакцию, если перенаправление прошло успешно, используйте токен и payerid

https://api-3t.sandbox.paypal.com/nvp?
    USER=<userid>
    &PWD=<pwd>
    &SIGNATURE=<mysig>
    &METHOD=DoExpressCheckoutPayment
    &VERSION=98
    &PAYMENTREQUEST_0_PAYMENTACTION=SALE
    &PAYMENTREQUEST_0_AMT=22.22
    &PAYMENTREQUEST_0_TAXAMT=4.30
    &PAYMENTREQUEST_0_ITEMAMT=17.92
    &PAYMENTREQUEST_0_CURRENCYCODE=EUR
    &L_PAYMENTREQUEST_0_NUMBER0=itemid1
    &L_PAYMENTREQUEST_0_NAME0=MyItem1
    &L_PAYMENTREQUEST_0_QTY0=1
    &L_PAYMENTREQUEST_0_AMT0=17.92
    &L_PAYMENTREQUEST_0_TAXAMT0=4.30
    &token=<token>
    &payerid=<payerid>

Read ACK= Поля «Успешно» и «Подтвердить»

ACK=Success
PAYMENTINFO_0_PAYMENTSTATUS=Completed
PAYMENTINFO_0_ACK=Success
PAYMENTINFO_0_AMT=22.22     total amount must match
PAYMENTINFO_0_FEEAMT=0.99   (just for fun, read paypal comission fee)
PAYMENTINFO_0_CURRENCYCODE=EUR  currency must match

(Необязательно) Чтение подробностей транзакции из Paypal

Вы можете использовать это во время рабочего процесса транзакции или в любое время, если токен сохранен для дальнейшего использования.использовать.

https://api-3t.sandbox.paypal.com/nvp
    ?USER=<userid>
    &PWD=<pwd>
    &SIGNATURE=<mysig>
    &METHOD=GetExpressCheckoutDetails
    &VERSION=98
    &token=<token>

Чтение параметров ответа.

ACK=Success
CHECKOUTSTATUS=PaymentActionCompleted
PAYMENTREQUEST_0_AMT=22.22
PAYMENTREQUEST_0_TAXAMT=4.30
PAYMENTREQUEST_0_CURRENCYCODE=EUR

(Необязательно) Считывание и сохранение идентификатора транзакции, идентификатора корреляции и идентификатора токена и запись в журналируемую таблицу.

PAYMENTREQUEST_0_TRANSACTIONID=11E585715B622391E
CORRELATIONID=4534b683c335f

Я готов получать комментарии, если есть какие-либо логические ошибки.

0 голосов
/ 21 ноября 2011

Проверьте эту ссылку, надеюсь, она поможет в некотором смысле: https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_ECGettingStarted

PAYMENTREQUEST_0_AMT=amount //for amount
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...