C# Paypal开发者测试版:测试交易未列在Sandbox业务帐户中

C# Paypal开发者测试版:测试交易未列在Sandbox业务帐户中,c#,.net,paypal,paypal-sandbox,C#,.net,Paypal,Paypal Sandbox,所以。。。。。似乎贝宝开发者决定从2013年开始改变他们全新网站上的一切,这让我过去几天的生活很痛苦。请注意,我是一个全新的网站整合贝宝。我试图学习本教程,但它是从2009年开始的: 我没有使用贝宝Api。不知道我该不该 以下是我所做的: 1) 我转到并使用自己的paypal帐户登录 2) 这是一个棘手的部分。在我检查过的教程中,有一个创建“预配置测试帐户”的选项,但它不再可用。所以我用新的createaccount按钮创建了两个测试帐户(或者我认为是这样)。一个个人(买方)和一个企业(卖方)。

所以。。。。。似乎贝宝开发者决定从2013年开始改变他们全新网站上的一切,这让我过去几天的生活很痛苦。请注意,我是一个全新的网站整合贝宝。我试图学习本教程,但它是从2009年开始的:

我没有使用贝宝Api。不知道我该不该

以下是我所做的:

1) 我转到并使用自己的paypal帐户登录

2) 这是一个棘手的部分。在我检查过的教程中,有一个创建“预配置测试帐户”的选项,但它不再可用。所以我用新的createaccount按钮创建了两个测试帐户(或者我认为是这样)。一个个人(买方)和一个企业(卖方)。没有教程提到,如果这些测试帐户的邮件地址需要存在,或者如果他们可以是虚构的。。。我将买方设置为真实的(我为本测试创建的),将卖方设置为虚构的

3) 在我的测试卖家帐户中,我用我的CallbackUrl激活了AutoReturn,激活了支付数据传输(PDT),并将令牌放在我的web.config中

4) 再次遵循教程,我创建了我的.NETVisualStudio项目。一些非常简单的东西,一个Default.aspx,回调.aspx和一个取消的.aspx。Callback用于检查事务是否成功,Cancelled用于检查用户是否取消了事务

5) 以下是Default.aspx的code/Paypal hiddenfield变量。没什么特别的:

<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>
7) 到目前为止,还没有那么复杂。之后,我首先登录我的Paypal开发者帐户。我启动这个项目并进行测试。按buy now按钮,按预期重定向到Paypal沙盒测试商店。我使用我的买家测试帐户登录,单击“立即付款”。过程交易成功。页面按预期将我重定向到Callback.aspx,并显示成功消息。不那么寒酸

8) 但这是另一个棘手的部分。在Paypal开发者网站上,我看到买家/卖家通知说已经发送/收到了付款。我在sandbox中以测试买家的身份登录并检查最近的活动:一个条目显示付款已完成(状态)。我以测试卖家的身份登录,我检查了最近的活动,没有看到任何交易条目,但Paypal余额增加了,这意味着付款增加了

我不明白。。。这会发生吗?我做错什么了吗?如果我使用这些设置,一切都会出问题吗

在一个视频教程中,它清楚地显示了卖家测试帐户中的一个交易条目,这对我没有什么帮助。为什么我的没有出现,或者我之前做过的无数测试事务中的任何一个都没有出现

有人能确保这个过程是合法的吗?这会让我放心很多。当我真的不确定这件事的时候,我会觉得不舒服。此代码是否足以创建付款后逻辑,如更新我的数据库,以说明付款已完成或取消?如果有更简单的方法,请告诉我


提前非常感谢你,为这部史诗小说感到抱歉

默认情况下,新的沙盒业务帐户当前已启用Payments Pro,并且帐户布局不同于标准的业务或个人帐户。对于Pro帐户,您首次登录时在帐户概览页面上看不到交易记录


要查看Pro帐户上的交易记录,您需要打开“历史记录”选项卡。你明白了,你可以走了。我担心交易没有出现在历史记录选项卡上,但这似乎不是问题所在,因此这是一种解脱

这可能是沙箱问题的一部分。上周左右,沙盒历史记录重定向到实时站点时出现问题。您能否为您的测试付款之一提供交易ID?我想查找并进一步研究它。以下是我尝试的几个测试事务中的3个:事务ID:4TU573346J375571Y/事务ID:1F165987SS041432U/事务ID:54P93871C25568352您登录的帐户是“MyMechantLice”,对吗?我无法重现这个问题。当我完成“付款标准”按钮时,详细信息将正确显示在卖方和买方帐户中。你能提供一个屏幕截图吗?我可以用它来展示沙箱工程师。是的,这是商人帐户。如果我错了,请告诉我,在卖家帐户中,收到的所有交易/付款不会显示在默认/概览页面上,即我们登录后登录的页面上,对吗?单击“查看交易>收到的付款”链接后,它们将显示在页面中。我相信这就是让我困惑的原因。我认为交易会出现在概览上,就像买家账户一样。。。我刚刚重新检查了我的测试帐户,看到了我上周做的所有测试事务。那么,这是否意味着我的代码是合法的,并且可以在实时环境中工作?以下是我今天做的最后一次测试事务的屏幕截图:/Patrick,谢谢你的帮助。如果这意味着我的代码是正确的,那么只有我被吓坏了。抱歉吓到你了。
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...";
    }
}