五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > Paypal國(guó)際版網(wǎng)站集成簡(jiǎn)易教程

Paypal國(guó)際版網(wǎng)站集成簡(jiǎn)易教程

文章來(lái)源:365jz.com     點(diǎn)擊數(shù):1660    更新時(shí)間:2009-09-15 10:07   參與評(píng)論

轉(zhuǎn)自:http://www.chenchen.org/article/paypal/4.htm

Paypal國(guó)際版網(wǎng)站集成簡(jiǎn)易教程(一):序言

      前段時(shí)間接到一個(gè)外貿(mào)網(wǎng)站的項(xiàng)目,集成paypal支付接口的,對(duì)象是海外用戶,全部用US的信用卡結(jié)算。國(guó)內(nèi)有個(gè)paypal的中文版,叫貝寶,不過(guò)只支持人民幣之間的結(jié)算,而且提供的功能不多。所以只能使用paypal國(guó)際版,也就是paypal.com,習(xí)慣性的google了一下相關(guān)資料,發(fā)現(xiàn)關(guān)于paypal.com接口的中文文檔并不多,也不詳細(xì),只好自己上paypal.com研究,還好paypal上的資料非常齊全,而且還提供了開發(fā)者沙盒(sandbox),相比之下,國(guó)內(nèi)流行的支付寶還有很長(zhǎng)的路要走啊。
    
      項(xiàng)目結(jié)束的時(shí)候就有想法寫一篇網(wǎng)站集成paypal的簡(jiǎn)易教程,方便以后的各位開發(fā)者,畢竟看長(zhǎng)篇英文資料是很頭痛的事情^_^。一直到昨天期末考才結(jié)束,所以今天開始寫這個(gè)教程,其實(shí)內(nèi)容也不多,可能還算不上教程,只能算經(jīng)驗(yàn)吧。

      主要分為序言、支付按鈕、返回信息方式(IPN&PDT)、實(shí)例四部分組成,預(yù)計(jì)在三天內(nèi)完成,如果有新內(nèi)容我臨時(shí)再加吧。
    
      接下來(lái)一篇將會(huì)介紹如何在網(wǎng)站上快速加入paypal支付按鈕。

 

Paypal國(guó)際版網(wǎng)站集成簡(jiǎn)易教程(二):快速加入支付按鈕

      本篇主要介紹如何在你的網(wǎng)站上快速加入paypal支付按鈕,通過(guò)這個(gè)按鈕,人們可以方便快速的付款到你的paypal帳戶。
      首先,你需要注冊(cè)一個(gè)paypal帳戶,帳戶類型分為Personal(個(gè)人)、Premier(高級(jí))和Business(商業(yè)),他們的差別對(duì)于開發(fā)者來(lái)說(shuō)主要是返回的信息,Personal的不能使用IPN和PDT等商家工具,即不能獲取交易信息,但是Personal帳戶收款無(wú)需手續(xù)費(fèi);Premier和Business當(dāng)然就提供了IPN和PDT功能,能夠在客戶支付成功后,將交易信息傳給指定的網(wǎng)站,用來(lái)二次使用。Premier和Business使用上的差異我不是很清楚,應(yīng)該是月收款額和手續(xù)費(fèi)上的區(qū)別吧。
      這里插進(jìn)來(lái)介紹一下paypal sandbox,也就是沙盒,是paypal提供給開發(fā)者的一個(gè)工具,非常好用,你可以在https://developer.paypal.com/注冊(cè)和使用它。登錄以后可以新建帳戶,設(shè)置余額和帳戶類型,有一點(diǎn)要注意,每次使用時(shí)必須先登錄sandbox才能使用新建的那些帳戶。Sndbox里面有個(gè)測(cè)試工具,可以發(fā)送IPN的,以后會(huì)用到。

      接著上面的內(nèi)容,注冊(cè)完帳戶以后,當(dāng)然,一開始開發(fā)最好使用sandbox,不然資金轉(zhuǎn)來(lái)轉(zhuǎn)去手續(xù)費(fèi)都扣光了,paypal的費(fèi)率如下:
      
      比起國(guó)內(nèi)的支付工具,paypal貴了好多,當(dāng)然,和國(guó)情也有關(guān)系。
    
      接下來(lái)是按鈕的代碼,很簡(jiǎn)單,就是一個(gè)普通的網(wǎng)頁(yè)表單代碼:
      

程序代碼 程序代碼
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
   
<input type="hidden" name="cmd" value="_xclick">
   
<input type="hidden" name="business" value="sample@sample.com">
   
<input type="hidden" name="item_name" 
   value
="Item Name Goes Here">
   
<input type="hidden" name="item_number" 
   value
="Item Number Goes Here">
   
<input type="hidden" name="amount" value="100.00">
   
<input type="hidden" name="no_shipping" value="2">
   
<input type="hidden" name="no_note" value="1">
   
<input type="hidden" name="currency_code" value="USD">
   
<input type="hidden" name="bn" value="IC_Sample">
   
<input type="image" src="https://www.paypal.com/
   en_US/i/btn/x-click-but23.gif"
 
   name
="submit" alt="Make payments with payPal - it's fast, 
   free and secure!"
>
   
<img alt="" 
   src
="https://www.paypal.com/en_US/i/scr/pixel.gif" 
   width
="1" height="1">
</form>



      如果使用sandbox,action地址改成https://www.sandbox.paypal.com/cgi-bin/webscr即可,上面這段還是很容易理解的,看下name和value基本上就能知道每個(gè)值的含義了。
      
      保存用瀏覽器打開,就會(huì)看到一個(gè)paypal的按鈕,點(diǎn)擊過(guò)去按照提示操作,就能付款到business指定值的帳戶了。

      這就是一個(gè)最簡(jiǎn)單的paypal支付按鈕。
      再下一篇中會(huì)講一下如何在付款成功之后,將信息返回到你的網(wǎng)站,大部分需求都是客戶完成付款后返回信息到網(wǎng)站的數(shù)據(jù)庫(kù),記錄網(wǎng)站客服的交易信息。

      最后稍微了解下為什么海外用戶喜歡用自己的網(wǎng)站做生意,而不是像國(guó)內(nèi)一樣用淘寶之類的C2C平臺(tái)。一開始我也很不理解,有免費(fèi)的平臺(tái)為什么要自己建設(shè)網(wǎng)站還要支付paypal的手續(xù)費(fèi),后來(lái)和客戶了解了一下,他們做的事網(wǎng)游虛擬交易,國(guó)外最大的C2C平臺(tái)就是eBay,但只有德國(guó)可以售賣虛擬物品,并且eBay上的交易并不是免費(fèi)的,收取的手續(xù)費(fèi)遠(yuǎn)遠(yuǎn)高于paypal的費(fèi)率,因此,更多的海外用戶選擇自己建設(shè)網(wǎng)站進(jìn)行電子商務(wù)。

 

Paypal國(guó)際版網(wǎng)站集成簡(jiǎn)易教程(三):IPN的使用

      本文內(nèi)容采用知識(shí)共享署名-非商業(yè)性使用-禁止演繹 2.5 中國(guó)大陸許可協(xié)議進(jìn)行許可。

      

引用內(nèi)容 引用內(nèi)容
什么是即時(shí)付款通知IPN
當(dāng)您收到新的付款交易或者已發(fā)生的付款交易的狀態(tài)發(fā)生變化時(shí),PayPal都將異步(即不作為網(wǎng)站付款流程的一部分) 發(fā)送付款詳細(xì)數(shù)據(jù)到您所指定的URL,以便您了解買家付款的具體情況并做出相應(yīng)的響應(yīng)。這個(gè)過(guò)程我們稱作即時(shí)付款通知(簡(jiǎn)稱 IPN)。



      最近事情比較多,一直沒(méi)有繼續(xù)更新,不好意思了,今天難得有空,就把最重要的一段先發(fā)上來(lái)了。

      相信大部分網(wǎng)站集成Paypal都希望能夠?qū)崿F(xiàn)客戶支付完成后返回信息到自己的網(wǎng)站,然后處理這些信息。比如客戶在你的網(wǎng)站上購(gòu)買了一個(gè)產(chǎn)品,通過(guò)Paypal完成了支付,接著Paypal告訴你的網(wǎng)站客戶完成了支付以及支付信息,最后你的網(wǎng)站將這些信息記錄到你自己的數(shù)據(jù)庫(kù)中,并且將你的客戶訂單狀態(tài)設(shè)為已支付,接著你就可以進(jìn)行一系列的相關(guān)訂單的后續(xù)操作。
      IPN就能幫助我們實(shí)現(xiàn)這個(gè)功能,IPN示意圖如下(來(lái)自Paypal.com):
      

      當(dāng)客戶完成支付,Paypal會(huì)在后臺(tái)通過(guò)post方式向你的服務(wù)器傳送交易數(shù)據(jù),來(lái)實(shí)現(xiàn)網(wǎng)站集成的功能。
接下來(lái)我們就來(lái)看IPN的實(shí)現(xiàn)方法。
      第一步,你需要一個(gè)sandbox的帳號(hào),這很重要,因?yàn)樗茏屇汶S心所欲的進(jìn)行測(cè)試,而不用擔(dān)心資金在天上飛。注冊(cè)地址:https://developer.paypal.com/
      第二步,登陸sandbox,新建一個(gè)商家?guī)ぬ?hào)(賣方)和一個(gè)客戶賬號(hào)(買方),其中賣方帳號(hào)必須是Premier或者Business,不然無(wú)法使用IPN功能。
      

      新建買家?guī)ぬ?hào)的時(shí)候記得在Account Balance中加上金額,不然你就沒(méi)錢買東西了,如果paypal.com的帳號(hào)也能這樣加錢多好。
      新建完兩個(gè)帳號(hào):
      

      賣家?guī)ぬ?hào)的test mode要設(shè)為enabled。
      選中business帳號(hào),點(diǎn)擊下面的Enter Sandbox Test Site進(jìn)入sandbox Test Site,登錄,就像普通Paypal帳號(hào)的管理頁(yè)面一樣。
      

      點(diǎn)擊Profile,在Selling Preferences中選擇Instant Payment Notification Preferences,點(diǎn)擊edit加入IPN信息返回的地址,記得勾上前面那個(gè)選項(xiàng),我是用.net寫的接受文件,所以我的IPN地址是http://www.chenchen.org/ipn.aspx,地址只要能在互聯(lián)網(wǎng)上訪問(wèn)到就可以了。
      

      在Profile -> Selling Preferences ->Website Payment Preferences選項(xiàng)中,有一個(gè)Auto Return的選項(xiàng),將它設(shè)為on,并且在下面的return地址中填入你希望的客戶支付完成后返回的地址:
      

       以上就完成了商家端的設(shè)置。

      接下來(lái)是你網(wǎng)站上ipn.aspx文件的編寫,這個(gè)是用來(lái)接收支付數(shù)據(jù)的,是非常關(guān)鍵的一個(gè)文件。
      文件環(huán)境,.net 2.0,語(yǔ)言C#。
      Ipn.aspx文件:此文件不用修改任何東西,代碼都在cs文件中。
      Ipn.aspx.cs文件:關(guān)鍵代碼

      定義一個(gè)VerifyIPN()函數(shù):

程序代碼 程序代碼
bool VerifyIPN()
{
        
string strFormValues = Request.Form.ToString();
        
string strNewValue;
        
string strResponse;
        
string serverURL = "https://www.sandbox.paypal.com/cgi-bin/webscr";

        HttpWebRequest req 
= (HttpWebRequest)WebRequest.Create(serverURL);
        req.Method 
= "POST";
        req.ContentType 
= "application/x-www-form-urlencoded";
        strNewValue 
= strFormValues + "&cmd=_notify-validate";
        req.ContentLength 
= strNewValue.Length;

        StreamWriter stOut 
= new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII);
        stOut.Write(strNewValue);
        stOut.Close();

        StreamReader stIn 
= new StreamReader(req.GetResponse().GetResponseStream());
        strResponse 
= stIn.ReadToEnd();
        stIn.Close();

        
return strResponse == "VERIFIED";
}


       這段代碼的作用是判斷IPN信息是否來(lái)自Pyapal,如果不進(jìn)行判斷,那么惡意用戶完全可以模擬一個(gè)信息post到你的網(wǎng)站上,讓你認(rèn)為訂單已經(jīng)完成支付,所以,必須首先對(duì)接受到的信息進(jìn)行驗(yàn)證。

      代碼的基本原理,serverURL定義了驗(yàn)證地址,sandbox為:https://www.sandbox.paypal.com/cgi-bin/webscr,Paypal.com就是https://www.paypal.com/cgi-bin/webscr。
      將paypal發(fā)送過(guò)來(lái)的所有信息加上一個(gè)&cmd=_notify-validate參數(shù),表示對(duì)這個(gè)信息進(jìn)行驗(yàn)證,全部發(fā)送回paypal驗(yàn)證,如果信息確實(shí)存在,則返回VERIFIED字符串。
驗(yàn)證成功后,就可以用如下形式獲得交易信息:

程序代碼 程序代碼
string ppTx = Request.Form["txn_id"].ToString();
string ppStatus = Request.Form["payment_status"].ToString();
string ppDate = Request.Form["payment_date"].ToString();
string ppItem = Request.Form["item_name"].ToString();
string ppPrice = Request.Form["mc_gross"].ToString();


      每個(gè)變量的解釋可以參考Paypal網(wǎng)站上的說(shuō)明,我這里就不再重復(fù)。

     .cs代碼結(jié)構(gòu)如下:

程序代碼 程序代碼
public partial class paypal_ipn : System.Web.UI.Page
{
    
protected void Page_Load(object sender, EventArgs e)
    {
        
if (VerifyIPN())//驗(yàn)證成功
        {
            
string ppTx = Request.Form["txn_id"].ToString();//獲取post中的各項(xiàng)變量值
                …
            執(zhí)行將數(shù)據(jù)寫入數(shù)據(jù)庫(kù)等操作
        }   
    }

    
bool VerifyIPN()
{
        具體代碼見(jiàn)上。
    }
}


      這樣,就實(shí)現(xiàn)了將支付信息傳回網(wǎng)站的功能。注:當(dāng)交易狀態(tài)發(fā)生改變時(shí),paypal也會(huì)返回一個(gè)ipn,比如完成支付,退款等等。

      介紹一下sandbox中IPN測(cè)試工具,登陸sandbox主帳號(hào),就是你在sandbox上注冊(cè)的那個(gè),不是那些賣家/買家?guī)ぬ?hào)。
      選擇Test Tools -> Instant Payment Notification (IPN) Simulator:

      輸入你的ipn接受文件地址,選擇ipn信息的方式,然后會(huì)讓你填具體信息內(nèi)容,再點(diǎn)擊Send IPN,就能模擬一個(gè)ipn到你網(wǎng)站的頁(yè)面,可以用來(lái)測(cè)試IPN是否正常工作。
      
      
      不過(guò)這個(gè)工具有個(gè)小BUG,就是發(fā)送的IPN里不包括contact_phone這個(gè)變量,但是實(shí)際的IPN里是有的,這里要注意一下。
      注:可以在商家?guī)ぬ?hào)的Profile -> Selling Preferences ->Website Payment Preferences中,選擇Contact Telephone Number這一欄,來(lái)確定是否需要發(fā)送買家聯(lián)系電話。
      

      通過(guò)IPN,你的網(wǎng)站就開始從真正意義上的集成了Paypal。
      這篇文章寫得有些倉(cāng)促,如有疑問(wèn)可以發(fā)送郵件到:chenchen[at]ndwork.com  用@替換[at]。
      下一次我會(huì)講PDT方式,這個(gè)比IPN簡(jiǎn)單很多。

Paypal國(guó)際版網(wǎng)站集成簡(jiǎn)易教程(四):PDT的使用

引用內(nèi)容 引用內(nèi)容
什么是PDT
PDT是一個(gè)安全獲取付款明細(xì)的方式。在買家付完款后,賣家可以通過(guò)此方式即時(shí)獲取付款明細(xì)并顯示給買家看。
      暑假時(shí)候?qū)懥饲懊嫒恼?,后?lái)去電視臺(tái)打工了,幫他們上了一個(gè)人居博覽會(huì),再接著就開學(xué)了,又在杭州、溫州、寧波跑來(lái)跑去。一直不能靜下來(lái)繼續(xù)寫,現(xiàn)在工作又沒(méi)啥著落哈。
      今天難得有感覺(jué)想寫了,不知道是不是中午牛排的威力,趁機(jī)會(huì)就快點(diǎn)寫吧。

      

      上圖是PDT的流程示意。
      1.首先買家付款后通過(guò)事先設(shè)定好的返回url(return)回到您的網(wǎng)站。
      2.接著paypal在返回url后面加上tx變量,即交易號(hào)。
      3.然后網(wǎng)站將收到的tx和您的令牌(paypal賬戶里申請(qǐng))發(fā)回paypal。
      4.paypal驗(yàn)證令牌通過(guò)后,將交易明細(xì)發(fā)回網(wǎng)站。
      5.最后網(wǎng)站將交易明細(xì)顯示給客戶。

      啟用PDT 

如對(duì)本文有疑問(wèn),請(qǐng)?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會(huì)為你解答!! 點(diǎn)擊進(jìn)入論壇

發(fā)表評(píng)論 (1660人查看,0條評(píng)論)
請(qǐng)自覺(jué)遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動(dòng)的言論。
昵稱:
最新評(píng)論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學(xué)習(xí)

業(yè)務(wù)咨詢

· 技術(shù)支持
· 服務(wù)時(shí)間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權(quán)所有 鄂ICP備17013400號(hào)