Я сделал оплату в размере 990 долларов, и это получило успех. После этого я пытаюсь выполнить платеж в размере 2490 долларов, что дает ошибку: 10401.
Для обоих платежей я использую вызов API DoReferenceTransaction API (тот же идентификатор соглашения об оплате).
Почему это происходит?
Вот мой NVP:
$nvpstr = '&REFERENCEID=' . $billing_agreement_id;
$nvpstr.='&PAYMENTACTION=' . $paymentType;
$nvpstr.= '&AMT=' . $FinalPaymentAmt;
$nvpstr.= '&CURRENCYCODE=' . $currencyCodeType;
$nvpstr.='&L_ITEMCATEGORY0=Digital';
$nvpstr.='&DESC=' . urlencode("LMS Recurring Payment( $" . $_SESSION["Payment_Amount"] . " )");
$nvpstr.="&L_PAYMENTREQUEST_0_ITEMCATEGORY0=Digital";
$nvpstr.="&L_PAYMENTREQUEST_0_QTY0=1";
$nvpstr.="&L_PAYMENTREQUEST_0_NAME0=LMS Billing";
$nvpstr.="&L_PAYMENTREQUEST_0_AMT0=" . $_SESSION["Payment_Amount"];
$nvpstr.="&L_NAME0=Test Name";
$nvpstr.="&L_DESC0=" . urlencode("LMS Recurring Payment( $" . $_SESSION["Payment_Amount"] . " )");
$nvpstr.="&L_AMT0=" . $_SESSION["Payment_Amount"];
$nvpstr.="&ITEMAMT=" . $_SESSION["Payment_Amount"];
$nvpstr.="&L_QTY0=1";
$nvpstr.="&RECURRING=Y";
Пожалуйста, направляйте меня, чтобы я мог преодолеть эту ошибку.
Примечание. Ошибка не возникает, когда транзакционные платежи выполняются в следующем порядке:
$ 99
$ 249
$ 3990
Код 10401
Сделка отказалась из-за недопустимого аргумента.
Общее количество заказов недействительно. Сумма TotalOrder недействительна.
По моему опыту ошибка 10004 появилась, когда имеет несовместимость между методами SetExpressCheckout и (в вашем случае) DoReferenceTransaction
Поэтому, пожалуйста, проверьте количество TotalOrder!