`

PHP集成PayPal

    博客分类:
  • PHP
 
阅读更多

1.注册开发者账号,注册完登陆,然后新建一个Business账号和一个Personal账号,然后选择一个账号登陆,可以看到一些明细之类的东东,

 

2.几个地址

 a.return        ---就是付款完成之后返回的页面

 b.notify_url   ---付完款之后PayPal通知你的页面,这个页面会处理逻辑(包括接受IPN信息,验证, 判断是否付款完成以及你付款完成之后的后续逻辑处理)

 c.cancel_return  ----就是在跳到付款页面直接取消回到的页面

 

3.你的页面上生成一个form表单,然后把你的需要支付的信息放到表单的hidden里面,例如:

 

<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
    <input type="hidden" name="cmd" value="_xclick">
    <input type="hidden" name="business" value="business email">  <!--接受付款的账号 >
    <input type="hidden" name="item_name" value="cash">
    <input type="hidden" name="amount" value="0.5">
    <input type="hidden" name="currency_code" value="HKD">
    <input type="hidden" name="return" value="http://xxx/paypal_return.php">
    <input type="hidden" name="invoice" value="82">
    <input type="hidden" name="charset" value="utf-8">

    <input type="hidden" name="no_shipping" value="1">
    <input type="hidden" name="no_note" value="">
    <input type="hidden" name="notify_url" value="http://xxx/paypal_notify.php">
    <input type="hidden" name="rm" value="82">
    <input type="hidden" name="cancel_return"value="http://xxx/paypal_cancel.php">
    <input type="submit" value="submit">
</form>

 

4.最重要的paypal.notify.php页面

 a.接受Paypal post给你的数据,完全按照收到表单变量时的原样发送所有收到的表单变量。您还需要将一个值为“_notify-validate”的名为“cmd”变量(例如,cmd=_notify-validate)附加到 POST 字符串。

 b.然后把post过来的数据加上标签和修改的cmd请求PayPal页面

 c.PayPal将回复该 POST,并在回复的正文中包含一个单词“VERIFIED”或“INVALID”。当您收到 VERIFIED 回复时,       在实施订单之前执行若干检查:

    @确认“payment_status”为“Completed”,因为系统也会为其他结果(如“Pending”或“Failed”)发送 IPN。

    @检查“txn_id”是否未重复,以防止欺诈者重复使用旧的已完成的交易。

    @验证“receiver_email”是已在您的PayPal账户中注册的电子邮件地址,以防止将付款发送到欺诈者的账户 。

    @检查其他交易详情(如物品号和价格),以确认价格未改变完成了以上检查后,您可以使用 IPN 数据更新您的DB,并      处理购物。

    @如果收到“无效”通知,则应将其视为可疑通知,并应对其进行调查。

 

 d.最后正式部署的时候需要去掉sandbox

 

<?php
  //reading raw POST data from input stream. reading pot data from $_POST may cause serialization issues since POST data may contain arrays

  $raw_post_data = file_get_contents('php://input');
  $raw_post_array = explode('&', $raw_post_data);
  $myPost = array();
  foreach ($raw_post_array as $keyval)
  {
      $keyval = explode ('=', $keyval);
      if (count($keyval) == 2)
         $myPost[$keyval[0]] = urldecode($keyval[1]);
  }
  // read the post from PayPal system and add 'cmd'
  $req = 'cmd=_notify-validate';
  if(function_exists('get_magic_quotes_gpc'))
  {
       $get_magic_quotes_exits = true;
  } 
  foreach ($myPost as $key => $value)
  {        
       if($get_magic_quotes_exits == true && get_magic_quotes_gpc() == 1)
       { 
            $value = urlencode(stripslashes($value)); 
       }
       else
       {
            $value = urlencode($value);
       }
       $req .= "&$key=$value";
  }

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.sandbox.paypal.com/cgi-bin/webscr');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host: www.paypal.com'));
// In wamp like environment where the root authority certificate doesn't comes in the bundle, you need
// to download 'cacert.pem' from "http://curl.haxx.se/docs/caextract.html" and set the directory path 
// of the certificate as shown below.
// curl_setopt($ch, CURLOPT_CAINFO, dirname(__FILE__) . '/cacert.pem');
$res = curl_exec($ch);
curl_close($ch);

/*
file_put_contents(dirname(__FILE__) . '/payresp/rc_req.txt', print_r($req, true));
file_put_contents(dirname(__FILE__) . '/payresp/rc_resp.txt', print_r($res, true));
file_put_contents(dirname(__FILE__) . '/payresp/rc_post.txt', print_r($_POST, true));
*/

// assign posted variables to local variables
$item_name = $_POST['item_name'];
$item_number = $_POST['item_number'];
$payment_status = $_POST['payment_status'];
$payment_amount = $_POST['mc_gross'];
$payment_currency = $_POST['mc_currency'];
$txn_id = $_POST['txn_id'];
$receiver_email = $_POST['receiver_email'];
$payer_email = $_POST['payer_email'];


if (strcmp ($res, "VERIFIED") == 0) {
	// check the payment_status is Completed
	// check that txn_id has not been previously processed
	// check that receiver_email is your Primary PayPal email
	// check that payment_amount/payment_currency are correct
	// process payment
}
else if (strcmp ($res, "INVALID") == 0) {
	// log for manual investigation
}
?>
分享到:
评论

相关推荐

    paypal 代码示例,API接口, java PHP

    4. PHP集成PayPal API: 对于PHP开发者,可以使用PayPal的PHP SDK或者直接发起cURL请求。PayPal的PHP SDK提供了更方便的接口封装。以下是一个创建支付的PHP示例: ```php require __DIR__ . '/vendor/autoload....

    PHP paypal接口集成代码下载PHP

    在本文中,我们将深入探讨如何在PHP环境中集成PayPal接口,并提供有关下载的PHP代码的详细解析。PayPal是全球广泛使用的在线支付平台,为商家和消费者提供了安全、便捷的交易方式。对于开发者来说,集成PayPal接口是...

    PayPal在线支代代码

    **三、PHP集成PayPal** 在PHP中,可以使用cURL库来发送HTTP请求,或者使用PayPal的PHP SDK。例如,通过NVP接口,你需要构建一个包含所有必要参数的关联数组,如`L_PAYMENTREQUEST_0_NAME0`代表商品名称,`PAYMENT...

    paypal php支付demo

    PayPal的PHP集成主要包括以下关键步骤: 1. **配置PayPal SDK**:首先,需要安装PayPal的官方PHP SDK,可以通过Composer在项目中添加依赖。这将提供与PayPal API交互所需的所有类库。 2. **创建支付**:在用户点击...

    PHP程序集成PayPal操作步骤[借鉴].pdf

    PHP程序员可以通过集成PayPal API来轻松地在自己的网站上实现支付功能。 **PayPal IPN(Instant Payment Notification)** IPN是PayPal提供的一种交易状态通知机制。每当交易发生状态变化,比如支付完成、退款或...

    paypal支付接入php开发文档

    对于开发者来说,集成PayPal支付接口到PHP项目中是一项关键任务,本文档将详细介绍这一过程。 PayPal接口的接入涉及到的主要概念之一是IPN(Instant Payment Notification)。IPN是一种由PayPal设计的交易状态通知...

    PayPal的PHP购物车

    【PayPal的PHP购物车】是一个使用PHP编程语言实现的电子商务解决方案,专为集成PayPal支付接口而设计。这个购物车系统允许用户在网站上选择商品,并通过PayPal的支付平台进行安全的在线交易。系统的主要功能包括商品...

    PP_PHP_NVP_Samples.zip_paypal_paypal php_php paypal_php paypal I

    【标题】"PP_PHP_NVP_Samples.zip" 是一个与PayPal集成相关的代码样本压缩包,专注于PHP...通过学习和应用这些示例,开发者能够掌握在PHP项目中集成PayPal支付的基本步骤,从而为用户提供安全、便捷的在线支付体验。

    PayPal php

    集成PayPal PHP通常包括以下步骤: 1. **配置认证**:设置API凭据,包括API用户名、密码和签名(对于NVP)或客户端ID和秘密(对于REST)。 2. **创建支付**:根据业务需求,构建支付对象,指定金额、货币类型、...

    Laravel开发-paypal-ipn-laravel

    在本文中,我们将深入探讨如何在Laravel框架中集成PayPal的即时支付通知(Instant Payment Notification,IPN)服务。Laravel是一个流行的PHP框架,它提供了优雅的语法和丰富的功能,使得开发工作变得简单高效。而...

    paypal-php:用PHP编写的简单程序可集成Paypal付款网关

    "paypal-php"项目是一个专门为PHP开发人员设计的工具,它简化了与PayPal API的交互,使得在网站或应用程序中集成PayPal支付变得容易。 **PayPal API** PayPal提供了多种API接口,包括NVP(Name-Value Pair)和SOAP...

    PHP中集成PayPal标准支付的实现方法分享

    本文分享了如何在PHP网站中集成PayPal标准支付方式,PayPal是一种广泛使用的在线支付系统,它的标准支付接口可以方便网站开发者快速实现在线支付功能。 首先,开发者需要在网站的结账页面创建一个表单,该表单提交...

    PHP Paypal SDK

    PHP PayPal SDK(软件开发工具包)是为开发者设计的,用于与PayPal的支付系统进行集成的库。它允许开发者通过编写PHP代码来实现各种支付功能,如接收在线支付、处理退款、执行即时支付等。在本文中,我们将深入探讨...

    Thinkphp5 Paypal支付

    在本项目中,我们主要探讨如何使用PHP框架Thinkphp5集成PayPal支付接口,以便为用户提供安全、便捷的在线支付体验。以下将详细介绍这个过程的关键知识点。 1. **Thinkphp5框架**:Thinkphp5是基于PHP语言的一个轻量...

    paypal 官方接口文档

    【PayPal官方接口文档】是开发人员在集成PayPal支付系统时的重要参考资料,这份文档包含了所有与PayPal接口相关的详细信息和技术指南。PayPal作为全球知名的在线支付平台,提供了多种支付解决方案,使得商家能够安全...

    php_paypal.zip_paypal ipn_paypal php

    在PHP环境中集成PayPal IPN,首先需要创建一个接收IPN消息的PHP脚本。这个脚本将与PayPal的服务器进行交互,验证接收到的信息,并根据这些信息更新您的订单状态或执行其他业务逻辑。下面我们将深入探讨这个过程的...

    paypal支付中文文档,包括php,java等

    这些文档详细介绍了如何集成PayPal支付服务,包括PHP和Java等编程语言的实现方法。以下是对每个文件内容的简要概述: 1. **PayPal_WPS_Guide_CN_V2.0.pdf**: 这份文档详细阐述了Website Payments Standard (WPS) ...

Global site tag (gtag.js) - Google Analytics