目 錄
如果您已經有PayPal賬戶了,那恭喜您,您可以直接跳過這部分。
如果還沒有PayPal賬戶,那您可以通過https://www.paypal.com訪問主頁,如圖1-1所示,點擊 “Sign Up”或“Sign Up Now”按鈕立即注冊一個PayPal賬戶。如需幫助,您可以點擊主頁上方的“幫助”按鈕或在您的瀏覽器中輸入
https://www.paypal.com/cgi-bin/webscr?cmd=_help-ext&source_page=_home
獲取幫助。
獲取幫助。
點擊這裏 |
圖1-1 PayPal主頁
注冊完以後,您就可以開始您的PayPal之旅了!
PayPal可以讓您輕鬆地通過您的網站接受單件物品的付款。“Buy Now”(立即購買)按鈕可以在幾分鍾內實施,讓來自PayPal數百萬用戶的商家和捐贈人以及網絡上的任何其他買家輕鬆訪問您的網站。
那如何在您自己的網站上創建一個“Buy Now”按鈕呢?很簡單,如圖2-1,這裏我們集成了PayPal 的“Buy Now”按鈕;
圖2-1 立即購買Buy Now示例
創建這個“Buy Now”按鈕有兩種方法:
方法1-登陸PayPal網站自動創建
您可以通過登陸PayPal網站自動為您創建“Buy Now”按鈕。創建方法請參考 “PayPal網站付款標準版交易方式確認集成指南”(以下簡稱“集成指南”,下載方法見附錄1)文檔。
方法2-用網頁編輯器直接編寫代碼
利用您喜歡的網頁編輯器(如DreamWeaver)直接編輯HTML代碼,在您想要出現“Buy Now”按鈕的位置上插入以下示例代碼:
1
2
3
4
5
6
7
8
9
10 |
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="paypal@yoursite.com">
<input type="hidden" name="item_name" value="SIGMA SD1000">
<input type="hidden" name="amount" value="399.00">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="lc" value="US">
<input type="hidden" name="return" value="http://www.yoursite.com/thanks.html">
<input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-but23.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!">
</form> |
其中:
n 第1、2、10行是必須且不可更改得;
n 第3行用於設置您得PayPal賬戶,即修改粗體部分(下同);
n 第4,5行設置商品得屬性,包括商品描述,價格;
n 第6行用於設置貨幣種類,關於貨幣描述請參考附錄2;
n 第7行用於設置目標客戶國家所在地,其值可參考附錄6;
n 第8行用於設置客戶付完款後返回您網站的地址,具體請參考PDT/IPN參考文檔;
n 第9行在一般情況下無需改動。
除此之外,您可以根據實際需要增加、修改或刪除一些變量。
所有“Buy Now”按鈕可用變量您可以參考“集成指南”文檔中“HTML示例與立即購買,捐贈和購物車變量”部分;也可以訪問英文網站:
https://www.paypal.com/IntegrationCenter/ic_std-variable-reference.html
如果您的網站還沒有集成購物車功能,您可以通過創建“Add to Cart”按鈕直接使用PayPal的購物車。
如果您的網站已經有自己的購物車或者已經集成了第三方購物車的功能,那您可以通過創建“Upload Cart”按鈕將您的購物車明細上傳給PayPal並通過PayPal進行付款;您也可以為已有購物車生成一個訂單,並通過創建PayPal的“Buy Now”按鈕進行付款(其中:商品名稱可以為您的訂單號,商品價格可以為訂單總價)。
如圖3-1所示,這裏我們集成了PayPal“Add to Cart”按鈕:
圖3-1 “Add to Cart”按鈕
當點擊“Add to Cart”按鈕時,該商品即被加入到您的PayPal購物車裏,如圖3-2所示:
圖3-2 PayPal購物車詳情
創建“添加到購物車”按鈕有兩種方法:
方法1-登陸PayPal網站自動創建
您可以通過登陸PayPal網站自動為您創建“添加到購物車”按鈕。創建方法請參考“集成指南”文檔中“創建購物車按鈕(第37頁)”部分。
方法2-用網頁編輯器直接編寫代碼
利用您喜歡的網頁編輯器(如DreamWeaver)直接編輯HTML代碼,在您想要出現“添加到購物車”按鈕的位置上插入以下代碼:
1
2
3
4
5
6
7
8
9
10
11 |
<form target="paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_cart">
<input type="hidden" name="add" value="1">
<input type="hidden" name="business" value="paypal@yoursite.com">
<input type="hidden" name="item_name" value="PPShopping Cart Example">
<input type="hidden" name="amount" value="99.99">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="lc" value="US">
<input type="hidden" name="return" value="http://www.yoursite.com/thanks.html">
<input type="image" src=https://www.paypal.com//en_US/i/btn/sc-but-01.gif
border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!"> </form> |
其中:
n 第1、2、3、11行是必須且不可更改得;
n 第4行用於設置您得PayPal賬戶;
n 第5,6行設置商品得屬性,包括商品描述及價格;
n 第7行用於設置貨幣種類,關於貨幣描述請參考附錄2;
n 第8行用於設置目標客戶國家所在地,其值可參考附錄6;
n 第9行用於設置客戶付完款後返回您網站的地址,具體請參考PDT/IPN文檔;
n 第10行在一般情況下無需改動。
除此之外,您可以根據實際需要增加、修改或刪除一些變量。
所有“添加購物車”按鈕可用變量您可以參考“集成文檔”中“HTML示例與立即購買,捐贈和購物車變量”部分;也可以訪問網址:
【注】
n 若要顯示當前購物車信息,您隻需將
<input type="hidden" name="add" value="1">
改為
<input type="hidden" name="display" value="1">
若上麵兩句同時存在,則隻顯示當前購物車信息;
<input type="hidden" name="add" value="1">
改為
<input type="hidden" name="display" value="1">
若上麵兩句同時存在,則隻顯示當前購物車信息;
n 在FORM裏需設置target="paypal"以使購物頁麵和購物車頁麵分開;
若您的網站已經有自己的購物車或已經集成了第三方購物車,如圖3-3所示,那您可以通過創建“上傳購物車”按鈕將購物車詳細信息上傳給PayPal,然後通過PayPal來進行付款。
圖3-3 第三方購物車
在您的購物車頁麵適合的位置上插入以下代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 |
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_cart">
<input type="hidden" name="upload" value="1">
<input type="hidden" name="business" value="paypal@yoursite.com">
<input type="hidden" name="item_name_1" value="San Francisco Bay(32'X32')">
<input type="hidden" name="amount_1" value="250.00">
<input type="hidden" name="quantity_1" value="1">
<input type="hidden" name="item_name_2" value="Mount Hamilton(24'x15')">
<input type="hidden" name="amount_2" value="50.00">
<input type="hidden" name="quantity_2" value="1">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="lc" value="US">
<input type="hidden" name="return" value="http://www.yoursite.com/thanks.html">
<input type="submit" value="Upload Cart" alt="Make payments with PayPal - it's fast, free and secure!">
</form> |
其中:
n 第1、2、3、18行是必須且不可更改得;
n 第4行用於設置您得PayPal賬戶;
n 第6~8、10~12行分別設置了商品1,2得屬性,包括商品描述,商品價格及數量;如需添加更多商品,可照此類推;
n 第14行用於設置貨幣種類,關於貨幣描述請參考附錄2;
n 第15行用於設置目標客戶國家所在地,其值可參考附錄6;
n 第16行用於設置客戶付完款後返回您網站的地址,具體請參考PDT/IPN文檔部分;
n 第17行在一般情況下無需改動。
除此之外,您可以根據實際需要增加、修改或刪除一些變量。
點擊“Upload Cart”後,將顯示PayPal支付頁麵,如圖3-4所示:
點擊這裏 |
圖3-4 用PayPal支付您的購物車
點擊圖3-4藍色倒三角則可以顯示此次購物車的詳情,如圖3-5所示:
圖3-5 PayPal購物車詳情
所有“上傳購物車”按鈕可用變量您可以參考“集成指南”文檔中“HTML示例與立即購買,捐贈和購物車變量”部分;也可以訪問網址
https://www.paypal.com/IntegrationCenter/ic_std-variable-reference.html
【注】
n 若變量“quantity_X”沒有設置,則默認為1;
4 加密網站付款EWP
在第二章和第三章,我們列舉了很多PayPal 付款按鈕的實例代碼。很明顯,這些代碼中的一些關鍵信息,如PayPal賬戶、金額等都是未經過加密的,根據實際需要,您可以對這些信息進行加密;目前,PayPal提供了基於.NET和JAVA的加密示例,使用方法如下:
4.1 使用加密網站付款的先決條件
在使用加密的網站付款之前,您必須:
n 生成一個私鑰;
n 生成一個公共證書;
n 將您的公共證書上傳到PayPal網站;
n 下載PayPal的公共證書。
關於私鑰和公共證書的定義您可以參考“集成指南”文檔中“加密的網站付款/密鑰和證書”部分;
第1步-創建您的公共證書
下載OpenSSL並安裝
對於windows用戶,您可以從http://www.openssl.org/related/binaries.html或http://www.slproweb.com/products/Win32OpenSSL.html直接下載OpenSSL for Windows,下載完後直接安裝,安裝時建議您安裝在某個盤的根目錄下,如c:\OpenSSL。
對於非windows用戶,您可以從http://www.openssl.org/source下載您需要的版本,然後根據您實際的操作係統進行編譯安裝,示例如下:
Login as root.
Shell> tar –gz **.tar.gz
Shell> config
Shell> make
Shell> make install |
創建私鑰和公共證書;
使用OpenSSL程序,輸入以下命令創建您的私鑰。該命令生成一個1024位的RSA私鑰。該私鑰存儲在文件<basename>-prvkey.pem中:
OpenSSL genrsa -out <basename>-prvkey.pem 1024
使用OpenSSL程序,輸入以下命令創建您的公共證書。該命令在文件<basename>-pubcert.pem中生成公共證書:
OpenSSL req –new –key <basename>-prvkey.pem –x509 –days 365 –out
<basename>–pubcert.pem
<basename>–pubcert.pem
【注】
n OpenSSL 在OpenSSL得安裝目錄得bin下,若是在非windows操作係統中,請注意大小寫和路徑;
n 您可以將<basename>改寫成您想要的名字;
創建PKCS12文件(適用於後麵用JAVA生成加密代碼)
要創建PKCS12文件,輸入下麵OpenSSL命令,該命令在文件<basename>-prvkey.p12 中生成PKCS12文件:
OpenSSl pkcs12 -export -inkey <basename>-prvkey.pem –in
<basename>-pubcert.pem -out <basename>-prvkey.p12
<basename>-pubcert.pem -out <basename>-prvkey.p12
【注】
n 執行此命令時,將會提示您輸入密碼,請記住此密碼,下麵用JAVA生成加密代碼時將會提示您輸入此密碼。
第2步-上傳您的公共證書
1) 登錄到您的PayPal企業或高級賬戶;
2) 點擊“Profile”子選項卡;
3) 從右側菜單中點擊“Encrypted payment Settings”鏈接;
4) 點擊“Add”;
5) 在窗口“Add Certificate”點擊“瀏覽…”並選擇您上麵創建的公共證書。
【注】
n 公共證書必須為PEM格式,如上麵的<basename>-pubcert.pem。
如果您的公共證書上傳成功,它將出現在您的公共證書下的下一個屏幕上,如圖4-1所示,您可以得到一個唯一的公共證書號(Cert ID):
圖4-1 公共證書示例
【注】
n 請記住這個證書號,此證書號將在後麵生成加密代碼時使用;
n 一個PayPal賬戶最多可以獲取6個不同的證書號。
第3步-下載PayPal的公共證書
1) 登錄到您的PayPal企業或高級賬戶;
2) 點擊“Profile”子選項卡;
3) 點擊右側菜單中 “Encrypted payment Settings”鏈接;
4) 點擊“PayPal Public Certificate”下的“Download”按鈕;
4.2 創建加密按鈕
在進行創建加密按鈕之前,我們必須將原來HTML代碼中付款數據部分轉換成一個字符串形式,字符串按格式<variable_name>=<value>組成,變量與變量之間用“,”隔開,具體情況舉例如下:
1) 立即購買 / Buy Now
假設原來“Buy Now”按鈕的數據部分如下:
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="paypal@yoursite.com">
<input type="hidden" name="item_name" value="SIGMA SD1000">
<input type="hidden" name="amount" value="399.00">
<input type="hidden" name="currency_code" value="USD">
<input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-but23.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!">
</form> |
則我們可以把它轉換成:
cmd=_xclick,business=paypal@yoursite.com,item_name=SIGMASD1000,currency_code=USD,amount=399.00,cert_id=<證書號> |
【注】
n 請將<證書號>替換成您自己的證書號,如上麵一個證書號是“4UXSJFDZ8A2PL”則在這“cert_id=<證書號>”就寫成“cert_id=4UXSJFDZ8A2PL”;
n 其中cmd=_xclick, business, item_name, amount及cert_id是必須的。
2) 添加到購物車 / Add to Cart
假設原來“Add to Cart”按鈕的數據部分如下:
<form target="paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_cart">
<input type="hidden" name="add" value="1">
<input type="hidden" name="business" value="paypal@yoursite.com">
<input type="hidden" name="item_name" value="PPShopping Cart Example">
<input type="hidden" name="amount" value="99.99">
<input type="hidden" name="currency_code" value="USD">
<input type="image" src="https://www.paypal.com//en_US/i/btn/sc-but-01.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!">
</form> |
則我們可以把它轉換成:
cmd=_cart,add=1,business=paypal@yoursite.com,item_name=PPShoppingCartExample,currency_code=USD,amount=99.99,cert_id=<證書號> |
【注】
n 請將<證書號>替換成您自己的證書號,如上麵一個證書號是“4UXSJFDZ8A2PL”則在這“cert_id=<證書號>”就寫成“cert_id=4UXSJFDZ8A2PL”;
n 其中cmd=_xclick, add, business, item_name, amount及cert_id是必須的。
3) 上傳購物車 / Upload Cart
假設原來“Upload Cart”按鈕的數據部分如下:
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_cart">
<input type="hidden" name="upload" value="1">
<input type="hidden" name="business" value="paypal@yoursite.com">
<input type="hidden" name="item_name_1" value="San Francisco Bay(32'X32')">
<input type="hidden" name="amount_1" value="250.00">
<input type="hidden" name="quantity_1" value="1">
<input type="hidden" name="item_name_2" value="Mount Hamilton(24'x15')">
<input type="hidden" name="amount_2" value="50.00">
<input type="hidden" name="quantity_2" value="1">
<input type="hidden" name="currency_code" value="USD">
<input type="submit" value="Upload Cart" alt="Make payments with PayPal - it's fast, free and secure!">
</form> |
則我們可以把它轉換成:
cmd=_cart,upload=1,business=paypal@yoursite.com,item_name_1=SanFranciscoBay(32’x32’),amount_1=250.00,quantity_1=1,item_name_2=MountHamilton(24’x15’),amount_2=1,quantity_2=1,,currency_code=USD,cert_id=<證書號> |
【注】
n 請將<證書號>替換成您自己的證書號,如上麵一個證書號是“4UXSJFDZ8A2PL”則在這“cert_id=<證書號>”就寫成“cert_id=4UXSJFDZ8A2PL”;
n 其中cmd=_xclick, upload, business及cert_id是必須的。
在生成加密數據字符串後,下麵我們介紹如何在C#和JAVA中通過程序生成加密按鈕。
4.2.1 用C#生成加密按鈕
1) 用PayPal提供的示例代碼生成單個按鈕
從https://www.paypal.com/en_US/dwnloads/windows.zip下載windows.zip,解壓後在Visual .NET環境中編譯,裏麵包含了ButtonEncryptionLib和ButtonEncryptionLibTest兩個工程。其中ButtonEncryptionLib用於生成加密按鈕的DLL,這個要求係統已經安裝了OpenSSL for Windows;ButtonEncryptionLibTest則會引用前者生成的DLL編譯一個可執行文件PPEncrypt,此文件即可用於加密單個按鈕,您可以在目錄ButtonEncryptionLibTest\bin\Debug下找到。
生成加密按鈕步驟
將您的私鑰、公共證書和PayPal的公共證書拷貝到與PPEncrypt同一個目錄下;運行下麵的命令即可生成加密內容;
PPEncrypt <CertFile> <PrivKeyFile> <PPCertFile> <CmdTxt> <OutputFile> [Sandbox]
其中:
<CertFile> |
您的公共證書文件名 |
<PrivKeyFile> |
您的私鑰文件名 |
<PPCertFile> |
PayPal的公共證書文件名 |
<CmdTxt> |
加密的字符串命令行 |
<OutputFile> |
輸出HTML代碼的文件名 |
[Sandbox] |
在PayPal測試環境中生成 |
比如:
PPEncrypt my-pubcert.pem my-prvkey.pem paypal_pubcert.pem “cmd=_xclick,business=paypal@yoursite.com,return=http://www.yoursite.com/thankyou.htm,item_name=itemname,currency_code=USD,amount=99.99,invoice=I20050101004,cancel_return=http://www.yoursite.com/cancel.htm,cert_id=4UXSJFDZ8A2PL" button.html |
打開生成文件<OutputFile>(這裏為button.html),將裏麵加密的FORM內容複製到您需要付款的頁麵中即可。
<OutputFile>的樣本如下:
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-but23.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!">
<input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----
MIIHTwYJKoZIhvcNAQcEoIIHQDCCBzwCAQExggEwMIIBLAIBADCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQw
… …
1C7YhvLqslFdnUfeI8RR5vqQpvr4pHUwjEsAz3m/ZAO6/Riqo7/JimpWHjMDbZzR
F91ttNhph8Ts22CfoAckT5tEPCG9G/iM0oPLfMFl8L2mCQhzHN02nEYU6080z9N0Zfd9
-----END PKCS7-----
">
</form> |
2) 集成PayPal加密按鈕到您的.Net/C#環境中
a. 在OpenSSL目錄下您可以找到文件libeay32.dll和ssleay32.dll,將這兩個文件複製到<windir>\system32下;
b. 將上麵由ButtonEncryptionLib工程編譯成的ButtonEncryptionLib.dll複製到您的.Net/C#工程中,並通過“添加引用”將此DLL添加到您當前的工程裏;
c. 將您的私鑰、公共證書和PayPal的公共證書拷貝到該工程下一個目錄中,如<YOUR_CSHARP_PROJECT_PATH>\cert ;
d. 在需要添加“生成加密按鈕”的地方引用該組件,示例代碼如下:
//申明一個ButtonEncryption用於加密字符串
ButtonEncryption buttonenc = new ButtonEncryption(true);
string sResult = "";
//獲取所有證書存放的路徑
string VPath = Page.Server.MapPath(HttpContext.Current.Request.ApplicationPath + "/cert/");
string sCmdTxt = "cmd=_xclick,cert_id=XXXX,buiness=paypal@yoursite.com...";
string sCertFile = VPath + "your-pubcert.pem";
string sPrivKeyFile = VPath + "your-prvkey.pem";
string sPPCertFile = VPath + "paypal_cert_pem.txt";
//生成加密字符串到sEncryption
string sEncryption = buttonenc.SignAndEncrypt(sCmdTxt, sCertFile, sPrivKeyFile, sPPCertFile, ref sResult);
string outString="";
outString = outString +"<form action=""https://www.paypal.com/cgi-bin/webscr"" method=""post"">");
outString = outString +"<input type=""hidden"" name=""cmd"" value=""_s-xclick"">" ;
outString = outString +"<input type=""image""
src=""https://www.paypal.com/en_US/i/btn/x-click-but23.gif"" border=""0"" name=""submit"" >"; outString = outString +"<input type=""hidden"" name=""encrypted"" value=""" ;
outString = outString + sEncryption;
outString = outString +" ""></form>" ;
//outString輸出的就是加密付款按鈕的HTML代碼 |
4.2.2 用JAVA生成加密按鈕
在開始使用JAVA生成加密按鈕之前,您必須做以下幾個準備工作:
1) 下載並安裝JDK,請參考http://java.sun.com/j2se/1.4.2/download.html;
2) 根據JDK的版本下載相對應的crypto,下載地址為
http://www.bouncycastle.org/latest_releases.html,下載後解壓到某一個目錄備用,記住此目錄名(如 c:\crypto-124),用於後麵的CRYPTO_HOME;
http://www.bouncycastle.org/latest_releases.html,下載後解壓到某一個目錄備用,記住此目錄名(如 c:\crypto-124),用於後麵的CRYPTO_HOME;
3) 從http://java.sun.com/products/jce/index.jsp或
http://java.sun.com/j2se/1.4.2/download.html下載Java(TM) Cryptography Extension(JCE);解壓JCE*.rar/.zip,並將其中local_policy.jar及
US_export_policy.jar覆蓋至$JAVA_HOME\jre\lib\security目錄中。
http://java.sun.com/j2se/1.4.2/download.html下載Java(TM) Cryptography Extension(JCE);解壓JCE*.rar/.zip,並將其中local_policy.jar及
US_export_policy.jar覆蓋至$JAVA_HOME\jre\lib\security目錄中。
1> 用PayPal提供的示例代碼生成單個按鈕
從https://www.paypal.com/en_US/dwnloads/java.zip下載 java.zip,解壓。
生成單個加密按鈕步驟如下:
A. 編輯其中的文件build-window.bat,設置CRYPTO_HOME為上麵中CRYPTO解壓的目錄,如圖4-2所示,修改好後保存並運行。運行後將自動編譯該目錄下的類ButtonEncryption以及com\paypal\crypto\sample\目錄下所有java類;
B. 將您的私鑰、公共證書、PKCS12文件和PayPal的公共證書拷貝到一個指定的目錄中,(這裏我們將這些文件拷貝到與ButtonEncryption.class同一目錄);
C. 運行下麵的命令即可生成加密內容:
Java ButtonEncryption <CertFile> <PrivKeyFile> <PPCertFile> <Password> <CmdTxt> <OutputFile> [Sandbox]
其中:
Java ButtonEncryption <CertFile> <PrivKeyFile> <PPCertFile> <Password> <CmdTxt> <OutputFile> [Sandbox]
其中:
<CertFile> |
您的公共證書文件名 |
<PrivKeyFile> |
您的私鑰文件名 |
<PPCertFile> |
PayPal的公共證書文件名 |
<Password> |
生成PKCS12文件時輸入的密碼 |
<CmdTxt> |
加密的字符串命令行 |
<OutputFile> |
輸出HTML代碼的文件名 |
[Sandbox] |
在PayPal測試環境中生成 |
比如:
Java ButtonEncryption my-pubcert.pem my-prvkey.p12 paypal_pubcert.pem pwd “cmd=_xclick,business=paypal@yoursite.com,return=http://www.yoursite.com/thankyou.htm,item_name=itemname,currency_code=CNY,amount=1.00,invoice=I20050101004,cancel_return=http://www.yoursite.com/cancel.htm,cert_id=4UXSJFDZ8A2PL" java_bn.html |
D. 打開生成文件<OutputFile>(這裏為java_bn.html),將裏麵加密的FORM內容複製到您需要付款的頁麵中即可。
<OutputFile>的樣本如下:
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-but23.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!">
<input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----
MIIHTwYJKoZIhvcNAQcEoIIHQDCCBzwCAQExggEwMIIBLAIBADCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQw
… …
1C7YhvLqslFdnUfeI8RR5vqQpvr4pHUwjEsAz3m/ZAO6/Riqo7/JimpWHjMDbZzR
F91ttNhph8Ts22CfoAckT5tEPCG9G/iM0oPLfMFl8L2mCQhzHN02nEYU6080z9N0Zfd9
-----END PKCS7-----
">
</form> |
2> 集成PayPal加密按鈕到您的JAVA工程環境中
A. 複製java.zip包中的整個com目錄到您的工程中;
B. 在您需要生成加密按鈕的類裏添加引用:
import com.paypal.crypto.sample.*;
import java.io.*;
import java.security.InvalidAlgorithmParameterException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.Security;
import java.security.UnrecoverableKeyException;
import java.security.cert.CertStoreException;
import java.security.cert.CertificateException;
import org.bouncycastle.cms.CMSException; |
C. 然後通過下麵的示例代碼即可生成加密數據:
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
try{
//先申明變量PrivkeyFile CertFile PPCertPath Password CmdText
//這些變量的定義可以參考上麵
private static String PrivkeyFile = null;
private static String CertFile = null;
private static String PPCertPath = null;
private static String Password = "password";
private static String CmdText = null;
//cmd=_xclick,business=paypal@yoursite.com,amount=1.00
//TODO:初始化變量PrivkeyFile CertFile PPCertPath Password CmdText
//……
//申明一個ClientSide,其中PrivkeyFile CertFile PPCertPath Password CmdText
ClientSide client_side = new ClientSide(PrivkeyFile,CertFile,PPCertPath,Password);
//生成加密數據
String result = client_side.getButtonEncryptionValue( CmdText, PrivkeyFile, CertFile, PPCertPath, Password );
//生成加密付款按鈕的HTML代碼
StringBuffer sbResult = new StringBuffer(“”);
sbResult.append("<form action=\"https://www.paypal.com/cgi-bin/webscr\" method=\"post\">" );
sbResult.append("<input type=\"hidden\" name=\"cmd\" value=\"_s-xclick\">" );
sbResult.append("<input type=\"image\"
src=\"https://www.paypal.com/en_US/i/btn/x-click-but23.gif\" border=\"0\" name=\"submit\" " ); sbResult.append ("alt=\"Make payments with PayPal - it's fast, free and secure!\">" );
sbResult.append("<input type=\"hidden\" name=\"encrypted\" value=\"" );
sbResult.append( result );
sbResult.append( "\"></form>");
//通過調用sbResult.toString()即可輸出加密付款按鈕的HTML代碼
//以下為捕獲意外事件
}catch(NoSuchAlgorithmException e){
e.printStackTrace();
}catch(NoSuchProviderException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}catch(CMSException e){
e.printStackTrace();
}catch(CertificateException e){
e.printStackTrace();
}catch(KeyStoreException e){
e.printStackTrace();
}catch(UnrecoverableKeyException e){
e.printStackTrace();
}catch(InvalidAlgorithmParameterException e){
e.printStackTrace();
}catch (CertStoreException e){
e.printStackTrace();
} |
n PayPal網站付款標準版交易方式確認集成指南
【中文版】
https://www.paypal.com/zh_CN/pdf/PP_WebsitePaymentsStandard_IntegrationGuide.pdf
https://www.paypal.com/zh_CN/pdf/PP_WebsitePaymentsStandard_IntegrationGuide.pdf
【英文版】
https://www.paypal.com/en_US/pdf/PP_WebsitePaymentsStandard_IntegrationGuide.pdf
https://www.paypal.com/en_US/pdf/PP_WebsitePaymentsStandard_IntegrationGuide.pdf
n 訂單管理集成指南
【中文版】
https://www.paypal.com/zh_CN/pdf/PP_OrderManagement_IntegrationGuide.pdf
https://www.paypal.com/zh_CN/pdf/PP_OrderManagement_IntegrationGuide.pdf
【英文版】
https://www.paypal.com/en_US/pdf/PP_OrderManagement_IntegrationGuide.pdf
https://www.paypal.com/en_US/pdf/PP_OrderManagement_IntegrationGuide.pdf
n IPN和PDT變量列表
https://www.paypal.com/IntegrationCenter/ic_ipn-pdt-variable-reference.html
https://www.paypal.com/IntegrationCenter/ic_ipn-pdt-variable-reference.html
n 加密按鈕 https://www.paypal.com/IntegrationCenter/ic_button-encryption.htm
n 英文論壇搜索 http://paypal.forums.liveworld.com/search.jspa?objID=c1
n 按鈕示例網站 http://paypaltech.com/demo_site/
n IPN代碼生成器
http://paypaltech.com/content/index.php?option=com_content&task=view&id=25&Itemid=49
http://paypaltech.com/content/index.php?option=com_content&task=view&id=25&Itemid=49
n EWP for PHP http://paypaltech.com/Stephen/encode/index.php
n PEM和P12的轉換器
http://paypaltech.com/content/index.php?option=com_content&task=view&id=21&Itemid=42
http://paypaltech.com/content/index.php?option=com_content&task=view&id=21&Itemid=42
貨幣代號 |
貨幣名稱 |
USD |
U.S. Dollars |
AUD |
Australian Dallars |
CAD |
Canaidan Dollars |
CZK |
Czech Korunna |
DKK |
Danish Kroner |
EUR |
Euros |
HKD |
Hong Kong Dollars |
HUF |
Hungarian Forint |
NZD |
New Zealand Dollars |
NOK |
Norwegian Kroner |
PLN |
Polish Zlotych |
GBP |
Pounds Sterling |
SGD |
Singapore Dollars |
SEK |
Swedish Kronor |
CHF |
Swiss Frances |
JPY |
Japan Yen |
n 若在您的“Buy Now”按鈕中添加了變量“invoice”(訂單標識號),則應保證每次付款中的“invoice”號碼唯一;若重複付款,PayPal 將提示您,如下圖所示:
n 在所有涉及到價格的變量中,其數值都隻精確到小數點後麵兩位;若其中一個數值精確到兩位以上或者格式不對時,PayPal將提示您發生錯誤,如下圖所示:
n 如果您為您的網站付款流程頁麵定義了LOGO,則該LOGO圖片必須存放在一個HTTPS服務器上,以避免出現一些安全警告,如下圖所示:
變量 cmd 的值
cmd 的值 |
說明 |
_xclick |
“立即購買”和“捐贈”按鈕。 |
_cart |
“購物車” 按鈕。 |
_ext-enter |
預填充您的客戶的PayPal注冊表單。需要一個redirect_cmd 變量,其值應為 _xclick 。 |
用於IPN的變量: notify_url
變量名 |
說明 |
必填/選填 |
字段長度 |
notify_url |
用於接受PayPal發送的關於即時付款通知的交易信息的URL。必須是有效的URL。 |
選填 |
255 |
表單變量: 物品信息
變量名 |
說明 |
必填/選填 |
字段長度 |
amount |
購物價格或金額,不包括運費、手續費或稅費。如果在“立即購買”或者“捐贈”交易情況下省略,則由客戶在購買時填寫此值。
• 立即“購買”或者“捐贈”交易情況下是選填
• “購物車”交易情況下是必填 |
請參考本行說明 |
|
item_name |
物品描述。如果在“立即購買”或者“捐贈”交易情況下省略,則客戶將看到一個可以選擇輸入物品名稱的欄目。
• 立即“購買”或者“捐贈”交易情況下是選填
• “購物車”交易情況下是必填 |
請參考本行說明. |
127 |
item_number |
可用於跟蹤購買或捐贈的傳遞變量,在付款完成時傳回給您。如果在“立即購買”或者“捐贈”交易情況下省略,則將沒有變量傳回給您。 |
選填 |
127 |
quantity |
物品數量。將金額、運費和稅費乘以數量將得出付款總額。如果這是購物車交易,PayPal將附加物品數量(例如, quantity1、quantity2)。
提示:數量的值必須是正整數。不允許為空、零或負數。 |
選填 |
|
undefined_quantity |
如果設置為 1,則允許買家修改數量。 提示:這個變量隻允許在“立即購買”或者“捐贈”交易情況下使用。購物車交易不允許使用。 |
選填 |
1 |
on0 |
第一選項欄名稱。如果省略,則將沒有變量傳回給您. |
選填 |
64 |
on1 |
第二選項欄名稱。如果省略,則將沒有變量傳回給您。 |
選填 |
64 |
os0 |
第一組選項值。如果此選項通過文本框或單選按鈕選中,則每個值均應不超過 64 個字符。如果該值由客戶通過文本框輸入,則上限為 200 個字符。如果省略,則不會傳回給您任何變量。
提示:必須對 on0 進行定義,才能識別 os0。 |
選填 請參考本行說明. |
64 or 200 |
os1 |
第二組選項值。如果此選項通過文本框或單選按鈕選中,則每個值均應不超過 64 個字符。如果該值由客戶通過文本框輸入,則上限為 200 個字符。如果省略,則不會傳回給您任何變量。
提示:必須對 on1 進行定義,才能識別 os1。 |
選填
請參考本行說明. |
64 or 200 |
表單變量:顯示信息
名字 |
說明 |
必填/選填 |
字段長度 |
add |
添加一個物品到PayPal購物車
若“add”和“display”兩個變量同時設置,則隻顯示當前購物車信息。 |
必填 |
1 |
cancel_return |
指在付款取消的情況下,客戶瀏覽器返回到的 URL 。例如,您的網站上顯示“付款已取消”頁麵的 URL。如果省略,則用戶將被帶到PayPal網站。 |
選填 |
|
cbt |
設置“PayPal付款完成”頁麵上的“繼續”按鈕的文本。
提示:return 變量也需要被設置。 |
選填 |
60 |
cn |
提示欄上的標簽。該值不保存,而且不會出現在任何給您的通告中。如果省略,則將沒有變量傳回給您。 |
選填 |
40 |
cpp_header_image |
將您選擇的圖片設置為顯示在付款頁麵的左上角。該圖片的最大尺寸為 750像素寬、90 像素高。有效的字符集為 URL 安全字符。由於圖片不存儲在我們的數據庫上,所以 cpp_header_image 變量沒有字符限製。建議您隻提供存儲在安全 (https) 服務器上的圖片。 |
選填 |
無限製 |
cpp_headerback_color |
為付款頁麵標題設置背景色。有效的字符集為 6 字符 HTML 十六進製 ASCII代碼。此變量不區分大小寫。 |
選填 |
|
cpp_headerborder_color |
設置付款頁麵標題四周的邊框顏色。邊框是位於標題空間四周,粗細為 2 像素的方框,方框最大尺寸為 750 像素寬、90 像素高。有效的字符集為 6 字符HTML 十六進製 ASCII 代碼。此變量不區分大小寫。 |
選填 |
|
cpp_payflow_color |
為付款頁麵的標題以下區域設置背景色。有效的字符集為 6 字符 HTML 十六進製 ASCII 代碼。此變量不區分大小寫。
提示:不允許使用與貝寶錯誤信息相衝突的背景色。默認顏色為白色。 |
選填 |
|
cs |
設置您的付款頁麵的背景色。如果設為“1”,背景色將為黑色。如果省略
或設為“0”,背景色則為白色。 |
選填 |
|
display |
顯示當前PayPal購物車的物品信息。 若“add”和“display”兩個變量同時設置,則隻顯示當前購物車信息。 |
選填 |
1 |
image_url |
您希望在PayPal付款頁麵左上角的用作標識的 150x50 像素圖片的 URL。必須是有效的URL。
如果省略,則客戶看到的是您的商家名稱(如果您有企業賬戶)或您的電子郵件地址(如果您有高級賬戶)。 |
選填 |
|
no_note |
為付款加入說明。如果省略或設為“0”,則會提示您的客戶輸入說明。如果設為“1”,則不會提示您的客戶輸入說明。 |
選填 |
1 |
no_shipping |
買家的送貨地址。
省略或設為 0 = 提示客戶輸入收貨地址。
1 = 不要求客戶提供收貨地址。
2 = 客戶必須提供收貨地址。 |
選填 |
1 |
page_style |
為與此按鈕/ 鏈接相關的付款頁麵設置“自定義付款頁麵的樣式”。
page_style 的值與添加或編輯頁麵樣式時您選擇的頁麵樣式名稱相同。
page_style 變量的最大長度為 30 個字符。
有效的字符集隻能為小寫 7 位字母數字 ASCII 字符,加下劃線。不能包含空格。
如果您希望按鈕/ 鏈接始終引用您設置為首選的樣式,請將該變量設置為 "primary"。
如果您希望該按鈕/ 鏈接始終引用默認的貝寶頁麵樣式,請將該變量設置為 "paypal"。 |
選填 |
30 |
return |
指完成付款後客戶的瀏覽器返回到的 URL 。 例如,在您的站點上顯示“感謝您的付款” 的頁麵的 URL。
如果省略,則您的買家將被帶到PayPal網站。 |
選填 |
|
rm |
付款完成後的返回 URL 的行為(“返回方法”)。
提示:rm變量隻有在return變量被設置後才能生效。
如果省略或為 0,則 GET 方法用於沒有啟用即時付款通知的所有購物車交易,而 POST 方法用於所有其他交易。
如果為 1 並設置了 return,則客戶的瀏覽器由 GET 方法返回至返回 URL,並且不提交任何交易變量。
如果為 2 並設置了 return,則客戶的瀏覽器由 POST 方法返回至返回URL,同時將所有可用交易變量發送至該 URL。 |
選填 |
表單變量: 交易信息
名字 |
說明 |
必填/選填 |
字段長度 |
address_override |
如果設置為 1,通過預填充欄傳送的地址將會覆蓋用戶的已存儲地址。用戶可以看到傳送的地址,但是無法進行編輯。如果地址無效(例如,缺少必需的欄,包括國家或地區)或者沒有包括地址,則不會顯示地址。 |
選填 |
1 |
currency_code |
付款貨幣。定義幣種以標示貨幣變量(amount、shipping、shipping2、handling、tax)。如果省略,則所有貨幣字段將解釋為美元。 |
選填 |
|
custom |
永遠不會向您的客戶顯示的傳遞變量。如果省略,則不會傳回給您任何變量。 |
選填 |
256 |
handling |
手續費。並非根據數量而定。無論所購物品數量多少,均收取相同手續費。
如果省略,則不收取手續費。 |
選填 |
|
invoice |
您可以用於識別此次購物的帳單號碼的傳遞變量。如果省略,則不會傳回給您任何變量。 |
選填 |
127 |
redirect_cmd |
隻有在cmd的值為“_ext-enter”,即賬戶注冊的預填充時才有效。
redirect_cmd 的唯一有效值是 _xclick. |
選填 |
40 |
shipping |
在您啟用了特定於物品的運費時,運送此物品的成本。如果使用了shipping 而未定義 shipping2 ,則無論所購物品數量多少,都將收取該固定金額。
提示:如果您使用的是基於物品的運費,請確保選中您的用戶信息中的覆蓋複選框。
如果省略,並啟用了基於用戶信息的運費,則將向您的客戶收取您的用戶信息中定義的金額或百分比。 |
選填 |
|
shipping2 |
每增加一件物品所需的運送成本。如果省略,並啟用了基於用戶信息的運費,則將向您的客戶收取您的用戶信息中定義的金額或百分比。 |
選填 |
|
tax |
基於交易的稅費覆蓋變量。將該變量設置為您希望應用於交易的固定稅額,而不論買家所處的位置。如果存在,該值將覆蓋可能已在您的用戶信息中設定的任何稅費設置。如果省略,則適用用戶信息稅費設置(如有)。 |
選填 |
|
tax_cart |
整個購物車的稅費。而不是單個物品的稅額。 |
選填 |
表單變量: 購物車特有
名字 |
必填/選填 |
說明 |
允許的值 |
amount |
必填 |
物品的價格(購物車中所有物品的總價格)。 |
任何有效貨幣金額 |
business |
必填 |
您PayPal賬戶上的電子郵件地址。 |
您PayPal賬戶上的電子郵件地址 |
handling_cart |
選填 |
對整個購物車收取的單筆手續費。如果在多個“添加到購物車”按鈕中使用handling_cart,將使用第一件物品的handling_cart 值。 |
任何有效貨幣金額 |
item_name |
必填 |
物品名稱(或購物車名稱)。 |
|
paymentaction |
選填 |
||
upload |
必填 |
上傳第三方購物車 |
1 |
表單變量:第三方購物車中單個物品的變量
名字 |
說明 |
必填/選填 |
字段長度 |
amount_x |
物品 #x 的價格。 |
必填 |
|
handling_x |
物品 #x 的手續費。 |
選填 |
|
item_name_x |
購物車中的物品 #x 的名稱。必須為字母數字字符。 |
必填 |
127 |
item_number_x |
可用於跟蹤購買或捐贈的傳遞變量,在付款完成時傳回給您。
如果省略,則將沒有變量傳回給您。 |
選填 |
127 |
on0_x |
物品 #x 的第一選項欄名稱。 |
選填 |
64 |
on1_x |
物品 #x 的第二選項欄名稱。 |
選填 |
64 |
os0_x |
物品 #x 的第一組選項值。
必須對 on0_x 進行定義,才能識別 os0_x 。 |
選填 |
200 |
os1_x |
物品 #x 的第二組選項值。
必須對 on1_x 進行定義,才能識別 os1_x 。 |
選填 |
200 |
quantity_x |
物品 #x 的數量。quantity_x 的值必須是正整數。不允許為空、零或負數。 |
選填 |
|
shipping_x |
運送物品 #x 的第一件(數量 1)的成本。 |
選填 |
|
shipping2_x |
每增加一件運送物品 #x (數量 2 或更多)所需的運送成本。 |
選填 |
|
tax_x |
物品 #x 的稅額。 |
選填 |
表單變量:網站付款的預填充變量
變量名 |
說明 |
要求 |
字段長度 |
address1 |
街道(第 1 欄,共 2 欄) |
字母數字字符 |
100 |
address2 |
街道(第 2 欄,共 2 欄) |
字母數字字符 |
100 |
city |
市/ 縣 |
字母數字字符 |
40 |
country |
設置運送和開單國家或地區。請查看附錄6,以了解允許的國家或地區代碼。 |
字母 |
2 |
email |
客戶的電子郵件地址 |
字母數字字符 |
127 |
first_name |
名 |
字母 |
32 |
last_name |
姓 |
字母 |
32 |
lc |
定義買家的交易方式確認流程的語言 |
字母 |
2 |
night_phone_a |
美國電話號碼的區號,或非美國電話號碼的國家或地區代碼。它會預填充買家的家庭電話。 |
數字 |
3 |
night_phone_b |
美國電話號碼的 3 位數前綴,或非美國電話號碼的完整電話號碼(不包括國家或地區代碼)。它會預填充買家的家庭電話。 |
數字 |
3 |
night_phone_c |
美國電話號碼的 4 位數電話號碼。它會預填充買家的家庭電話。 |
數字 |
4 |
state |
省/ 直轄市/ 自治區 |
必須為兩個字符的正式縮寫 |
2 |
zip |
郵編 |
數字 |
32 |
表單變量: 賬戶注冊的預填充變量
變量名 |
說明 |
要求 |
字段長度 |
business_address1 |
客戶所在的街道 |
字母數字字符 |
128 |
business_address2 |
客戶所在的街道 |
字母數字字符 |
128 |
business_city |
客戶所在的市/ 縣 |
字母數字字符 |
128 |
business_state |
客戶所在的省/ 直轄市/ 自治區 |
必須為兩個字符的正式縮寫 |
2 |
business_country |
客戶所在的國家 |
字母 |
2 |
business_cs_email |
客戶的email地址 |
字母數字字符 |
128 |
business_cs_phone_a |
客戶的客服電話所在的美國電話號碼的區號,或非美國電話號碼的國家或地區代碼。 |
數字 |
3 |
business_cs_phone_b |
客戶的客服電話所在的美國電話號碼的 3 位數前綴,或非美國電話號碼的完整電話號碼(不包括國家或地區代碼)。它會預填充買家的家庭電話。 |
數字 |
3 |
business_cs_phone_c |
客戶的客服電話所在的美國電話號碼的 4 位數電話號碼。它會預填充買家的家庭電話。 |
數字 |
4 |
business_url |
客戶網站的URL |
字母數字字符. 必須是有效的. |
128 |
night_phone_b |
美國電話號碼的 3 位數前綴,或非美國電話號碼的完整電話號碼(不包括國家或地區代碼)。它會預填充買家的家庭電話。 |
數字 |
3 |
business_night_phone_a |
客戶所在的美國電話號碼的區號,或非美國電話號碼的國家或地區代碼。它會預填充買家的家庭電話。 |
數字 |
3 |
business_night_phone_b |
客戶所在的美國電話號碼的 3 位數前綴,或非美國電話號碼的完整電話號碼(不包括國家或地區代碼)。它會預填充買家的家庭電話。 |
數字 |
3 |
business_night_phone_c |
客戶所在的美國電話號碼的 4 位數電話號碼。它會預填充買家的家庭電話。 |
數字 |
4 |
國家或地區名 |
代碼 |
國家或地區名 |
代碼 |
國家或地區名 |
代碼 |
安圭拉 |
AI |
希臘Greece |
GR |
波蘭Poland |
PL |
阿根廷Argentina |
AR |
中國香港特別行政區 |
HK |
葡萄牙Portugal |
PT |
澳大利亞 |
AU |
匈牙利Hungary |
HU |
新加坡Singapore |
SG |
奧地利Austria |
AT |
冰島Iceland |
IS |
斯洛伐克Slovakia |
SK |
比利時Belgium |
BE |
印度India |
IN |
斯洛文尼亞 |
SI |
巴西Brazil |
BR |
愛爾蘭Ireland |
IE |
南非South Africa |
ZA |
加拿大 |
CA |
以色列Israel |
IL |
韓國Korea |
KR |
智利Chile |
CL |
意大利Italy |
IT |
西班牙Spain |
ES |
中國 |
CN |
牙買加Jamaica |
JM |
瑞典Sweden |
SE |
哥斯達黎加Costa Rica |
CR |
日本 |
JP |
瑞士Switzerland |
CH |
塞浦路斯 |
CY |
拉脫維亞 |
LV |
中國台灣地區 |
TW |
捷克共和國Czech Republic |
CZ |
立陶宛 |
LT |
泰國Thailand |
TH |
丹麥Denmark |
DK |
盧森堡Luxembourg |
LU |
土耳其Turkey |
TR |
多米尼加共和國 |
DO |
馬來西亞Malaysia |
MY |
英國Great Britain |
GB |
厄瓜多爾Ecuador |
EC |
馬耳他 |
MT |
美國U.S.A |
US |
愛沙尼亞 |
EE |
墨西哥Mexico |
MX |
烏拉圭Uruguay |
UY |
芬蘭Finland |
FI |
荷蘭Holland |
NL |
委內瑞拉Venezuela |
VE |
法國 |
FR |
新西蘭New Zealand |
NZ |
||
德國Germany |
DE |
挪威Norway |
NO |