PayPal付款高级用户身份验证失败

时间:2013-06-29 03:23:07

标签: paypal

我正在使用PayPal Payment Advanced的网站上工作。 我已经阅读了文档并尝试了几种获取初始令牌的方法。 以下是我的代码:

Dim collection As New NameValueCollection()

    collection.Add("PARTNER", "PayPal")
    collection.Add("VENDOR", "*Vendor ID*")
    collection.Add("USER", "*Transaction ID*")
    collection.Add("PASSWORD", "*The USER Password*")
    collection.Add("TRXTYPE", "S")
    collection.Add("AMT", "0.01")
    collection.Add("CREATESECURETOKEN", "Y")
    collection.Add("SECURETOKENID", Guid.NewGuid().ToString().Replace("-", ""))


    Dim wc As New WebClient()
    Dim response As Byte() = wc.UploadValues("https://pilot-payflowpro.paypal.com", "POST", collection)

    Dim text As String = ASCIIEncoding.ASCII.GetString(response)

结果总是如此 就像是..... RESULT = 1& SECURETOKENID = 11d95bb67d924cb2b8d9b4df81dfd586& RESPMSG =用户身份验证失败

我使用简单的html表单尝试了这个基本过程,其中post和hidden表单字段具有键值对,结果始终相同。

我可以在PayPal Manger中访问这两个帐户而没有任何问题。

任何人的帮助都会非常感激。

3 个答案:

答案 0 :(得分:1)

我发现了这个问题,我在这里发帖是希望别人不必像我一样经历同样的头痛。

在尝试提交PayPal付款高级测试数据时,您需要确保您确实拥有与PayPal经理关联并绑定的沙箱帐户电子邮件。我创建了一个虚构的电子邮件,因为我的实际电子邮件已经与另一个帐户关联。 所以一定要去developer.paypal.com并选择“Sandbox Accounts” - >创建帐户。

创建帐户后,在Sandbox测试帐户中选择新条目,然后在“配置文件”选项卡下选择“配置文件”,确保选中PayPal Payments Pro。

现在,关闭PayPal经理。从这里,您需要确保PayPal Sandbox电子邮件地址已关联。在开发人员沙箱中添加新帐户后,输入电子邮件地址并选择更新。

在交易设置下,确保您拥有“每笔交易的最大金额”

中的值

最后确保正确设置名称值参数。在我的情况下,参数PASSWORD失败了。应该是PWD。

因此,您的表单应如下例所示进行设置。

<form method="POST" action="https://pilot-payflowpro.paypal.com:443" target="paypal">

            <input type="hidden" value="PARTNER" name="PayPal" />
            <input type="hidden" value="VENDOR" name="*Vendor Name*" />
            <input type="hidden" value="USER" name="*User Name*" />
            <input type="hidden" value="PWD" name=""User Password"" />
            <!-- NOT PASSWORD -->

            <input type="hidden" value="CREATESECURETOKEN" name="Y" />
            <input type="hidden" value="TRXTYPE" name="S" />
            <input type="hidden" value="AMT" name="1.01" />
            <input type="hidden" value="SECURETOKENID" name="random guid here" />

            <input type="submit" value="Submit">

        </form>

    Dim collection As New NameValueCollection()
    collection.Add("Partner", "Partner Name - Usually PayPal or Verisign")
    collection.Add("Vendor", "Vendor Name")
    collection.Add("User", "User Name")
    collection.Add("PWD", "User's Password")
    collection.Add("TRXTYPE", "Transaction type, example A, S, etc")
    collection.Add("AMT", "Amount")
    collection.Add("CREATESECURETOKEN", "Y")
    collection.Add("SECURETOKENID",  Guid.NewGuid().ToString().Replace("-", ""))

    Dim wc As New WebClient()
    Dim response As Byte() = wc.UploadValues(txtWebAddress.Text, "POST", collection)
    wc.Dispose()
    Dim responsetext As String = System.Text.ASCIIEncoding.ASCII.GetString(response)

我要感谢PayPal支持他们帮助解决这个问题。他们最有帮助。

答案 1 :(得分:1)

要注意,请从Paypal知识库网站

  

注意:尽管PayPal Manager允许使用特殊字符作为密码的一部分,但请避免使用它们,因为某些操作shell(如DOS或UNIX)会对它们进行不同的处理。例如,百分号(%)是DOS中的特殊字符。诸如“PaSS%word1”之类的密码将截断为“PaSS”,因为DOS将在第二个“S”之后删除所有字符。

我有一个包含非字母数字字符的密码,身份验证将以与OP相同的方式失败。

https://www.paypal-knowledge.com/infocenter/index?page=content&id=FAQ1223&actp=LIST

答案 2 :(得分:0)