所以......似乎Paypal Developer决定在2013年改变他们全新网站上的所有内容,这让我过去几天的生活变得悲惨。请注意,我在网站上整合Paypal是全新的。我尝试按照本教程,但是从2009年开始:http://www.codeproject.com/Articles/42894/Introduction-to-PayPal-for-C-ASP-NET-developers
我没有使用Paypal Api。不知道我应该吗?
这就是我的所作所为:
1)我去https://developer.paypal.com/并使用我自己的PayPal帐户登录。
2)这是一个棘手的部分。在我检查的教程中,有一个选项可以创建“预配置的测试帐户”,但它不再可用。所以我用他们的新创建帐户按钮创建了两个测试帐户(或者我认为)。一个人(买方)和一个商业(卖方)。没有教程提到这些测试帐户的邮件地址是否需要存在或者它们是否是虚构的......我让买家成为真实的(我为此测试创建的)和卖家虚构的。
3)在我的测试卖家帐户中,我使用CallbackUrl激活了AutoReturn,并激活了付款数据传输(PDT)并将令牌放在我的web.config中。
4)再次按照教程,我创建了我的.Net Visual Studio项目。非常简单的东西,Default.aspx,Callback.aspx和Cancelled.aspx。回调以检查交易是否成功,并取消以检查用户是否取消了交易。
5)这是Default.aspx的代码/ Paypal隐藏字段变量。没什么好看的:
<form id="form1" action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" runat="server">
<div>
<!-- Type: Buy Now/Simple Payment -->
<input type="hidden" name="cmd" value="_xclick" />
<!-- PayPal ID or an email address associated with your PayPal account -->
<input type="hidden" name="business" value="THE-SELLER-MAIL-ADRESS" />
<!-- Name of service selected -->
<input type="hidden" name="item_name" value="Forfait Regulier" />
<!-- Currency -->
<input type="hidden" name="currency_code" value="CAD" />
<!-- Return method: 2 – the buyer’s browser is redirected to the return URL by using the POST method, and all payment variables are included -->
<input type="hidden" name="rm" value="2" />
<!-- Button text -->
<input type="hidden" name="cbt" value="Retourner sur Bloc D'Affaires" />
<!-- Cancel callback url -->
<input type="hidden" name="cancel_return" value="http://dev.triarts.ca/Pages/Cancelled.aspx" />
<!-- Amount -->
<input type="hidden" name="amount" value="10.00" />
<!-- Don't show Shipping adress form -->
<input type="hidden" name="no_shipping" value="1" />
<!-- Don't show seller note box -->
<input type="hidden" name="no_note" value="1" />
<!-- Button -->
<input type="submit" value="Payer" />
</div>
</form>
6)Callback.aspx的代码隐藏,采用并改编自上面提到的2009年教程:
protected void Page_Load(object sender, EventArgs e)
{
string authToken = WebConfigurationManager.AppSettings["PDTToken"];
//read in tx token from querystring
string txToken = Request.QueryString.Get("tx");
string query = string.Format("cmd=_notify-synch&tx={0}&at={1}",
txToken, authToken);
// Create the request back
string url = WebConfigurationManager.AppSettings["PayPalSubmitUrl"];
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
// Set values for the request back
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = query.Length;
// Write the request back IPN strings
StreamWriter stOut = new StreamWriter(req.GetRequestStream(),
System.Text.Encoding.ASCII);
stOut.Write(query);
stOut.Close();
// Do the request to PayPal and get the response
StreamReader stIn = new StreamReader(req.GetResponse().GetResponseStream());
string strResponse = stIn.ReadToEnd();
stIn.Close();
// If response was SUCCESS, parse response string and output details
if (strResponse.StartsWith("SUCCESS"))
{
Label1.Text = "Success";
}
else
{
Label1.Text = "Oooops, something went wrong...";
}
}
7)到那里,并不复杂。之后,我首先登录我的Paypal开发者帐户。我启动项目并测试它。按下立即购买按钮,按预期重定向到Paypal Sandbox Test Store。我使用我的买家测试帐户登录,点击立即付款。处理。交易成功。该页面按预期将我重定向到Callback.aspx,并显示Success消息。不那么破旧。
8)但这是另一个棘手的部分。在Paypal开发者网站上,我看到买家/卖家通知说已发送/接收付款。我在沙箱中作为测试买家登录并检查最近的活动:条目显示付款已完成且已完成(状态)。我作为测试卖家登录,我检查最近的活动,我看到没有交易条目,但Paypal余额增加,这意味着付款被添加了?!? ......
我不明白......这是否应该发生?我做错什么了吗?如果我使用这些设置,那么一切都会出错吗?
在一个对我没有帮助的视频教程中,它清楚地显示了卖家测试帐户中的交易条目。为什么我没有出现,或者直到现在我做过的任何无数的测试交易?
任何人都可以确保这个过程合法吗?它会让我放心。当我对此不太确定时,我感到不舒服。这段代码是否足以创建支付后逻辑,例如更新我的数据库以提及付款已完成或已取消?如果有更简单的方法,请不要犹豫告诉我。
非常感谢你,对这部史诗小说感到抱歉。
答案 0 :(得分:0)
新Sandbox Business帐户目前默认启用Payments Pro,帐户布局与标准商户或个人帐户不同。使用专业版帐户,首次登录时,您无法在“帐户概览”页面上看到这些交易。
要查看专业版帐户中的交易,您需要打开“历史记录”标签。你想出来了,你很高兴。我担心交易没有出现在历史记录选项卡上,但这似乎不是问题所以这是一种解脱。