0

我有一个用于试用的贝宝沙箱帐户一个 aspx 页面:sampleprocess.aspx

在 Merchant A/c 中,页面 在付款完成后被重定向到http://www.Hostsite.com/member/samplepaypal.aspx 。

在 samplepaypal.aspx.cs 页面加载:

protected void Page_Load(object sender, EventArgs e)
    {
        //string tx = Request.QueryString["tx"];
        //Post back to either sandbox or live
        string strSandbox = "https://www.sandbox.paypal.com/cgi-bin/webscr";
        string strLive = "https://www.paypal.com/cgi-bin/webscr";
        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(strSandbox);

        //Set values for the request back
        req.Method = "POST";
        req.ContentType = "application/x-www-form-urlencoded";
        byte[] param = Request.BinaryRead(HttpContext.Current.Request.ContentLength);
        string strRequest = Encoding.ASCII.GetString(param);
        strRequest += "&cmd=_notify-validate";

        req.ContentLength = strRequest.Length;

        //for proxy
        //WebProxy proxy = new WebProxy(new Uri("http://url:port#"));
        //req.Proxy = proxy;

        //Send the request to PayPal and get the response
        StreamWriter streamOut = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII);
        streamOut.Write(strRequest);
        streamOut.Close();
        StreamReader streamIn = new StreamReader(req.GetResponse().GetResponseStream());
        string strResponse = streamIn.ReadToEnd();
        streamIn.Close();

        if (strResponse == "VERIFIED")
        {
            lblmsg.Text = "Verified";
            //check the payment_status is Completed
            //check that txn_id has not been previously processed
            //check that receiver_email is your Primary PayPal email
            //check that payment_amount/payment_currency are correct
            //process payment
        }
        else if (strResponse == "INVALID")
        {
            lblmsg.Text = "Not Verified";
            //log for manual investigation
        }
        else
        {
            lblmsg.Text = "IPN Logged";
            //log response/ipn data for manual investigation
        }
    }

在这里我得到结果“无效”!有什么问题请纠正错误。从贝宝发回http://www.Hostsite.com/member/samplepaypal.aspx页面后,它显示:

http://111.111.111.111/member/samplepaypal.aspx?tx=8L903541KW5338647&st=Pending&amt=100.00&cc=USD&**cm=&item_number=&**sig=QRmNHFf5%2fAH3io9Tn2kj%2fuicu3gpAuMew701OvazfkCdN3jSR5tmFoX3OUPbQlZGoj2PY7vI%2fP1dH84g1CEzSG9NhjnLbjuAFFHyENVsBjKb1dVvK1nZe3FJfElZt11qPfggMOPu8%2bUhDwHekJvNAcXkjLQV01vAjN1y%2fZs1rJw%3d

这些 cm 和 item_number 是什么是空白的!如何获得“有效”响应。

帮助表示赞赏..!

4

1 回答 1

1

使用回发进行验证:

如果您无法使用共享密钥进行通知验证,则可以改为使用回发到 PayPal。您的回发必须包含与您在通过 PayPal 发布到您的服务器的 IPN 中收到的完全相同的变量和值,并且它们的顺序必须相同。

构建你的回发

使用这些指南来构建您对 PayPal 的回发:。

  1. 您的回发必须发送到https://www.paypal.com/cgi-bin/webscr。注意:您可以在没有 SSL 的情况下实施 IPN,包括用于验证的回发,但 PayPal 建议不要这样做。

  2. 您的回发必须包含值为 _notify-validate 的变量 cmd:cmd=_notify-validate

  3. 您的回发必须包含与您在 IPN 中从 PayPal 收到的完全相同的变量和值,并且它们的顺序必须相同。

处理 PayPal 对您的回发的响应 PayPal 在响应正文中使用一个词来响应您的回发:已验证或无效。当您收到 VERIFIED 回发响应时,请对 IPN 中的数据执行以下检查:

  1. 检查 payment_status 是否已完成。

  2. 如果 payment_status 为 Completed,请对照您处理的上一个 PayPal 交易检查 txn_id,以确保它不是重复的。

  3. 检查 receiver_email 是在您的 PayPal 帐户中注册的电子邮件地址。

  4. 检查在 mc_gross 中携带的价格和在 mc_currency 中携带的货币对于 item_name 或 item_number 中携带的项目是否正确。完成上述检查后,通知验证完成。您可以使用提供的信息更新您的数据库,并且可以启动其他适当的自动化后端处理。

于 2012-09-10T12:43:00.923 回答