我试图弄清楚如何使用PayPal Payflow Gateway SDK接收在Payflow Link IFrame中使用的SecureToken。我还使用Paypal的Layout C,以便用户在其嵌入我的网站时在PayPal IFrame中输入他们的信用卡信息(从而防止我的网站获得CC信息)。

理想情况下,为IFrame生成HTML的代码应如下所示:

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>";


我已经阅读了Developer Guide,却找不到我可以使用的对象。我尝试过创建各种交易,但是它们都需要发送招标书(完整的信用卡信息)。我也查看了问题PayPal's Payflow Gateway SDK Example not workingHow to get secure token when using "Hosted Checkout Pages" and RestApiSDK - ASP.Net,但找不到我想要的答案。

我缺少某些对象或功能吗?我宁愿不使用名称-值集合并手动创建请求和响应来检索SecureToken,但是如果这是唯一的方法,那将是优选的。

最佳答案

在深入研究之后,我最终在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显示没有任何错误地嵌入到我的页面中),并且可以避免指定投标。

10-07 19:21
查看更多