Я использую класс PayflowNETAPI API PayflowPro (Payflow_dotNET.dll) для отправки транзакции для хранения кредитных карт, поэтому моей компании не требуется (для перезачетов PCI Compliant). Я использую PNREF из транзакции магазина кредитных карт, чтобы сделать ссылочную транзакцию, но я продолжаю получать «РЕЗУЛЬТАТ = 2 & PNREF = & RESPMSG = Неверный тендер» Я пробовал транзакции авторизации, захвата и продажи, и все они дают тот же результат. Что я делаю не так?Как заряжать сохраненную кредитную карту с помощью API-интерфейса payflow?
Я прочитал Руководство и руководство для разработчиков Gateway Gateway несколько раз (https://developer.paypal.com/docs/classic/payflow/integration-guide/). Все примеры транзакций авторизации, захвата и продажи содержат информацию о кредитной карте в запросе. Существует несколько небольших разделов, которые объясняют и описывают выгрузку кредитных карт, но никогда не используют результат запроса в ссылочной транзакции.
Ниже приведен пример приложения, а выход
string creditCardUploadRequest = "TRXTYPE=L&TENDER=C&ACCT=4111111111111111&EXPDATE=1218&CVV2=250&BILLTOFIRSTNAME=Homer&BILLTOLASTNAME=Simpson&BILLTOSTREET=350 5th Ave&BILLTOCITY=New York&BILLTOSTATE=NY&BILLTOZIP=10118&BILLTOCOUNTRY=840&USER=<USER>&VENDOR=<VENDOR>&PARTNER=<PARTNER>&PWD=<PASSWORD>&VERBOSITY=HIGH";
var client = new PayPal.Payments.Communication.PayflowNETAPI(HostAddress: "pilot-payflowpro.paypal.com", HostPort: 443, Timeout: 90);
var ccUploadResponse = client.SubmitTransaction(ParamList: creditCardUploadRequest, RequestId: PayflowUtility.RequestId);
//place the responses into collection
var payPalCollection = new NameValueCollection();
foreach (string element in ccUploadResponse.Split('&'))
{
string[] Temp = element.Split('=');
payPalCollection.Add(Temp[0], Temp[1]);
}
Console.WriteLine("creditCardUploadRequest succeeded = {0}", payPalCollection.Get("RESPMSG") == "Approved");
string authorizationRequest = "TRXTYPE=A&ORIGID=" + payPalCollection.Get("PNREF") + "&INVNUM=ORD123456&AMT=50&COMMENT1=My Product Sale&USER=<USER>&VENDOR=<VENDOR>&PARTNER=<PARTNER>&PWD=<PASSWORD>&VERBOSITY=HIGH";
var authorizationResponse = client.SubmitTransaction(ParamList: authorizationRequest, RequestId: PayflowUtility.RequestId);
foreach (string element in authorizationResponse.Split('&'))
{
Console.WriteLine(element);
}
Console.WriteLine("\nDONE");
Console.ReadKey();
ВЫХОД:
creditCardUploadRequest удалось = True
РЕЗУЛЬТАТ = 2
PNREF = A7X08AB571EC
RESPMSG = Недопустимый тендер
DONE
Не работает. Я добавил ТЕНДЕР = C и получил следующее сообщение об ошибке: РЕЗУЛЬТАТ = 117 PNREF = RESPMSG = Ошибка коммерсант правила проверки –
scottDeveloper
Чтобы избавиться, если эта ошибка вам необходимо включить справочной транзакции в аккаунте менеджера. Перейдите в учетную запись менеджера - Администрирование учетной записи -> Настройки транзакции и включите ссылку txn и подождите часа, и она должна работать нормально. – Eshan
Спасибо, я попробую. Я не администратор учетной записи, поэтому мне придется спросить моего начальника, если это сработает. Я отвечу, как только смогу. – scottDeveloper