请问,paypal支付显示微信 invalid codeuntry code 该如何解决

Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.
Showing results for
Invalid country code in shipping address for Cuba
I want to use Paypal Payment Pro for capture credit cards in my business. One of the countries we can ship is Cuba. If as user I specified Cuba as country in the shipping address and confirm the payment I got this error: "This transaction cannot be processed. Please enter a valid country code in the shipping address."&Exists any restriction for some contries for the shipment? I don't have problems with other countries as US, Mexico, etc.&Thanks in advance.
Volunteer Advisor
Re: Invalid country code in shipping address for Cuba
click on the link and&then click on the country you want and i think you will see Cuba is not able to access paypal.&&&
Re: Invalid country code in shipping address for Cuba
Thank you&&for your response. AFAIK cuban business can't use Paypal due politicals laws. I'm only setting Cuba as country in the shipping address. It is that a problem? Thanks人次在我爱卡申请信用卡
人次申请贷款 255家 银行和金融机构授权合作
后使用快捷导航没有帐号?
查看: 6696|回复: 14
在中国怎么用paypal付款购物?
阅读权限10
普卡I级, 经验值 13, 距离下一级还需 66 经验值
在中国怎么用paypal付款购物?如果你是收款,那绑定银行卡就足够了,但如果是付款的话,因为paypal的中国区账户是不支持直接往paypal账户充值的,所以你必须要绑定一张双币种用来付款才可以的,还有种办法就是让别人往你的paypal账户里打钱,用paypal里的余额也是可以来买的,还有一点就是如果你用信用卡刷美金的话,还款的话也必须是美金哦,所以需要你在银行买些美金去还信用卡上的账单。
阅读权限130
和一般的付款形式一样的啊。
中信5K,招行5K,建行5K,邮政10K,广发13K,汇丰15K,兴业20K,中行30K,浦发38K,民生45K,花旗50K,农行60K,光大82K,工行和交行销卡了。
阅读权限80
路过,看看。。。。
阅读权限50
看看 了解了解
阅读权限90
和一般的付款形式一样的啊。
阅读权限40
一号店可以刷paypal
阅读权限50
这个也不是很懂啊!
阅读权限80
不会自动兑换成人民币结算吗?
阅读权限80
路过 不太懂
阅读权限50
<font color="#60051 发表于
一号店可以刷paypal
一号店现在好像不行了吧
阅读权限80
一边睇一边学习!!!!
找南海呼噜娃~11
农行7K+3.5k
广发6k--9k--12k
头像被屏蔽
提示: 作者被禁止或删除 内容自动屏蔽
阅读权限30
看看,路过
阅读权限30
和一般的付款形式一样的啊。
阅读权限80
我也想消费,美金
热门信用卡中心
热门信用卡申请
信用卡问答
站长推荐 /2
点击进入专题,看看2017年的年度十大信用卡都有哪些,还可以参与投票,赢取大奖哦!
中信银行信用卡联合我爱卡共同开启2018年全新活动啦,在2月28日以前新办中信颜卡的用户,将有机会免费获取iPhone X一台!
Powered by Discuz! X3&
我爱卡客服解决php - PayPal IPN always returning invalid - paypal-paypal-sandbox-paypal-ipn - ITkeyowrd
解决php - PayPal IPN always returning invalid
推荐:paypal对接时发现有这么一个机制,看起来还不错,起到了防止篡改欺诈行为,保证了通信的安全性,但会增加几次通信。
2018阿里云全部产品优惠券(好东东,强烈推荐)领取地址:
I am testing my IPN listener using PayPal's IPN simulator. Everytime I send the IPN it returns 'INVALID'. I can't figure out why. As best I can tell my raw post data and the data I send back to PayPal for validation are identical. The only difference being URL encoding and the added cmd=_notify-validate.
Here is my raw post data:
residence_country=US&invoice=abc1234&address_city=San+Jose&first_name=John&payer_id=TESTBUYERID01&mc_fee=0.44&txn_id=&receiver_email=seller%40paypalsandbox.com&custom=xyz123&payment_date=07%3A44%3A50+31+Oct+2013+PDT&address_country_code=US&address_zip=95131&item_name1=something&mc_handling=2.06&mc_handling1=1.67&tax=2.02&address_name=John+Smith&last_name=Smith&receiver_id=seller%40paypalsandbox.com&verify_sign=ADrwWMGU4CgA.e78xLpNtVihnEe2AKdWo1wY-lMkTec9.xajg4zK.uvs&address_country=United+States&payment_status=Completed&address_status=confirmed&business=seller%40paypalsandbox.com&payer_email=buyer%40paypalsandbox.com&notify_version=2.4&txn_type=cart&test_ipn=1&payer_status=verified&mc_currency=USD&mc_gross=15.34&mc_shipping=3.02&mc_shipping1=1.02&item_number1=AK-1234&address_state=CA&mc_gross1=12.34&payment_type=instant&address_street=123%2C+any+street
and my validation data:
cmd=_notify-validate&residence_country=US&invoice=abc1234&address_city=San%252BJose&first_name=John&payer_id=TESTBUYERID01&mc_fee=0.44&txn_id=&receiver_email=seller%252540paypalsandbox.com&custom=xyz123&payment_date=07%53A50%252B31%252BOct%252BBPDT&address_country_code=US&address_zip=95131&item_name1=something&mc_handling=2.06&mc_handling1=1.67&tax=2.02&address_name=John%252BSmith&last_name=Smith&receiver_id=seller%252540paypalsandbox.com&verify_sign=ADrwWMGU4CgA.e78xLpNtVihnEe2AKdWo1wY-lMkTec9.xajg4zK.uvs&address_country=United%252BStates&payment_status=Completed&address_status=confirmed&business=seller%252540paypalsandbox.com&payer_email=buyer%252540paypalsandbox.com&notify_version=2.4&txn_type=cart&test_ipn=1&payer_status=verified&mc_currency=USD&mc_gross=15.34&mc_shipping=3.02&mc_shipping1=1.02&item_number1=AK-1234&address_state=CA&mc_gross1=12.34&payment_type=instant&address_street=123%2Bany%252Bstreet
The code I used for my listener is pretty much the same as the sample code PayPal provides at
with only a few small modifications to make it work in my specific server environment.
Any ideas why this is not validating?推荐:aypal支付原理 首先根据paypal的要求构造出一个表单,然后提交到paypal去处理,paypal处理后会以隐藏方式post数据到商家网站指定的页面,在商家网站指定的页面,
asked Oct 31 '13 at 15:10
1,370 3 18 39 1 & Are you decoding the data before encoding it again? Look at the street on both strings, it looks like it is being encoded twice. –&
Oct 31 '13 at 16:20 && & Nice catch. That was it. the line which was supposed to be decoding the string was actually encoding. It must have just been an incorrect autocomplete that I missed. Thanks. If you post your response as an answer I'll mark it as correct. –&
Oct 31 '13 at 16:42 && & How can I get my IPN raw post data. I want to compare it to my validate data @DavidNguyen –&
May 21 '16 at 17:11 && & @FarrisFahad under IPN logs –&
Jun 8 '16 at 14:03
1 Answers 1
The string isn't being decoded pri)
answered Oct 31 '13 at 16:45
6,061 2 15 40
推荐:paypal IPN and PDT 相关文档说明: https://developer.paypal.com/docs/classic/ipn/gs_IPN/ https://developer.paypal.com/docs/classic/ipn/integration-guid
相关阅读排行
相关内容推荐
请激活账号
为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。
您的注册邮箱:
如果您没有收到激活邮件,请注意检查垃圾箱。&&&您需要以后才能回答,未注册用户请先。Paypal集成中文说明
21:55:15 (3211)
注册您的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之旅了!
创建“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”按钮的位置上插入以下示例代码:
&form action="https://www.paypal.com/cgi-bin/webscr" method="post"&
&input type="hidden" name="cmd" value="_xclick"&
&input type="hidden" name="business" value=""&
&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!"&
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
创建“Shopping Cart”按钮
如果您的网站还没有集成购物车功能,您可以通过创建“Add to Cart”按钮直接使用PayPal的购物车。
如果您的网站已经有自己的购物车或者已经集成了第三方购物车的功能,那您可以通过创建“Upload Cart”按钮将您的购物车明细上传给PayPal并通过PayPal进行付款;您也可以为已有购物车生成一个订单,并通过创建PayPal的“Buy Now”按钮进行付款(其中:商品名称可以为您的订单号,商品价格可以为订单总价)。
创建“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代码,在您想要出现“添加到购物车”按钮的位置上插入以下代码:
&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=""&
&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=border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!"&
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"&若上面两句同时存在,则只显示当前购物车信息;
n在FORM里需设置target="paypal"以使购物页面和购物车页面分开;
创建“Upload Cart”按钮
若您的网站已经有自己的购物车或已经集成了第三方购物车,如图3-3所示,那您可以通过创建“上传购物车”按钮将购物车详细信息上传给PayPal,然后通过PayPal来进行付款。
图3-3 第三方购物车
在您的购物车页面适合的位置上插入以下代码:
&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=""&
&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!"&
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;
加密网站付款EWP
在第二章和第三章,我们列举了很多PayPal 付款按钮的实例代码。很明显,这些代码中的一些关键信息,如PayPal账户、金额等都是未经过加密的,根据实际需要,您可以对这些信息进行加密;目前,PayPal提供了基于.NET和JAVA的加密示例,使用方法如下:
使用加密网站付款的先决条件
在使用加密的网站付款之前,您必须:
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
nOpenSSL 在OpenSSL得安装目录得bin下,若是在非windows操作系统中,请注意大小写和路径;
n您可以将&basename&改写成您想要的名字;
n对于windows用户来说,您也可以从
创建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”按钮;
创建加密按钮
在进行创建加密按钮之前,我们必须将原来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=""&
&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!"&
则我们可以把它转换成:
cmd=_xclick,business=,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=""&
&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!"&
则我们可以把它转换成:
cmd=_cart,add=1,business=,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=""&
&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!"&
则我们可以把它转换成:
cmd=_cart,upload=1,business=,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的公共证书文件名
加密的字符串命令行
&OutputFile&
输出HTML代码的文件名
在PayPal测试环境中生成
PPEncrypt my-pubcert.pem my-prvkey.pem paypal_pubcert.pem“cmd=_xclick,business=,return=http://www.yoursite.com/thankyou.htm,item_name=itemname,currency_code=USD,amount=99.99,invoice=I,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
<FONT color=#ttNhph8Ts22CfoAckT5tEPCG9G/iM0oPLfMFl8L2mCQhzHN02nEYUZfd9
-----END PKCS7-----
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=...";
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 + sE
outString = outString +" ""&&/form&" ;
//outString输出的就是加密付款按钮的HTML代码
4.2.2 用JAVA生成加密按钮
在开始使用JAVA生成加密按钮之前,您必须做以下几个准备工作:
1)下载并安装JDK,请参考
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文件时输入的密码
加密的字符串命令行
&OutputFile&
输出HTML代码的文件名
在PayPal测试环境中生成
Java ButtonEncryption my-pubcert.pem my-prvkey.p12 paypal_pubcert.pem pwd“cmd=_xclick,business=,return=http://www.yoursite.com/thankyou.htm,item_name=itemname,currency_code=CNY,amount=1.00,invoice=I,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
<FONT color=#ttNhph8Ts22CfoAckT5tEPCG9G/iM0oPLfMFl8L2mCQhzHN02nEYUZfd9
-----END PKCS7-----
2& 集成PayPal加密按钮到您的JAVA工程环境中
A.复制java.zip包中的整个com目录到您的工程中;
B.在您需要生成加密按钮的类里添加引用:
import com.paypal.crypto.sample.*;
import java.io.*;
import java.security.InvalidAlgorithmParameterE
import java.security.KeyStoreE
import java.security.NoSuchAlgorithmE
import java.security.NoSuchProviderE
import java.security.S
import java.security.UnrecoverableKeyE
import java.security.cert.CertStoreE
import java.security.cert.CertificateE
import org.bouncycastle.cms.CMSE
C.然后通过下面的示例代码即可生成加密数据:
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
//先申明变量PrivkeyFile CertFile PPCertPath Password CmdText
//这些变量的定义可以参考上面
private static String PrivkeyFile =
private static String CertFile =
private static String PPCertPath =
private static String Password = "password";
private static String CmdText =
//cmd=_xclick,business=,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();
附录1: 参考文档及网站
nPayPal网站付款标准版交易方式确认集成指南
【中文版】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
nPayPal集成中心
n标准标量列表
nIPN和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/
nIPN代码生成器http://paypaltech.com/content/index.php?option=com_content&task=view&id=25&Itemid=49
nEWP for PHP http://paypaltech.com/Stephen/encode/index.php
nPEM和P12的转换器http://paypaltech.com/content/index.php?option=com_content&task=view&id=21&Itemid=42
附录2:PayPal目前支持的货币列表
U.S. Dollars
Australian Dallars
Canaidan Dollars
Czech Korunna
Danish Kroner
Hong Kong Dollars
Hungarian Forint
New Zealand Dollars
Norwegian Kroner
Polish Zlotych
Pounds Sterling
Singapore Dollars
Swedish Kronor
Swiss Frances
附录3:常见问题
n若在您的“Buy Now”按钮中添加了变量“invoice”(订单标识号),则应保证每次付款中的“invoice”号码唯一;若重复付款,PayPal 将提示您,如下图所示:
n在所有涉及到价格的变量中,其数值都只精确到小数点后面两位;若其中一个数值精确到两位以上或者格式不对时,PayPal将提示您发生错误,如下图所示:
n如果您为您的网站付款流程页面定义了LOGO,则该LOGO图片必须存放在一个HTTPS服务器上,以避免出现一些安全警告,如下图所示:
附录4:标准变量列表
变量 cmd 的值
“立即购买”和“捐赠”按钮。
“购物车” 按钮。
_ext-enter
预填充您的客户的PayPal注册表单。需要一个redirect_cmd 变量,其值应为 _xclick 。
用于IPN的变量: notify_url
notify_url
用于接受PayPal发送的关于即时付款通知的交易信息的URL。必须是有效的URL。
表单变量: 物品信息
购物价格或金额,不包括运费、手续费或税费。如果在“立即购买”或者“捐赠”交易情况下省略,则由客户在购买时填写此值。
o 立即“购买”或者“捐赠”交易情况下是选填
o “购物车”交易情况下是必填
请参考本行说明
物品描述。如果在“立即购买”或者“捐赠”交易情况下省略,则客户将看到一个可以选择输入物品名称的栏目。
o 立即“购买”或者“捐赠”交易情况下是选填
o “购物车”交易情况下是必填
请参考本行说明.
item_number
可用于跟踪购买或捐赠的传递变量,在付款完成时传回给您。如果在“立即购买”或者“捐赠”交易情况下省略,则将没有变量传回给您。
物品数量。将金额、运费和税费乘以数量将得出付款总额。如果这是购物车交易,PayPal将附加物品数量(例如, quantity1、quantity2)。
提示:数量的值必须是正整数。不允许为空、零或负数。
undefined_quantity
如果设置为 1,则允许买家修改数量。提示:这个变量只允许在“立即购买”或者“捐赠”交易情况下使用。购物车交易不允许使用。
第一选项栏名称。如果省略,则将没有变量传回给您.
第二选项栏名称。如果省略,则将没有变量传回给您。
第一组选项值。如果此选项通过文本框或单选按钮选中,则每个值均应不超过 64 个字符。如果该值由客户通过文本框输入,则上限为 200 个字符。如果省略,则不会传回给您任何变量。
提示:必须对 on0 进行定义,才能识别 os0。
选填请参考本行说明.
第二组选项值。如果此选项通过文本框或单选按钮选中,则每个值均应不超过 64 个字符。如果该值由客户通过文本框输入,则上限为 200 个字符。如果省略,则不会传回给您任何变量。
提示:必须对 on1 进行定义,才能识别 os1。
请参考本行说明.
表单变量:显示信息
添加一个物品到PayPal购物车
若“add”和“display”两个变量同时设置,则只显示当前购物车信息。
cancel_return
指在付款取消的情况下,客户浏览器返回到的 URL 。例如,您的网站上显示“付款已取消”页面的 URL。如果省略,则用户将被带到PayPal网站。
设置“PayPal付款完成”页面上的“继续”按钮的文本。
提示:return 变量也需要被设置。
提示栏上的标签。该值不保存,而且不会出现在任何给您的通告中。如果省略,则将没有变量传回给您。
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 代码。此变量不区分大小写。
提示:不允许使用与贝宝错误信息相冲突的背景色。默认颜色为白色。
设置您的付款页面的背景色。如果设为“1”,背景色将为黑色。如果省略
或设为“0”,背景色则为白色。
显示当前PayPal购物车的物品信息。若“add”和“display”两个变量同时设置,则只显示当前购物车信息。
您希望在PayPal付款页面左上角的用作标识的 150x50 像素图片的 URL。必须是有效的URL。
如果省略,则客户看到的是您的商家名称(如果您有企业账户)或您的电子邮件地址(如果您有高级账户)。
为付款加入说明。如果省略或设为“0”,则会提示您的客户输入说明。如果设为“1”,则不会提示您的客户输入说明。
no_shipping
买家的送货地址。
省略或设为 0 = 提示客户输入收货地址。
1 = 不要求客户提供收货地址。
2 = 客户必须提供收货地址。
page_style
为与此按钮/ 链接相关的付款页面设置“自定义付款页面的样式”。
page_style 的值与添加或编辑页面样式时您选择的页面样式名称相同。
page_style 变量的最大长度为 30 个字符。
有效的字符集只能为小写 7 位字母数字 ASCII 字符,加下划线。不能包含空格。
如果您希望按钮/ 链接始终引用您设置为首选的样式,请将该变量设置为 "primary"。
如果您希望该按钮/ 链接始终引用默认的贝宝页面样式,请将该变量设置为 "paypal"。
指完成付款后客户的浏览器返回到的 URL 。 例如,在您的站点上显示“感谢您的付款” 的页面的 URL。
如果省略,则您的买家将被带到PayPal网站。
付款完成后的返回 URL 的行为(“返回方法”)。
提示:rm变量只有在return变量被设置后才能生效。
如果省略或为 0,则 GET 方法用于没有启用即时付款通知的所有购物车交易,而 POST 方法用于所有其他交易。
如果为 1 并设置了 return,则客户的浏览器由 GET 方法返回至返回 URL,并且不提交任何交易变量。
如果为 2 并设置了 return,则客户的浏览器由 POST 方法返回至返回URL,同时将所有可用交易变量发送至该 URL。
表单变量: 交易信息
address_override
如果设置为 1,通过预填充栏传送的地址将会覆盖用户的已存储地址。用户可以看到传送的地址,但是无法进行编辑。如果地址无效(例如,缺少必需的栏,包括国家或地区)或者没有包括地址,则不会显示地址。
currency_code
付款货币。定义币种以标示货币变量(amount、shipping、shipping2、handling、tax)。如果省略,则所有货币字段将解释为美元。
永远不会向您的客户显示的传递变量。如果省略,则不会传回给您任何变量。
手续费。并非根据数量而定。无论所购物品数量多少,均收取相同手续费。
如果省略,则不收取手续费。
您可以用于识别此次购物的帐单号码的传递变量。如果省略,则不会传回给您任何变量。
redirect_cmd
只有在cmd的值为“_ext-enter”,即账户注册的预填充时才有效。
redirect_cmd 的唯一有效值是 _xclick.
在您启用了特定于物品的运费时,运送此物品的成本。如果使用了shipping 而未定义 shipping2 ,则无论所购物品数量多少,都将收取该固定金额。
提示:如果您使用的是基于物品的运费,请确保选中您的用户信息中的覆盖复选框。
如果省略,并启用了基于用户信息的运费,则将向您的客户收取您的用户信息中定义的金额或百分比。
每增加一件物品所需的运送成本。如果省略,并启用了基于用户信息的运费,则将向您的客户收取您的用户信息中定义的金额或百分比。
基于交易的税费覆盖变量。将该变量设置为您希望应用于交易的固定税额,而不论买家所处的位置。如果存在,该值将覆盖可能已在您的用户信息中设定的任何税费设置。如果省略,则适用用户信息税费设置(如有)。
整个购物车的税费。而不是单个物品的税额。
表单变量: 购物车特有
物品的价格(购物车中所有物品的总价格)。
任何有效货币金额
您PayPal账户上的电子邮件地址。
您PayPal账户上的电子邮件地址
handling_cart
对整个购物车收取的单笔手续费。如果在多个“添加到购物车”按钮中使用handling_cart,将使用第一件物品的handling_cart 值。
任何有效货币金额
物品名称(或购物车名称)。
paymentaction
指明交易是否是稍后在
上传第三方购物车
表单变量:第三方购物车中单个物品的变量
物品 #x 的价格。
handling_x
物品 #x 的手续费。
item_name_x
购物车中的物品 #x 的名称。必须为字母数字字符。
item_number_x
可用于跟踪购买或捐赠的传递变量,在付款完成时传回给您。
如果省略,则将没有变量传回给您。
物品 #x 的第一选项栏名称。
物品 #x 的第二选项栏名称。
物品 #x 的第一组选项值。
必须对 on0_x 进行定义,才能识别 os0_x 。
物品 #x 的第二组选项值。
必须对 on1_x 进行定义,才能识别 os1_x 。
quantity_x
物品 #x 的数量。quantity_x 的值必须是正整数。不允许为空、零或负数。
shipping_x
运送物品 #x 的第一件(数量 1)的成本。
shipping2_x
每增加一件运送物品 #x (数量 2 或更多)所需的运送成本。
物品 #x 的税额。
表单变量:网站付款的预填充变量
街道(第 1 栏,共 2 栏)
字母数字字符
街道(第 2 栏,共 2 栏)
字母数字字符
字母数字字符
设置运送和开单国家或地区。请查看附录6,以了解允许的国家或地区代码。
客户的电子邮件地址
字母数字字符
first_name
定义买家的交易方式确认流程的语言
night_phone_a
美国电话号码的区号,或非美国电话号码的国家或地区代码。它会预填充买家的家庭电话。
night_phone_b
美国电话号码的 3 位数前缀,或非美国电话号码的完整电话号码(不包括国家或地区代码)。它会预填充买家的家庭电话。
night_phone_c
美国电话号码的 4 位数电话号码。它会预填充买家的家庭电话。
省/ 直辖市/ 自治区
必须为两个字符的正式缩写
表单变量: 账户注册的预填充变量
business_address1
客户所在的街道
字母数字字符
business_address2
客户所在的街道
字母数字字符
business_city
客户所在的市/ 县
字母数字字符
business_state
客户所在的省/ 直辖市/ 自治区
必须为两个字符的正式缩写
business_country
客户所在的国家
business_cs_email
客户的email地址
字母数字字符
business_cs_phone_a
客户的客服电话所在的美国电话号码的区号,或非美国电话号码的国家或地区代码。
business_cs_phone_b
客户的客服电话所在的美国电话号码的 3 位数前缀,或非美国电话号码的完整电话号码(不包括国家或地区代码)。它会预填充买家的家庭电话。
business_cs_phone_c
客户的客服电话所在的美国电话号码的 4 位数电话号码。它会预填充买家的家庭电话。
business_url
客户网站的URL
字母数字字符. 必须是有效的.
night_phone_b
美国电话号码的 3 位数前缀,或非美国电话号码的完整电话号码(不包括国家或地区代码)。它会预填充买家的家庭电话。
business_night_phone_a
客户所在的美国电话号码的区号,或非美国电话号码的国家或地区代码。它会预填充买家的家庭电话。
business_night_phone_b
客户所在的美国电话号码的 3 位数前缀,或非美国电话号码的完整电话号码(不包括国家或地区代码)。它会预填充买家的家庭电话。
business_night_phone_c
客户所在的美国电话号码的 4 位数电话号码。它会预填充买家的家庭电话。
附录6:国家或地区ISO3166代码
国家或地区名
国家或地区名
国家或地区名
希腊Greece
波兰Poland
阿根廷Argentina
中国香港特别行政区
葡萄牙Portugal
匈牙利Hungary
新加坡Singapore
奥地利Austria
冰岛Iceland
斯洛伐克Slovakia
比利时Belgium
斯洛文尼亚
巴西Brazil
爱尔兰Ireland
南非South Africa
以色列Israel
意大利Italy
西班牙Spain
牙买加Jamaica
瑞典Sweden
哥斯达黎加Costa Rica
瑞士Switzerland
中国台湾地区
捷克共和国Czech Republic
泰国Thailand
丹麦Denmark
卢森堡Luxembourg
土耳其Turkey
多米尼加共和国
马来西亚Malaysia
英国Great Britain
厄瓜多尔Ecuador
墨西哥Mexico
乌拉圭Uruguay
芬兰Finland
荷兰Holland
委内瑞拉Venezuela
新西兰New Zealand
德国Germany
挪威Norway
本文版权:
&&NDF俱乐部
&&国际域名注册
&&建站咨询
合作伙伴: |
& NDF Corporation}

我要回帖

更多关于 invalid code 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信