在上一片文章中,笔者介绍了buy now 按钮的内容,由于buy now按钮将页面直接重定向到了paypal的页面,也就是说已经脱离了我们自己的系统,我们怎样才能知道用户是否付款成功了呢?答案是Paypal为我们提供了IPN的功能,这个功能可以理解为:当用户支付成功之后,paypal可以给某一个url提交一个post请求,来表明某个用户已经完成了一个支付。下面笔者将会详细介绍怎么实现这个功能。

1)登录到开发者的后台dashbord

https://developer.paypal.com/webapps/developer/applications/myapps

2) IPN功能默认情况下是只对专业用户开启的,如果我们只是破铜的business账户是没有此功能的。我们需要将business账号升级到pro级别。具体步骤:

2.1  点击sandbox下的accounts

2.2  选择你自己的business测试账号,点击profile

2.3  在profile的弹出框下的profile tab中找到account type,后面有一个upgrade to pro 按钮,点击这个按钮就能够完成升级的工作,升级之后应该是这样的:

3) 完成了升级到专业用户的工作,我们就可以配置IPN了,具体步骤如下:

3.1 使用business测试账号登录到sandbox系统中

3.2 点击 My Account --> Profile

3.3 选择 Selling preferences 中的 Instant Payment Notification preferences

3.4  点击Choose IPN settings

3.5  填写Notification URL中的内容,这个url就应该是你自己系统中接受paypal提交的post请求的地址,对于php开发者,这个url可以是一个php的页面,java可以使一个action/ controller

需要指出的是,这个url不能是localhost/ 127.0.0.1 下的,需要时公网上面的一个地址,这样paypal才能找得到。

4)完成了上面的工作,我们就可在每次收到用户的付款后,收到一个从paypal发过来的post请求。

5)接收这个post请求需要完成一个验证的步骤,具体的验证流程可以参考 https://developer.paypal.com/docs/classic/ipn/gs_IPN/

怎么具体接收这个post请求参考: https://www.youtube.com/watch?v=t_7GA1BZXPs

具体代码如下:

Paypal_IPN.php

<?php
class Paypal_IPN {/** @var string $_url The paypal url to go to through cURLprivate $_url;/*** @param string $mode 'live' or 'sandbox'*/public function __construct($mode = 'live'){if ($mode == 'live')$this->_url = 'https://www.paypal.com/cgi-bin/webscr';else$this->_url = 'https://www.sandbox.paypal.com/cgi-bin/webscr';}public function run(){$postFields = 'cmd=_notify-validate';foreach($_POST as $key => $value){$postFields .= "&$key=".urlencode($value);}$ch = curl_init();curl_setopt_array($ch, array(CURLOPT_URL => $this->_url,CURLOPT_RETURNTRANSFER => true,CURLOPT_SSL_VERIFYPEER => false,CURLOPT_POST => true,CURLOPT_POSTFIELDS => $postFields));// the result will be either "VERIFIED" or "INVALID"$result = curl_exec($ch);curl_close($ch);$fh = fopen('result.txt', 'w');fwrite($fh, $result . ' -- ' . $postFields);fclose($fh);echo $result;}}?>

TestIPN.php

<?php
require 'Paypal_IPN.php';
$paypal = new Paypal_IPN('sandbox');
$paypal->run();
?>

6) 这里的TestIPN.php是用来接受post请求的类。

Paypal学习 2 -- IPN (Instant Payment Notification)相关推荐

  1. PayPal开发之IPN的使用

    PayPal 快速.安全而又方便,是跨國交易的首選在線付款方式.現在PayPal可以和國內大部分信用卡關聯,可以實現國人的跨國交易收支. 申請PayPal註冊網址:https://www.paypal ...

  2. ASP.NET集成PayPal(使用IPN)

    IPN:即时付款通知(Instant Payment Notify 简称IPN) PayPal设置说明: 1.注册测试帐号: https://cms.paypal.com/us/cgi-bin/?cm ...

  3. paypal消息通知IPN

    paypal支付成功时会实时的把支付交易信息返回给我们,java会返回一个payment对象,里面有交易的信息包含付款人,订单费用,订单的收货地址,收款人,交易号等信息.我们拿到了这个payment就 ...

  4. java对接PayPal支付(ipn中文乱码解决)

    IPN验证有中文的时候会出现乱码,是由于encoding设置导致的,请通过以下步骤将encoding设置改为UTF-8应该就能解决: 1)登录您的PayPal账号后打开这个链接进入设置页面: http ...

  5. 基于ASP.NET/C#开发国外支付平台(Paypal)学习心得。

        最近一直在研究Paypal的支付平台,因为本人之前没有接触过接口这一块,新来一家公司比较不清楚流程就要求开发两个支付平台一个是支付宝(这边就不再这篇文章里面赘述了),但还是花了2-3天的时间通 ...

  6. Android学习(二十)Notification通知栏

    一.通知栏的内容 1.图标 2.标题 3.内容 4.时间 5.点击后的相应 二.如何实现通知栏 1.获取NotificationManager. 2.显示通知栏:notify(id,notificat ...

  7. Paypal学习 3 -- 接受信用卡直接付款 (DoDirectPayment)

    我们的页面可以提供用户直接填写信用卡付款的功能.具体步骤如下:      1) 在我们sandbox business账户下面添加一张信用卡,这张信用卡的信息可以是真实的,由于是在sandbox下,我 ...

  8. 为你的网站使用paypal

    原文地址:http://www.codeproject.com/aspnet/UsePayPalPaymentInASPNET.asp Introduction Those who create co ...

  9. php返回支付状态,magento paypal返回支付状态

    paypal帐户,帐户类型分为Personal(个人).Premier(高级)和Business(商业),他们的差别对于开发者 来 说主要是返回的信息,Personal的不能使用IPN和PDT等商家工 ...

最新文章

  1. Java多线程学习(二)---线程创建方式
  2. 06/05/2015
  3. react生命周期-新增与替换
  4. 嵌入式c语言为什么变量定义在前面,嵌入式C语言数据类型和变量详解
  5. 一个复杂系统的拆分改造实践
  6. 微信小程序页面跳转、逻辑层模块化
  7. 1380C. Create The Teams
  8. mysql数据库 day03
  9. 10kv电压互感器型号_电流互感器结构及原理
  10. created写法_vue.js中created方法作用
  11. windows下手动安装composer并配置环境变量
  12. 06-06 Jenkins 邮件报警机制
  13. 洛谷 1373 dp 小a和uim之大逃离 良心题解
  14. linux命令大全(持续更新)
  15. springmvc源码 - handlerAdapter是如何初始化的
  16. 局域网的分类:以太网、令牌环、FDDI、ATM、WLAN
  17. The following method did not exist:com.google.gson.GsonBuilder.setLenient()
  18. How to change exchange rate in miro manually?
  19. c51单片机音乐门铃C语言程序,基于51单片机的无线音乐门铃设计
  20. Android利用Socket与硬件通信之智能家居APP

热门文章

  1. UNIT文档对话机器人的训练(值班表排版在后面)
  2. 【托业】【金山词霸】21-42
  3. 《管理经济学》公式大全
  4. 儒家思想的核心:仁、义、礼、智、信、忠、孝、悌、节、恕、勇、让
  5. 华尔街“是”世界经济关键角色的原因
  6. linux装windows报错,安装Windows 和 Linux双系统(vmware) Centos7
  7. 微积分学 \ 线性代数 \ 概率论与数理统计
  8. 讲解SysWOW64文件夹
  9. watch 和mounted 执行顺序
  10. XB8989AF单节锂电池保护IC放电过流18A,充电过流14A,最大持续放电电流9A