IPN的原理很简单,就是当产生了一个交易之后,交易状态发生变化时,如用户已经付款、或者退款、撤销时,Paypal利用常用的HTTP POST方

式,将交易的一些变量提交给网站的某个页面(称之为IPN Handler),当这个页面接受到请求时候,将这些数据原封不动加上一个指示验证

的cmd=_notify-validate,POST回Paypal的接口地址,如果数据正确,那么Paypal返回字符串VERIFIED,否则为INVALID,如果结果为

VERIFIED,那么你的程序就可以使用这些数据进行操作。
但代码的调试是一件很痛苦的事情,因为作为第三方开发人员,不可能开两个帐号,每次测试还要之间交易一些钱,所以Paypal专门开发了

Sandbox给开发人员进行开发,首先到https://developer.paypal.com/ 注册一个开发帐号,好了之后再进入Sandbox建立测试用的Paypal虚拟

帐号(至少应该建立一个Business的和一个Personal的),这种账号注册方法和Paypal的流程一样,信息可以是假的,包括银行帐号、信用卡

(其实Paypal Sandbox会自动生成一些随机的号码)。接下来需要激活Paypal Sandbox的虚拟帐号,注意,这里不管你在Paypal Sanbox注册

时填什么邮件地址,有任何发送到虚拟帐号所填邮箱的邮件都存会在开发帐号的管理界面中的Email页(导航栏上有)中。登录Sandbox的虚拟

Paypal环境,还需要验证虚拟帐号的银行,这里可以随便填,然后通过Add Funds来给账户充值(想填多少填多少)

关于IPN的详细设置

登录至Paypal后台,进入My Account->Profile页面,点击Instant Payment Notification,如下图: 

然后就会出现下面的页面了,点击Edit按钮,如下图:

然后就会出现下面的页面了,在页面里面那个选框处打勾,并在下面的Notification URL 处填写:http://您的网站地址/index.php?gOo=cGF5cGFsX3JlcGx5LnBocA& 然后点击Save按钮,如下图:

然后页面就会提示你:“You have successfully activated Instant Payment Notification.”

接下来再次进入My Account->Profile页面,点击Website Payment Preferences ,如下图:

然后就会进入Website Payment Preferences页面,在里面要做四件事情:
1:Auto Return 后面打勾选择On
2:Return URL 后面输入:http://您的网站地址/index.php?gOo=cGF5cGFsX3JlcGx5X3JldHVybi5waHA&
3:Payment Data Transfer 后面打勾选择On
4:上面都做好之后,点击页面最下面的Save按钮
如下图:

保存之后页面立即跳转到My Account->Profile,并且提示您设置成功,里面还会有一串identity token号码,那个就是私钥,如下图:

当然,这个私钥(identity token)不会只出现这一次的,在您设置完之后,您可以仍然进入Website Payment Preferences页面去查看它,它就在Payment Data Transfer那一个区块,如下图:

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

用户在我们的网站上选择商品、放入购物车,然后检查准备支付
网站根据购物车中的商品,生成Paypal的支付表单(也是提交到上面IPN用的Paypal接口地址),包含了此次交易的一些信息(下次会专门找

机会解释一下)。并在自己的数据库中生成一张订单记录。
Paypal在Session中记录下这些交易信息

用户用Paypal账户登录Paypal(Sandbox用Sandbox的虚拟帐号),复查明细,点击Pay按钮
Paypal进行交易处理,如果我们的Paypal收款帐号在接受帐款上没有什么问题(没有特别的需要Accept的地方),交易完成,那么Paypal会发

送一个IPN,并发送提示邮件。
我们IPN Handler接受到信息,首先向Paypal进行校验,如果信息正确,然后根据信息和自己数据库中进行比对,如果无误,可以将支付信息

保存,并修改订单状态。
然后Paypal会显示一个界面表示交易完成,此时如果用户点击“Return”按钮,Paypal会将用户送回我们网站指定地点。
我们网站迎接用户回来,向用户表示感谢,并进行提醒,给出订单号等等。

如果明文形式的话,就和压缩包里面的paypal.htm文件一般

<!--
第一个是模拟测试
https://www.sandbox.paypal.com/cgi-bin/webscr
第二个是真实的
https://www.paypal.com/cgi-bin/webscr
-->
<form target="paypal" action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
<input type="image" src="https://www.sandbox.paypal.com/en_US/i/logo/paypal_logo.gif" border="0" name="submit" alt="PayPal

is the safer, easier way to pay - PayPal">
<!--一次购买
<input type="hidden" name="add" value="1">-->
<!--这里是不用它集成的购物车,如果代码是 value="_cart"表示用paypal已经做好的购物车. -->
<input type="hidden" name="cmd" value="_xclick">
<!--卖家的PAYPAL帐户-->
<input type="hidden" name="business" value="Seller_1199323809_biz@126.com">
<!--这个是从我网站传递过来的商品名和订单号 -->
<input type="hidden" name="item_name" value="BoAo International Trading 20071212s1p1u1">
<input type="hidden" name="item_number" value="20071212s1p1u1">
<!--这个是价格,如何传递就不用说了吧~ -->
<input type="hidden" name="amount" value="15">
<!--商品数量 -->
<input type="hidden" name="quantity" value="1">
<!--货币类型 CNY:人民币,USD:美元-->
<input type="hidden" name="currency_code" value="USD">
<!--取消交易并要返回的位置-->
<input type="hidden" name="cancel_return" value=" http://www.hotweb.net.cn/?state=null">
<!--交易完后自动返回的位置-->
<input type="hidden" name="return" value="http://www.hotweb.net.cn/?state=OK">

<input type="hidden" name="no_shipping" value="1">
<input type="hidden" name="charset" value="UTF-8">
<input type="hidden" name="notify_url" value="http://www.hotweb.net.cn/?state=notify">
<input type="hidden" name="add" value="1">
<input type="hidden" name="no_note" value="1">
<input type="hidden" name="bn" value="PP-BuyNowBF">

</form>

--------------------

文件夹和文件的一些简要说明:[App_Code] 放了几个必要的类
[Bin]  存放了支付接口的解密加密的一个DLL文件
[EWPcert] 系统所需要用到的安全证书
CheckOut.aspx 相当于B2C网站的购物车,程序从这里开始
NotifyUrl.ashx 2次POST安全性验证页面,比较重要
PDTResponse.aspx用于返回信息的页面,我们可以通过这个页面来实现,吧交易的一系列信息存入自己的数据库用于验证用户是否已经支付

---------[App_Code]-----------
ButtonEncryption.cs  加密【CHECK OUT】按钮的密码字符串,相当于吧明文的一些基本参数直接加密了
Constants.cs  全局变量,用于存放一些PAYPAL设置的基础信息
NVPCodec.cs  代码转换
Utils.cs  用于安全验证时候用的

---------[EWPcert]-----------
sandbox_cert_pem.txt  PAYPAL的公共证书
sdk-ewp.p12  一个类似似有的证书吧,这个到不是很了解

至于其他的,请大家看程序吧

点击下载

PayPal 国际支付接口安全可行性平台(电子商务)集成解决方案相关推荐

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

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

  2. Paypal 在线支付接口

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

  3. paypal国际支付的对接,使用tp5开发paypal

    前言 paypal是一种国际支付,并且是一个免费的产品,用户支付并不需要扣除用户消费的手续费,只在商家端扣除的,是一个不错的国际支付 2.下载 直接到github下载php-sdk包,我下载完直接在e ...

  4. paypal php接口 下载,PayPal接口集成之:PHP集成PayPal标准支付接口

    1,在网站的结账页面,设置一个提交到PayPal网站的form,里面有一些金额,商品名称,商家收款账号.结账成功后返回URL等内容, 2,用户结账时,通过点击'使用PayPal结账'的按钮到达PayP ...

  5. paypal国际支付——SpringBoot

    一.登录paypal官网,创建账户,创建项目,获取到Client ID,Secret https://developer.paypal.com/developer/applications/ 创建AP ...

  6. 【网站国际化必备】Asp.Net MVC 集成Paypal(贝宝)快速结账 支付接口 ,附源码demo...

    开篇先给大家讲段历史故事,博主是湖北襄阳人.襄阳物华天宝,人杰地灵,曾用名襄樊.在2800多年的历史文化中出现了一代名相诸葛亮(卧龙),三国名士庞统(凤雏),魏晋隐士司马徽(水镜先生),唐代大诗人孟浩 ...

  7. 怎样在自己的网站上集成paypal国际支付方式

    怎么在自己的企业站.销售网站上集成paypal国际支付 有些网站可能需要接收来自全球各地的付款,无疑paypal将是你的最佳选择,paypal是什么东西大家可以自己网上查找相关资料,跟国内支付宝类似, ...

  8. 西米支付:数字藏品支付通道,数字藏品对接支付接口相关知识(供参考)

    自2021年年末开始,数字藏品在我国持续火爆,数藏交易平台的数量已经达到500多家,而且还在以惊人的速度快速增多,剧测算,2026年我国数字藏品市场规模将达300亿元,众多互联网公司纷纷入局. 而构建 ...

  9. html 获取微信支付接口,h5外部浏览器跳转微信支付链接api接口免费代码

    如何让h5网页外浏览器跳转微信支付链接呢,这里分析了部分微信接口,可以用原生的公众号支付接口来搭建平台,代码如下 跳转中 //演示地址:http://vip.kakuapi.com/wxpay.php ...

最新文章

  1. SpringBoot复习:2(@Configuration注解)
  2. 【WP8】ResourceDictionary
  3. 实例入手Vue-Route给引用组件传值以及实现组件重用
  4. volatile关键字到底做了什么?
  5. centos7安装tomcat8.5.46版本
  6. 删除 Mac AppStore 正在下载的应用
  7. Linux 线程属性的使用
  8. Java 游戏报错 看不懂求教
  9. 基础学习day03---程序结构与控制、函数与数组入门
  10. LeetCode算法扫题系列19
  11. Spring boot Redis客户端 乱码
  12. 网站速度这样优化,让你的网站飞起来
  13. 计算机硬盘中有许多碎片,电脑磁盘碎片整理有什么用(需要经常清理吗)
  14. qcap 教程_给winpe添加explorer教程(续):文件列表
  15. echarts动态legend不变更
  16. Delphi - 对象构造和vmt系列
  17. 在Termux中安装Kali教程
  18. ZiPhone一键破解1.1.4nbsp;iPhone完整教程
  19. 孟岩大大《理解矩阵一二三》语录
  20. python抓取天猫店铺归属信息地址(扫码登录)@灵魂走风的江湖

热门文章

  1. 转:FRCNN之RPN结构详解
  2. 大连英语培训百家外语支招考研英语冲刺如何备考
  3. 'gbk' codec can't decode byte 0xae 解决方法
  4. pingcastle的使用-AD域安全检测
  5. ASP.NET典型三层架构企业级医药行业ERP系统实战(8大模块22个子系统,价值3000万)...
  6. wxpython 按钮 扁平化_tensorflow tensor Flatten 张量扁平化,多通道转单通道数据
  7. codeforces 120D Three Sons
  8. 【C/C++面经_其他问题】
  9. matlab lbp直方图特征多少维,LBP局部二值特征
  10. [13][02][10] QQ 拼音自定义时间戳