1. 程式人生 > >ASP.NET整合PayPal(使用IPN)

ASP.NET整合PayPal(使用IPN)

IPN:即時付款通知(Instant Payment Notify 簡稱IPN)

PayPal設定說明:

1、註冊測試帳號;

2、對於“商家”賬戶的設定;

設定完畢後,以下是程式碼部分

首先:提交請求頁面(各個引數請根據需要修改)

<form id="myForm" action="http://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
<!--<form id="myForm" action="http://www.paypal.com/cgi-bin/webscr" method="post">--><!--實際環境使用這個-->
<input type="hidden" name="cmd" value="_xclick" /><br />
<input type="hidden" name="business" value="這裡填你的PayPal賣家帳號" /><br />
商品名稱:
<input type="text" name="item_name"/><br />
商品編號:
<input type="text" name="item_number" value="123" /><br />
<!--使用貝寶
<input type="hidden" name="currency_code" value="CNY" />-->
<!--使用國際paypal-->
<!---->
<input type="hidden" name="currency" value="USD" />

    <br />
<input type="hidden" name="custom" value="qml" /><br />
<input type="Hidden" name="notify_url" value="付款後返回地址" />
<input type="hidden" name="return" value="付款後返回地址" /><br />
<input type="hidden" name="charset" value="gb2312" />
    <br />
金額:
<input type="text" name="amount"/>
    <br />
<input type="submit" value="確定"/>
</form>


以上點選確定後就跳轉到PayPal付款,

以下是付款後自動返回頁面

protected void Page_Load(object sender, EventArgs e)
    {
        //成功後返回的頁面
        string strFormValues;
        string strResponse;
        string authToken;
        string txToken;
        string query;
        //定義您的身份標記,這裡改成您的身份標記
        authToken = "061Mcp86FHoBkKVtymBBgEgn7Oihzdm-upcgOkH6qazHESlEDMFg7vtKzWu";
        //獲取PayPal 交易流水號
        txToken=Request.QueryString["tx"];
        // Set the 'Method' property of the 'Webrequest' to 'POST'.
        HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create("http://www.sandbox.paypal.com/cgi-bin/webscr");
        //HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create("http://www.paypal.com/cgi-bin/webscr");
        myHttpWebRequest.Method = "POST";
        myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
        //設定請求引數
        query = "cmd=_notify-synch&tx=" + txToken+ "&at=" +authToken;
        ASCIIEncoding encoding = new ASCIIEncoding();
        byte[] byte1 = encoding.GetBytes(query);
        strFormValues = Encoding.ASCII.GetString(byte1);
        myHttpWebRequest.ContentLength = strFormValues.Length;
        //傳送請求
        StreamWriter stOut = new StreamWriter(myHttpWebRequest.GetRequestStream(), System.Text.Encoding.ASCII);
        stOut.Write(strFormValues);
        stOut.Close();
        //接受返回資訊
        StreamReader stIn = new StreamReader(myHttpWebRequest.GetResponse().GetResponseStream());
        strResponse = stIn.ReadToEnd();
        stIn.Close();
        //取前面七個字元
        string isSuccess = strResponse.Substring(0, 7);
        Response.Write(isSuccess);
        //顯示返回的字串,
        Response.Write(strResponse);

        if (isSuccess == "SUCCESS")
        {
            Response.Write("RESPONSE SUCESS\n ");//此處需要判斷網站訂單是否已經處理
            Response.Write("item_number:" + Request.QueryString["item_number"].ToString()+"\n");
        }
        else
        {
            Response.Write("\n response fail");
        }
    }

如果得不到返回字串,就需要檢查“商家”賬戶是否開通,是否已經設定資料返回
PayPal返回資訊說明請檢視