ошибка 10605 при использовании кода валюты в SetExpressCheckout и nvp SDK

#paypal

#paypal

Вопрос:

я сталкиваюсь с большой проблемой, когда пытаюсь установить ExpressCheckout с помощью nvp SDK при передаче параметра amp;PAYMENTREQUEST_0_CURRENCYCODE ссылке на оформление заказа возвращается ошибка

     SetExpressCheckout failed: Array ( 
[TIMESTAMP] => 2011-10-11T00:58:56Z 
[CORRELATIONID] => fa1dd71c19e46 
[ACK] => Failure 
[VERSION] => 82.0 
[BUILD] => 2133933 
[L_ERRORCODE0] => 99998 
[L_ERRORCODE1] => 10605 
[L_SHORTMESSAGE0] => Transaction refused because of an invalid argument. See additional error messages for details. 
[L_SHORTMESSAGE1] => Transaction refused because of an invalid argument. See additional error messages for details. 
[L_LONGMESSAGE0] => Currency is not supported [L_LONGMESSAGE1] => Currency is not supported 
[L_SEVERITYCODE0] => Error [L_SEVERITYCODE1] => Error )
  

я сделал все, чтобы передать эту ошибку, но я не
уверен, что код валюты действителен,
я должен установить его в фунтах стерлингов, но даже при установке его в USD возвращается ошибка
, если я удалил этот параметр amp;PAYMENTREQUEST_0_CURRENCYCODE , все прошло нормально без проблем, но в долларах
США, если я включил этот параметр amp;PAYMENTREQUEST_0_CURRENCYCODE в любой код валюты, он возвращаетта же ошибка
полного var_dump

  array(13) { ["TIMESTAMP"]=> string(28) "2011-10-13T02:55:21Z" 
["CORRELATIONID"]=> string(13) "4e167b7f7ec44" 
["ACK"]=> string(7) "Failure" 
["VERSION"]=> string(6) "82.0" 
["BUILD"]=> string(7) "2183220" 
["L_ERRORCODE0"]=> string(5) "99998" 
["L_ERRORCODE1"]=> string(5) "10605" 
["L_SHORTMESSAGE0"]=> string(122) "Transaction refused because of an invalid argument. See additional error messages for details." 
["L_SHORTMESSAGE1"]=> string(122) "Transaction refused because of an invalid argument. See additional error messages for details." 
["L_LONGMESSAGE0"]=> string(31) "Currency is not supported" 
["L_LONGMESSAGE1"]=> string(31) "Currency is not supported" 
["L_SEVERITYCODE0"]=> string(5) "Error" 
["L_SEVERITYCODE1"]=> string(5) "Error" } bool(true) SetExpressCheckout failed:
  

это запрос api

 $actions .= '
amp;L_PAYMENTREQUEST_0_NAME1=Name Example
amp;L_PAYMENTREQUEST_0_NUMBER1=Product Code Example
amp;L_PAYMENTREQUEST_0_DESC1=Product Title
amp;L_PAYMENTREQUEST_0_AMT1='.number_format(50, 2, '.', '').'
amp;L_PAYMENTREQUEST_0_QTY1=1';
$paymentAmount = urlencode($sum);
$ship = urlencode($del);
$tot = $paymentAmount   $ship ;
$currencyID = urlencode(GBP);                           // or other currency code ('GBP', 'EUR', 'JPY', 'CAD', 'AUD')
$returnURL = urlencode("http://www.example.net/index.php");
$cancelURL = urlencode('http://www.example.net/index.php');
$actions .= "
amp;PAYMENTREQUEST_0_PAYMENTACTION=Sale
amp;PAYMENTREQUEST_0_ITEMAMT=".$paymentAmount."
amp;PAYMENTREQUEST_0_SHIPPINGAMT=".$ship."
amp;PAYMENTREQUEST_0_AMT=".$tot."
amp;PAYMENTREQUEST_0_ALLOWNOTE=1
amp;PAYMENTREQUEST_0_CURRENCYCODE=".$currencyID."
";
// Add request-specific fields to the request string.
$nvpStr = "amp;$actionsamp;ReturnUrl=$returnURLamp;CANCELURL=$cancelURL";

// Execute the API operation; see the PPHttpPost function above.
$httpParsedResponseAr = PPHttpPost('SetExpressCheckout', $nvpStr);

if("SUCCESS" == strtoupper($httpParsedResponseAr["ACK"]) || "SUCCESSWITHWARNING" == strtoupper($httpParsedResponseAr["ACK"])) {
    // Redirect to paypal.com.
    $token = urldecode($httpParsedResponseAr["TOKEN"]);
    $payPalURL = "https://www.paypal.com/webscramp;cmd=_express-checkoutamp;token=$token";
    if("sandbox" === $environment || "beta-sandbox" === $environment) {
        $payPalURL = "https://www.$environment.paypal.com/webscramp;cmd=_express-checkoutamp;token=$token";
    }
    header("Location: $payPalURL");
    exit;
} else  {
    exit('SetExpressCheckout failed: ' . print_r($httpParsedResponseAr, true));
}
  

Комментарии:

1. Можете ли вы выполнить var_dump полную строку NVP прямо перед отправкой ее в конечную точку API PayPal?

2. конечно, я это сделаю и вскоре сообщу вам результат

3. добавлен var_dump, я думаю, это то же самое, что и print_r, который я уже использую 🙂

4. Это ответ, вместо этого я хотел бы увидеть ваш запрос API. 🙂

Ответ №1:

проблема решена я передал код валюты в URL вместо того, чтобы определять его в переменной parameters

Комментарии:

1. Пожалуйста, покажите пример отправки валюты в URL-адресе.