Как получить SecureToken, используя Payflow Gateway SDK для интеграции Payflow Link
Я пытаюсь выяснить, как получить SecureToken для использования в IFrame Link Payflow Link, используя PayPal Payflow Gateway SDK. Я также использую схему C Paypal, чтобы пользователь вводил информацию о своей кредитной карте в рамку PayPal IFrame, пока она встроена в мой сайт (таким образом, мой сайт никогда не получал информацию CC).
Код для генерации HTML для IFrame в идеале должен выглядеть примерно так:
iframeHTML = "<iframe src='https://payflowlink.paypal.com?SECURETOKEN="
+ secureToken + "&SECURETOKENID=" + secureTokenID + "&MODE=" + mode
+ "' width='490' height='565' border='0' frameborder='0' scrolling='no'"
+ " allowtransparency='true'>\n</iframe>";
Я прочитал Руководство разработчика и не смог найти, с каким объектом я могу это сделать. Я пытался создать различные транзакции, но все они требуют отправки тендера (полная информация о кредитной карте). Я также рассмотрел вопросы о том, как не работает пример PayPal Gateway SDK PayPal, и Как получить безопасный токен при использовании "Размещенных страниц проверки" и RestApiSDK - ASP.Net, но не смог найти нужный ответ.
Какой-то объект или функция мне не хватает? Я бы предпочел не использовать коллекцию "имя-значение" и вручную создавать запрос и ответ для получения SecureToken, но будет, если это единственный способ.
2 ответа
Покопавшись еще, я в конце концов нашел в SDK объект под названием "ExtendData" и смог добавить экземпляры этих объектов в мою транзакцию, чтобы получить необходимый токен. Он добавляет эту информацию в строку запроса, так что вы можете использовать ExtendData для всего, для чего вы бы создали пару имя / значение, для которой это еще не указано в SDK.
var edCreateSecureToken = new ExtendData("CREATESECURETOKEN", "Y");
var edSecureTokenID = new ExtendData("SECURETOKENID", strRequestID);
var transaction = new SaleTransaction(payPalUser, payflowConnection, invoice, null, strRequestID);
transaction.AddToExtendData(edCreateSecureToken);
transaction.AddToExtendData(edSecureTokenID);
Response response = transaction.SubmitTransaction();
string token = string.Empty;
if (response != null && response.TransactionResponse != null && response.TransactionResponse.Result == 0)
{
token = (from ExtendData test in response.ExtendDataList
where test.ParamName == "SECURETOKEN"
select test.ParamValue).FirstOrDefault();
}
paypalContent.InnerHtml = "<iframe src='https://payflowlink.paypal.com?SECURETOKEN=" + token + "&SECURETOKENID=" +
strRequestID + "&MODE=" + Config.PayflowMode +
"' width='490' height='565' border='0' frameborder='0' scrolling='no' allowtransparency='true'>\n</iframe>";
Кажется, это работает правильно (макет C показывает встроенный в мою страницу без ошибок) и позволяет мне не указывать тендер.
Вот пример кода, который приходит непосредственно с сайта разработчика PayPal, он поможет вам создать идентификатор безопасного токена:
curl https://pilot-payflowpro.paypal.com -kd
"PARTNER=PayPal&
VENDOR=MyMerchantID&
USER=UserID&
PWD=UserPassword&
TRXTYPE=S&
AMT=40&
CREATESECURETOKEN=Y&
SECURETOKENID=12528208de1413abc3d60c86cb15"
Вот информация о настройке страниц размещенных покупок: Страницы размещенных покупок