不帅 发表于 2015-2-3 23:41:04

PHP网页编程之解析PayPal付出接口的PHP开辟体例

会有很多高手的鼓励,新手的支持,慢慢你劲头就十足,有更多的信心和兴趣去学。   请求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>
可用变量
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" 值:
到:
经由过程上述 “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” 变量,咱们将假定一切泉币变量值为美元。
以上就是本文所引见的应用PHP开辟PayPal付出接口的次要操作步调。
要想从事软件开发工作,那么,还有很多的知识要学习,其实,不管是以后想去从事哪个工作,都需要自己去利用空闲的时间去不断的学习新的知识,不断的充实自己。

飘飘悠悠 发表于 2015-2-4 06:00:14

个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。

飘灵儿 发表于 2015-2-9 16:40:30

不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。

冷月葬花魂 发表于 2015-2-27 11:31:40

小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。

老尸 发表于 2015-3-9 01:47:14

环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。

变相怪杰 发表于 2015-3-11 01:10:26

最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。

山那边是海 发表于 2015-3-13 03:08:11

php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)

第二个灵魂 发表于 2015-3-20 10:45:38

,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。

精灵巫婆 发表于 2015-4-9 13:20:31

兴趣是最好的老师,百度是最好的词典。

仓酷云 发表于 2015-4-12 11:27:55

这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。

活着的死人 发表于 2015-4-14 10:58:34

要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。

再现理想 发表于 2015-4-25 17:07:19

在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。

海妖 发表于 2015-4-26 16:11:54

当然这种网站的会员费就几十块钱。

莫相离 发表于 2015-4-30 13:40:27

这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己

小妖女 发表于 2015-4-30 14:56:18

建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。

若相依 发表于 2015-5-12 12:44:05

php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。

再见西城 发表于 2015-6-22 13:03:33

说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。

admin 发表于 2015-6-23 20:47:03

有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。

不帅 发表于 2015-6-24 15:19:39

写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。

爱飞 发表于 2015-7-4 16:52:58

我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
页: [1] 2
查看完整版本: PHP网页编程之解析PayPal付出接口的PHP开辟体例