用php开发paypal支付接口

用php开发paypal支付接口

ID:1238246

大小:47.50 KB

页数:8页

时间:2017-11-09

上传者:U-2494
用php开发paypal支付接口_第1页
用php开发paypal支付接口_第2页
用php开发paypal支付接口_第3页
用php开发paypal支付接口_第4页
用php开发paypal支付接口_第5页
资源描述:

《用php开发paypal支付接口》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

PayPal快速、安全而又方便,是跨国交易的首选在线付款方式。现在PayPal可以和国内大部分信用卡关联,可以实现国人的跨国交易收支。申请PayPal注册网址:https://www.paypal.com/paypal接口与其它接口有些不同,稍微复杂一点。其实银行接口也算是一个站点的插件。所谓paypalipn(InstantPaymentNotification),就是Paypal开发的一种能主动通知第三方卖家系统交易状态的一种机制。IPN的原理很简单,就是当产生了一个交易之后,交易状态发生变化时,如用户已经付款、或者退款、撤销时,Paypal利用常用的HTTPPOST方式,将交易的一些变量提交给网站的某个页面(称之为IPNHandler),当这个页面接受到请求时候,将这些数据原封不动加上一个指示验证的cmd=_notify-validate,POST回Paypal的接口地址,如果数据正确,那么Paypal返回字符串VERIFIED,否则为INVALID,如果结果为VERIFIED,那么你的程序就可以使用这些数据进行操作。开设Sandbox帐号但代码的调试是一件很痛苦的事情,因为作为第三方开发人员,不可能开两个帐号,每次测试还要之间交易一些钱,所以Paypal专门开发了Sandbox给开发人员进行开发,首先到https://developer.paypal.com/注册一个开发帐号,好了之后再进入Sandbox建立测试用的Paypal虚拟帐号(至少应该建立一个Business的和一个Personal的),这种账号注册方法和Paypal的流程一样,信息可以是假的,包括银行帐号、信用卡(其实PaypalSandbox会自动生成一些随机的号码)。接下来需要激活PaypalSandbox的虚拟帐号,注意,这里不管你在PaypalSanbox注册时填什么邮件地址,有任何发送到虚拟帐号所填邮箱的邮件都存会在开发帐号的管理界面中的Email页(导航栏上有)中。登录Sandbox的虚拟Paypal环境,还需要验证虚拟帐号的银行,这里可以随便填,然后通过AddFunds来给账户充值(想填多少填多少920-203920-533)。然后,还需要激活IPN的选项,在Business的那个账户的Profile设置页面中,点击,然后点击Edit按钮,打开IPN,这里如果你使用的是固定的IPNHandle,可以直接将地址填入。接下来,我们测试的时候,应该将Paypal接口的地址设置为https://www.sandbox.paypal.com/cgi-bin/webscr基本的流程当客户向您付款时,PayPal将向位于指定URL(type=”hidden”name=”notify_url”value=”“)的服务器发送一个通知。此通知中将包括您的客户的所有付款信息(例如,客户名称、金额),以及一段加密代码。当服务器收到通知时,它随后会将该信息(包括加密代码)发送回安全的PayPalURL。PayPal将通过检查加密字符串对交易进行身份验证。这种将IPN 数据传回PayPal的操作防止了“欺骗”,因此您可以确保IPN来自PayPal。在进行验证时,PayPal会将其合法性的确认信息发送回您的服务器。提示:要启用即时付款通知,您将需要输入一个URL,通过它您可以接收到来自您的用户信息的通知。启用了即时付款通知后,每次当您接收付款时您的服务器都会收到一个通知,此通知将以隐藏的“FORMPOST”的方式发送到指定的URL,并将包括所有付款信息。此页面的底部列出了通知的FORM变量。每次收到来自PayPal的IPN时,您必须在实施订单之前完成如下所述的通知确认过程。确认列出的信息将可确保交易合法。通知确认IPN为了确保付款已进入您的PayPal账户,您必须验证用作“receiver_email”的电子邮件地址是否已在您的PayPal账户中注册并得到确认。服务器收到即时付款通知后,您将需要通过构建一个发送到PayPal的HTTPPOST对其进行确认。您的POST应发送到https://www.paypal.com/cgi-bin/webscr您必须完全按照收到表单变量时的原样发送所有收到的表单变量。您还需要将一个值为“_notify-validate”的名为“cmd”变量(例如,cmd=_notify-validate)附加到POST字符串。PayPal将回复该POST,并在回复的正文中包含一个单词“VERIFIED”或“INVALID”。当您收到VERIFIED回复时,您需要在实施订单之前执行若干检查:·确认“payment_status”为“Completed”,因为系统也会为其他结果(如“Pending”或“Failed”)发送IPN。·检查“txn_id”是否未重复,以防止欺诈者重复使用旧的已完成的交易。·验证“receiver_email”是已在您的PayPal账户中注册的电子邮件地址,以防止将付款发送到欺诈者的账户。·检查其他交易详情(如物品号和价格),以确认价格未改变完成了以上检查后,您可以使用IPN数据更新您的数据库,并处理购物。如果收到“无效”通知,则应将其视为可疑通知,并应对其进行调查。主要参数:向PayPal提交粘贴代码时,应包括以下4个隐藏变量及一张图片,这就是说,您粘贴到PayPal的最短必需代码应如下: 12345678//"_xclick"立即购买//PayPal账户上的电子邮件地址//物品名称(或购物车名称)//定义币种以标示货币变量值可以为"USD"、"EUR"、"GBP"、"CAD"、"JPY"。//物品的价格(购物车中所有物品的总价格,因为是_Xclick模式)可用变量business您的PayPal账户上的电子邮件地址quantity物品数量。大于1时,会与金额相乘item_name物品名称(或购物车名称)。必须是字母数字字符,最多为127个字符item_number用于跟踪付款的可选传递变量。必须是字母数字字符,最多为127个字符amount物品的价格(购物车中所有物品的总价格)shipping该物品的运送成本shipping2每增加一件物品所需的运送成本handling手续费tax基于交易的税额。如果使用该变量,传递值将覆盖所有用户信息税收设置(不管买家所在位置)。 no_shipping送货地址。如果设为"1",则不会要求您的客户提供送货地址。该变量为可选项;如果省略或设为"0",将提示您的客户输入送货地址cn可选标签,会在提示栏上显示(最多40个字符)no_note为付款加入提示。如果设为"1",则不会提示您的客户输入提示。该变量为可选项;如果省略或设为"0",将提示您的客户输入提示。on0第一选项栏名称。最多64个字符os0第一组选项值。最多200个字符。"on0"必须定义,以便识别"os0"。on1第二选项栏名称。最多64个字符os1第二组选项值。最多200个字符。"on1"必须定义,以便识别"os1"。custom决不会向您的客户显示的可选转递变量。可用于跟踪存货invoice决不会向您的客户显示的可选转递变量。可用于跟踪账单号notify_url仅与IPN一起使用。发送IPNFormPost的互联网URLreturn您的客户完成付款后将返回的互联网URLcancel_return您的客户取消付款后将返回的互联网URLimage_url您要用作图标的图片的互联网URL,图片大小为150X50像素cs设置您的付款页面的背景色。如果设为"1",背景色将为黑色。该变量为可选项;如果省略或设为"0",背景色将为白色扩展变量PayPal允许您粘贴扩展变量,条件是将改变以下"cmd"值:到:通过上述“cmd”值修改,您还可使用以下变量:扩展变量email客户的电子邮件地址first_name客户的名。必须是字母数字字符,最多为32个字符last_name客户的姓。必须是字母数字字符,最多为64个字符 address1客户地址所在国家或地区。必须是字母数字字符,最多为100个字符address2客户地址第二行。必须是字母数字字符,最多为100个字符city客户地址所在城市。必须是字母数字字符,最多为100个字符state客户地址所在州。必须是正式的2个字母缩写zip客户地址的邮政编码night_phone_a客户夜间联系电话号码的区号night_phone_b客户夜间联系电话号码前三位day_phone_a客户白天联系电话号码的区号day_phone_b客户白天联系电话号码前三位提示:若要更改”用户信息”中的默认运费和手续费设置,请转至您的用户信息,编辑您的运费计算,然后点击”允许采用基于交易的运费”复选框。将单个物品传递给PayPal如果您的第三方购物车可设置成向PayPal传递单个物品,有关物品的信息将加入买家和卖家的记录日志和系统通知中。要加入该物品的信息,您需要将HTML格式元素粘贴至PayPal购物车流程的新版本。该过程与#1节"将总购物车数量传递给PayPal"描述的非常相似,不同之处在于:将"cmd"变量设置到"_cart"更换必要的HTML行与添加称为“upload”的新变量在<表格>和标签之间新增以下行:定义物品明细对于以下各特定物品参数,定义与通过您的合作商购物车购买的各物品对应的一组新值。将“_x”附加到变量名称,其中x是物品号码,从1开始,每加入一物品增加一。item_name_x(物品#x需要)购物车中物品#x的名称。必须是字母数字字符,最多为127个字符 item_number_x与购物车中物品#x关联的可选传递变量。必须是字母数字字符,最多为127个字符amount_x(物品#x需要)物品#x的价格shipping_x运送物品#x的第一件(数量1)的成本shipping2_x每增加一件运送物品#x(数量2或更多)所需的运送成本handling_x物品#x的处理成本on0_x物品#x的第一选项栏名称。最多64个字符os0_x物品#x的第一组选项值。最多200个字符。”on0_x”必须定义,以便识别“os0_x”。on1_x物品#x的第二选项栏名称。最多64个字符os1_x物品#x的第二组选项值。最多200个字符。”on1_x”必须定义,以便识别“os1_x”。为购物车中每件物品重复此设定为您的买家购物车中的各物品加入以上表格中的一组必需的变量和任何选项变量。购物车中的第一物品必须用以“_1″结束的参数定义,如“item_name_1″、”amount_1″等。同样,第二物品应用变量“item_name_2″、”amount_2″等命名。提示:”_x”值必须以一为单位按序递增,以便识别。如果从item#1跳到item#3而不定义item#2,则第三个物品会被忽略。要指定币种:所有货币变量(金额、运费、运费2、手续费、税款)将以粘贴在付款上的“currency_code”变量指定的币种显示。因为其不是随物品不同的,无需向变量名称附加“_x”。如果没有粘贴“currency_code”变量,我们将假定所有货币变量值为美元。PayPayAPIPayPal提供了多个API接口供开发者使用。在使用API之前,你必须先申请一个高级个人账户或者企业账户,同时你必须获取API凭证供每次调用API时使用。一旦你获取了API凭证,您就可以调用相关的API接口了。目前,我们提供两种API接口方式,NVP和SOAP。一般来说我们推荐您使用NVP接口。?Name-ValuePair(NVP)接口–请求和响应都是使用简单的HTTP。该接口简单易实现,适合于初级开发者和需要快速完成集成的人员; ?SOAP接口-请求和响应都是通过SOAP来完成。该接口适合于面向对象工程的开发;PayPalAPI:NVP(名称/值对)接口通过NVPAPI接口,您只需给PayPal发送一个HTTP请求,并通过“名称=值”的形式指定请求参数,即可充分利用PayPal的API功能。NVPAPI是PayPal的业务功能、风险管理和业务逻辑的简单接口。NVPAPI最基本的使用方法是通过到PayPal服务器的HTTPS连接发送一个NVP字符串,然后处理响应(也是一个NVP字符串)。执行NVPAPI调用的基本步骤如下:?为特定的API方法构造一个请求参数字符串。?通过HTTPS连接向PayPal服务器发送这个参数字符串。?处理服务器响应中的NVP。每个NVPAPI请求字符串包含有API用户名、API密码、所要调用API的名称及用来标识交易的令牌,如:USER=someone@unknowncompany.com&PWD=mypassword&METHOD=GetExpressCheckoutDetails&TOKEN=EC-23T233ZP3DFB...成功的应答包含以下要素:ACK=Success,以及一个用来标识交易的唯一令牌。ACK=Success&TIMESTAMP=date/timeOfResponse&CORRELATIONID=debuggingToken&VERSION=2.300000&BUILD=buildNumber&TOKEN=EC-3DJ78083ES565113B&EMAIL=abcdef@anyemail.com&PAYERID=95HR9CM6D56Q2&PAYERSTATUS=verified&FIRSTNAME=John&LASTNAME=Smith...您可以使用NVPAPI完成以下操作:?搜索已完成的交易记录,以及查询交易详情;?自动化后端功能,例如,捕获授权,以及处理退款等;APIProfile进入商家账号得到相应的APIProfile,如果是以中文语言查看,在-用户信息-API访问-中得到,其中里面申请API时,有两个选项,第一个是用签名的方式,第二种是以证书的方式来认证商家身份,当你选择下载数字证时,可以到www.paypaltech.com/tools/pem2p12.php转换为.p12文件,也可以采用OpenSSL的命令完成,一句话搞定,要输入密码喔~。这里的链接有详细说明www.paypal.com/IntegrationCenter/ic_certificate.html 相应参考资料请参考连接www.paypal.com/IntegrationCenter/ic_expresscheckout.html了解关于ExpressCheckout的原理;在此基础上,你可以访问www.paypal.com/IntegrationCenter/ic_nvp.html获取相关测试代码;关于PayPal的测试环境你可以访问www.paypal.com/IntegrationCenter/ic_sandbox.html,APIReferencehttps://www.paypal.com/IntegrationCenter/ic_api-reference.html

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭