2

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

暗淡集合作为新的 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 表单尝试了这个基本过程,结果总是相同的。

我可以毫无问题地访问 PayPal Manger 中的两个帐户。

任何人的帮助将不胜感激。

4

3 回答 3

1

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

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

创建帐户后,在沙盒测试帐户中选择新条目并在“个人资料”选项卡下选择“个人资料”,确保选择了 PayPal Payments Pro。

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

在交易设置下确保您在“每笔交易的最大金额”中有一个值

最后确保名称值参数设置正确。就我而言,它在参数 PASSWORD 上失败了。应该是残疾人。

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

<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 支持他们帮助解决此问题。他们最有帮助。

于 2013-07-02T23:43:12.473 回答
1

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

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

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

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

于 2016-12-23T19:51:41.007 回答
0

您是否使用 API 凭据?或用户凭据?看看:https ://developer.paypal.com/webapps/developer/docs/classic/express-checkout/integration-guide/ECAPICredentials/

于 2013-06-29T03:27:13.207 回答