ndfweb.cn

Paypal集成中文说明


2012-04-28 21:55:15 (16913)


1 注册您的PayPal帐号
2 创建“Buy Now”按钮
3 创建“Shopping Cart”按钮
3.1 创建“Add to Cart”按钮
3.2 创建“Upload Cart”按钮
4 加密网站付款EWP
4.1 使用加密网站付款的先决条件
4.2 创建加密按钮
5 附录1: 参考文档及网站
6 附录2PayPal目前支持的货币列表
7 附录3:常见问题
8 附录4:标准变量列表
9 附录6:国家或地区ISO3166代码
1 注册您的PayPal帐号
如果您已经有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之旅了!
2 创建“Buy Now”按钮
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
3 创建“Shopping Cart”按钮
如果您的网站还没有集成购物车功能,您可以通过创建“Add to Cart”按钮直接使用PayPal的购物车。
如果您的网站已经有自己的购物车或者已经集成了第三方购物车的功能,那您可以通过创建“Upload Cart”按钮将您的购物车明细上传给PayPal并通过PayPal进行付款;您也可以为已有购物车生成一个订单,并通过创建PayPal的“Buy Now”按钮进行付款(其中:商品名称可以为您的订单号,商品价格可以为订单总价)。
3.1 创建“Add to Cart”按钮
如图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示例与立即购买,捐赠和购物车变量”部分;也可以访问网址:
https://www.paypal.com/IntegrationCenter/ic_std-variable-reference.html
【注】
n 若要显示当前购物车信息,您只需将
<input type="hidden" name="add" value="1">
改为
<input type="hidden" name="display" value="1">
若上面两句同时存在,则只显示当前购物车信息;
n 在FORM里需设置target="paypal"以使购物页面和购物车页面分开;
3.2 创建“Upload Cart”按钮
若您的网站已经有自己的购物车或已经集成了第三方购物车,如图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
【注】
n OpenSSL 在OpenSSL得安装目录得bin下,若是在非windows操作系统中,请注意大小写和路径;
n 您可以将<basename>改写成您想要的名字;
n 对于windows用户来说,您也可以从
https://www.paypal.com/en_US/dwnloads/windows.zip或https://www.paypal.com/en_US/dwnloads/java.zip下载PayPal为常用的开发环境提供的示例代码,其中均包含了文件“key.bat”,下载并解压后编辑该文件,设置好正确的OpenSSL路径,然后在命令行执行命令“key <basename>”即可生成您的私钥和公共证书,示例如下:
C:\paypal\coding\windows\key <basename>


创建PKCS12文件(适用于后面用JAVA生成加密代码)
要创建PKCS12文件,输入下面OpenSSL命令,该命令在文件<basename>-prvkey.p12 中生成PKCS12文件:
OpenSSl pkcs12 -export -inkey <basename>-prvkey.pem –in
<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;
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目录中。
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]
其中:

<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();
}

5 附录1: 参考文档及网站
n PayPal网站付款标准版交易方式确认集成指南
【中文版】
https://www.paypal.com/zh_CN/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/en_US/pdf/PP_OrderManagement_IntegrationGuide.pdf
n PayPal集成中心https://www.paypal.com/IntegrationCenter/ic_home.html
n 标准标量列表
https://www.paypal.com/IntegrationCenter/ic_std-variable-reference.html
n IPN和PDT变量列表
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
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
6 附录2:PayPal目前支持的货币列表

货币代号
货币名称
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

7 附录3:常见问题
n 若在您的Buy Now按钮中添加了变量invoice(订单标识号),则应保证每次付款中的invoice号码唯一;若重复付款,PayPal 将提示您,如下图所示:
n 在所有涉及到价格的变量中,其数值都只精确到小数点后面两位;若其中一个数值精确到两位以上或者格式不对时,PayPal将提示您发生错误,如下图所示:
n 如果您为您的网站付款流程页面定义了LOGO,则该LOGO图片必须存放在一个HTTPS服务器上,以避免出现一些安全警告,如下图所示:
8 附录4:标准变量列表
变量 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将附加物品数量(例如, quantity1quantity2)。
提示:数量的值必须是正整数。不允许为空、零或负数。
选填
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


9 附录6:国家或地区ISO3166代码

国家或地区名
代码
国家或地区名
代码
国家或地区名
代码
安圭拉
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

了解更多请访问:http://www.ndfweb.cn/news-581.html
  NDF俱乐部
  国际域名注册
  建站咨询
合作伙伴:万网 | 新网 | 新网互联 NDF网站建设淘宝店 | 实用工具 | 外貿網站建設 | 联系我们
鲁公网安备 37110202000336号 鲁ICP备2021027697号-1 Sitemap - RSSRSS订阅