再次之前先说一个网址:https://www.paypaltech.com/SG2/             这个是生成paypal IPN的网址,这样说吧,是替你生成代码的网址(非常的好)!不懂没关系!先知道一下!

下载教程网址:http://download.csdn.net/source/2225766

http://download.csdn.net/source/2225778

PayPal 快速、安全而又方便,是跨国交易的首选在线付款方式。现在PayPal可以和国内大部分信用卡关联,可以实现国人的跨国交易收支。
申请PayPal注册网址:https://www.paypal.com/

paypal接口与其它接口有些不同,稍微复杂一点。 其实银行接口也算是一个站点的插件。

所谓paypal ipn(Instant Payment Notification),就是Paypal开发的一种能主动通知第三方卖家系统交易状态的一种机制。IPN的原理很简单,就是当产生了一个交易之后, 交易状态发生变化时,如用户已经付款、或者退款、撤销时,Paypal利用常用的HTTP POST方式,将交易的一些变量提交给网站的某个页面(称之为IPN Handler),当这个页面接受到请求时候,将这些数据原封不动加上一个指示验证的cmd=_notify-validate,POST回Paypal 的接口地址,如果数据正确,那么Paypal返回字符串VERIFIED,否则为INVALID,如果结果为VERIFIED,那么你的程序就可以使用这 些数据进行操作。

开设Sandbox帐号

但代码的调试是一件很痛苦的事情,因为作为第三方开发人员,不可能开两个帐号,每次测试还要之间交易一些钱,所以Paypal专门开发了Sandbox给开发人员进行开发,首先到https://developer.paypal.com/ 注册一个开发帐号,好了之后再进入Sandbox建立测试用的Paypal虚拟帐号(至少应该建立一个Business的和一个Personal的),这 种账号注册方法和Paypal的流程一样,信息可以是假的,包括银行帐号、信用卡(其实Paypal Sandbox会自动生成一些随机的号码)。接下来需要激活Paypal Sandbox的虚拟帐号,注意,这里不管你在Paypal Sanbox注册时填什么邮件地址,有任何发送到虚拟帐号所填邮箱的邮件都存会在开发帐号的管理界面中的Email页(导航栏上有)中。登录 Sandbox的虚拟Paypal环境,还需要验证虚拟帐号的银行,这里可以随便填,然后通过Add Funds来给账户充值(想填多少填多少 920-203 920-533 )。然后,还需要激活IPN的选项,在Business的那个账户的Profile设置页面中,点击,然后点击Edit按钮,打开IPN,这里如果你使用 的是固定的IPN Handle,可以直接将地址填入。

接下来,我们测试的时候,应该将Paypal接口的地址设置为https://www.sandbox.paypal.com/cgi-bin/webscr

基本的流程

当客户向您付款时,PayPal将向位于指定 URL (type=”hidden” name=”notify_url” value=” “) 的 服务器发送一个通知。此通知中将包括您的客户的所有付款信息(例如,客户名称、金额),以及一段加密代码。当服务器收到通知时,它随后会将该信息(包括加 密代码)发送回安全的PayPal URL。PayPal将通过检查加密字符串对交易进行身份验证。这种将 IPN 数据传回PayPal的操作防止了“欺骗”,因此您可以确保 IPN 来自PayPal。在进行验证时,PayPal会将其合法性的确认信息发送回您的服务器。

提示:要启用即时付款通知,您将需要输入一个 URL,通过它您可以接收到来自您的用户信息的通知。

启用了即时付款通知后,每次当您接收付款时您的服务器都会收到一个通知,此通知将以隐藏的“FORM POST”的方式发送到指定的 URL,并将包括所有付款信息。此页面的底部列出了通知的 FORM 变量。

每次收到来自PayPal的 IPN 时,您必须在实施订单之前完成如下所述的通知确认过程。确认列出的信息将可确保交易合法。

通知确认IPN

为了确保付款已进入您的PayPal账户,您必须验证用作“receiver_email”的电子邮件地址是否已在您的PayPal账户中注册并得到确认。

服务器收到即时付款通知后,您将需要通过构建一个发送到PayPal的 HTTP POST 对其进行确认。您的 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的最短必需代码应如下:

<form action="https://www.paypal.com/row/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_xclick">  // "_xclick" 立即购买
<input type="hidden" name="business" value="you@youremail.com">  //PayPal账户上的电子邮件地址
<input type="hidden" name="item_name" value="Item Name"> //物品名称(或购物车名称)
<input type="hidden" name="currency_code" value="USD">  //定义币种以标示货币变量 值可以为 "USD"、"EUR"、"GBP"、"CAD"、"JPY"。
<input type="hidden" name="amount" value="0.00"> //物品的价格(购物车中所有物品的总价格,因为是_Xclick模式)
<input type="image" src="http://www.paypal.com/zh_XC/i/btn/x-click-but01.gif" name="submit" alt="请使用PayPal付款!">
</form>
PayPal 提供附加变量,用于自定义您的 Form Post。所有可用变量如下(变量名称必须用小写):
可用变量
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 一起使用。发送 IPN Form Post 的互联网 URL
return 您的客户完成付款后将返回的互联网 URL
cancel_return 您的客户取消付款后将返回的互联网 URL
image_url 您要用作图标的图片的互联网 URL,图片大小为 150 X 50 像素
cs 设置您的付款页面的背景色。如果设为 "1",背景色将为黑色。该变量为可选项;如果省略或设为 "0",背景色将为白色
扩展变量

PayPal 允许您粘贴扩展变量,条件是将改变以下 "cmd" 值:<input type="hidden" name="cmd" value="_xclick"> 到:
<input type="hidden" name="cmd" value="_ext-enter"><input type="hidden" name="redirect_cmd" value="_xclick">
通过上述 "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 行
<input type="hidden" name="cmd" value="_xclick"> 与<input type="hidden" name="cmd" value="_cart">添加称为 "upload" 的新变量
在 <表格> 和 </表格> 标签之间新增以下行:<input type="hidden" name="upload" value="1">
定义物品明细
对于以下各特定物品参数,定义与通过您的合作商购物车购买的各物品对应的一组新值。将 "_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" 变量,我们将假定所有货币变量值为美元。
PayPay API
PayPal提供了多个API接口供开发者使用。在使用API之前,你必须先申请一个高级个人账户或者企业账户,同时你必须获取API 凭证供每次调用API 时使用。一旦你获取了API凭证,您就可以调用相关的API接口了。目前,我们提供两种API接口方式,NVP和SOAP。一般来说我们推荐您使用 NVP 接口。
• Name-Value Pair(NVP)接口 – 请求和响应都是使用简单的HTTP。该接口简单易实现,适合于初级开发者和需要快速完成集成的人员;
• SOAP接口 - 请求和响应都是通过SOAP来完成。该接口适合于面向对象工程的开发;
PayPal API:NVP(名称/值对)接口
通过NVP API接口, 您只需给PayPal发送一个HTTP请求,并通过“名称=值”的形式指定请求参数,即可充分利用PayPal的API功能。
NVP API 是 PayPal 的业务功能、风险管理和业务逻辑的简单接口。NVP API 最基本的使用方法是通过到 PayPal 服务器的 HTTPS 连接发送一个 NVP 字符串,然后处理响应(也是一个 NVP 字符串)。执行 NVP API 调用的基本步骤如下:
• 为特定的 API 方法构造一个请求参数字符串。• 通过 HTTPS 连接向 PayPal 服务器发送这个参数字符串。
• 处理服务器响应中的 NVP。
每个NVP API请求字符串包含有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...
您可以使用NVP API完成以下操作:• 搜索已完成的交易记录,以及查询交易详情;
• 自动化后端功能,例如,捕获授权,以及处理退款等;
API Profile
进入商家账号得到相应的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 了解关于Express Checkout的原理;在此基础上,你可以访问www.paypal.com/IntegrationCenter/ic_nvp.html 获取相关测试代码;
关于PayPal的测试环境你可以访问www.paypal.com/IntegrationCenter/ic_sandbox.html,
API Reference https://www.paypal.com/IntegrationCenter/ic_api-reference.html

PayPal PHP接口 paypal在线支付相关推荐

  1. 支付宝接口的在线支付(https://openhome.alipay.com/platform/appDaily.htm?tab=info)

    项目中需要用到在线支付,实现了调用支付宝接口的在线支付,记录下来以便以后使用. 一.进入蚂蚁金服开放平台登录 网址:https://openhome.alipay.com/developmentDoc ...

  2. PrestaShop支付接口-网银在线支付,在线支付收款,外贸收款

    2019独角兽企业重金招聘Python工程师标准>>> 国内第一家支持prestashop中文支付接口网银在线-chinapay 需要请联系QQ:1285872439 PrestaS ...

  3. JavaWeb开发调用支付宝接口实现在线支付(整个支付过程从头到尾)

    项目中需要用到在线支付,实现了调用支付宝接口的在线支付,记录下来以便以后使用. 一.进入蚂蚁金服开放平台登录 网址:https://openhome.alipay.com/developmentDoc ...

  4. Spring MVC 使用支付宝接口完成在线支付

    项目中要使用到在线支付功能 目前常用的在线支付手段主要是 支付宝 和微信. 这里我使用的是支付宝支付,支付宝有个好处就是他有一个沙箱模式 即使没有申请渠道的资格也可以体验一把在线支付. 第一步:完善沙 ...

  5. PayPal,Stripe,Square轮询支付系统

    轮询展示 展示我们轮询的页面 轮询套餐 根据不同的用户和需求,可以选择不同的套餐 普通版 1500元 1年 1个用户 支持Paypal/Stripe 不限制A站个数 不限制B站个数 不限制提交模式 订 ...

  6. Paypal 在线支付接口应用从零开始,第2节,[支付API原理及流程]

    今天看看Paypal支付流程和简单的认证原理,我画了一张图.应该能表达这两点意思了 我们的站点名字,为了好理解,暂且就定为西狐的网站吧. 点此查看清晰原图 恩,理论知识很重要哈,先把这图理解了,下一步 ...

  7. Paypal 在线支付接口

    http://www.paypal-china.org/wangzhai/188.html 关于paypal在线支付的信息可以直接访问http://www.paypal.com.paypal作为国际在 ...

  8. 在线支付巨头PayPal宣布退出Libra:继续就未来合作方式进行对话

    在线支付巨头PayPal日前宣布退出Facebook提议的加密货币全球支付网络,PayPal是首位退出Libra协会的成员,对这家社交媒体巨头颠覆金融服务行业的雄心造成沉重打击. 总部位于圣何塞的Pa ...

  9. paypal如何支付欧元_国际在线支付巨头——PayPal

    PayPal,是一个总部位于美国加利福尼亚州圣荷西市的因特网第三方支付服务商,允许在使用电子邮件来标识身份的用户之间转移资金,避免了传统的邮寄支票或者汇款的方法.PayPal也和一些电子商务网站合作, ...

最新文章

  1. 落地即一地鸡毛,AI落地存在的难题有哪些?
  2. shell脚本中取消高亮显示_Linux中强大的top命令
  3. 浅析Condition与等待通知机制
  4. lucene2.0+heritrix
  5. svn版本管理软件——svn分支管理
  6. Python笔记 #19# 实现bpnn
  7. CSS3的clac 没有效果,警告提示“invalid property value”
  8. BI 工具常用图表用法
  9. 全球问题—废旧电子废弃物的回收
  10. Java class located out of the source root
  11. 农家乐微信小程序开发功能
  12. 车管所服务器维护还能考科目四吗,车管所可以预约科目四吗
  13. Mysql数据表一直显示使用中
  14. ACM-ICPC 2021 亚洲区域赛 昆明站
  15. 第一代程序员王小波 (送书活动)
  16. 梦幻仙缘剧情java_梦幻仙缘BT版
  17. 软件测试-常见BUG分享
  18. Wnt 信号通路介导胆碱通路抵御感染
  19. cpu功耗排行_2019年cpu功耗排行榜_电脑处理器排行榜2019
  20. 如何提取一个转录本的3'UTR区域的序列

热门文章

  1. 四合天地软件测试系统,GZ-2017025软件测试赛题.-全国职业院校技能大赛.doc
  2. oracle数据文件被误删或损坏故障处理
  3. ABBYY FineReader 14新增了什么(附功能对比表)
  4. 3.5 CMMI3级——验证(Verification)
  5. tradingView--K线图 使用
  6. Qt 实现的时间轴 Timeline 用于视频非线形编辑工具
  7. iwebsec靶场 中间件漏洞通关笔记2-Tomcat中间件漏洞
  8. oauth0 oauth2_OAuth需要死于大火
  9. 小程序 html编辑器,小程序富文本编辑器editor初体验
  10. Django基础(35): 全局上下文处理器(Context Processors)详解及如何自定义模板上下文处理器...