2015-12-04 5 views
2

Я использую класс 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

ответ

2

В вашем втором вызове отсутствует переменная «TENDER = C». Добавьте это, и все должно быть хорошо.

"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" 
+0

Не работает. Я добавил ТЕНДЕР = C и получил следующее сообщение об ошибке: РЕЗУЛЬТАТ = 117 PNREF = RESPMSG = Ошибка коммерсант правила проверки – scottDeveloper

+1

Чтобы избавиться, если эта ошибка вам необходимо включить справочной транзакции в аккаунте менеджера. Перейдите в учетную запись менеджера - Администрирование учетной записи -> Настройки транзакции и включите ссылку txn и подождите часа, и она должна работать нормально. – Eshan

+0

Спасибо, я попробую. Я не администратор учетной записи, поэтому мне придется спросить моего начальника, если это сработает. Я отвечу, как только смогу. – scottDeveloper