我正在开发一个使用 PayPal Payment Advanced 的网站。 我已经阅读了文档并尝试了几种获取初始 token 的方法。 下面是我的代码:
将集合变暗为新 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 中的两个帐户。
如果有人提供任何帮助,我们将不胜感激。
最佳答案
我发现了这个问题,我在这里发帖,希望其他人不必经历和我一样的头痛。
当尝试提交 PayPal 预付款测试数据时,您需要确保您确实有一个与 PayPal 管理器关联并绑定(bind)的沙盒帐户电子邮件。我创建了一个虚构的电子邮件,因为我的实际电子邮件已与另一个帐户关联。 因此,请务必访问developer.paypal.com并选择“沙盒帐户”-->“创建帐户”。
创建帐户后,在沙盒测试帐户中选择新条目,然后选择“个人资料”选项卡下的“个人资料”,确保选择 PayPal Payments Pro。
现在,请 PayPal 经理处理。从这里您需要确保 PayPal Sandbox 电子邮件地址已关联。将新帐户添加到开发者沙箱中后,输入电子邮件地址并选择更新。
在交易设置下,确保“每笔交易的最大金额”中有一个值
最后确保名称值参数设置正确。就我而言,参数 PASSWORD 失败。应该是PWD。p>
因此您的表单应按以下示例设置。
<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 支持人员帮助解决此问题。他们非常有帮助。
关于PayPal 付款高级用户身份验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17376360/