轉(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è)表單代碼:
如果使用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)行許可。
最近事情比較多,一直沒(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ù):
這段代碼的作用是判斷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)證成功后,就可以用如下形式獲得交易信息:
每個(gè)變量的解釋可以參考Paypal網(wǎng)站上的說(shuō)明,我這里就不再重復(fù)。
.cs代碼結(jié)構(gòu)如下:
這樣,就實(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的使用
如對(duì)本文有疑問(wèn),請(qǐng)?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會(huì)為你解答!! 點(diǎn)擊進(jìn)入論壇