Подтвердить что ты не робот

Отсутствие суммы и сумма заказа в PayPal Express Checkout

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

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

отправка $paymentAmount как int, $currencyCodeType как "NOK" и $paymentType как "Продажа".

Как в песочнице, так и вживую, на сайте PayPal не появляется сумма...

Что может быть неправильным?

Изменить, чтобы еще больше объяснить мой процесс. Я использую это, в основном, как указано в https://www.paypal-labs.com/integrationwizard/ecpaypal/cart.php. Это должно выполняться без формы? Платежный аккаунт может быть отправлен как стандартная переменная при вызове функции 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, где не указано количество.

4b9b3361

Ответ 1

Поскольку вы не передаете так называемые "данные о позиции" (данные продукта), 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

Ответ 2

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

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

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

Это цифровые товары, поэтому доставка и оплата за обработку груза не предоставляются. Отдельная строка позиции. Сумма и налоговые сборы указаны. Не требуется подтвержденный адрес доставки, никаких полей почтового адреса, не разрешать примечание freetext, плательщику не нужна учетная запись 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-адрес перенаправления адресата получает значения токена и значения параметра PayerID. Транзакция еще не завершена, мы должны вызвать метод doExpressCheckoutPayment.

Показать диалоговое окно подтверждения на экране (с помощью кнопки OK, CANCEL) или простой случай совершить транзакцию и показать сообщение "Спасибо, покупка завершена". Пользователь уже принял платеж на сайте PayPal и ожидает завершения транзакции.

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

Зафиксировать транзакцию, если перенаправление было успешным, использовать токен и плательщик

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>

Чтение 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

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