追加:新的设定画面

在paypal对接过程中,会存在return_url和notify两种

分别用pdt和ipn实现

但是对于paypal,大家请注意,真实环境和沙盒测试环境的区别

你可以到www.paypal.com注册一个账号,然后在developer.paypal.com下面登陆,会发现生成了一个测试的商家账号和一个测试的买家账号,这两个账号是准备着方便你进行对接调试的。

但是大家不要忘了,要想测试通过,还得在www.sandbox.paypal.com用商家测试账号登陆(记住一定要是商家测试账号,不是买家测试账号),在

 /**
     * 通过PDT验证付款后paypal返回的数据
     * @param type $tx 交易流水号,通过Get获取
     * @param type $pdt_identity_token 商家唯一身份标记
     * @return 订单明细数据
     * @throws \Exception
     */
    public function verifyReturn($tx, $pdt_identity_token) {

if(empty($tx))
        {
            throw new \Exception("Unexpected response from PayPal or Others.");
        }
        
        $encoded_data = http_build_query(array
                (
                        'cmd' => '_notify-synch',
                        'tx' => strtoupper($tx),
                        'at' => $pdt_identity_token,
                ));

//         $encoded_data = 'cmd=_notify-synch&tx=$tx&at=$pdt_identity_token';      
        
        if ($this->use_curl) 
        {
            $this->curlPost($encoded_data); 
        }
        else 
        {
            $this->fsockPost($encoded_data);
        }
        
        $status = strpos($this->response_status, '200');       
        
        // check responses, if first 7 letters are SUCCESS then we're good
        if($this->response_status == 200 && strpos($this->response, "SUCCESS") !== false)
        {
                // get rid of success
                $curlResponse = substr($this->response, 7);
                // decode
                $curlResponse = urldecode($curlResponse);
                // make associative array
                preg_match_all('/^([^=\r\n]++)=(.*+)/m', $curlResponse, $m, PREG_PATTERN_ORDER);
                
                $curlResponse = array_combine($m[1], $m[2]);
                // keysort to keep in order
                ksort($curlResponse);
                
                // end
                return $curlResponse;
        }
        else
        {
                throw new \Exception("Invalid response status: ".$this->response_status);
        }                
    }

九域程序胡静 2015/12/3 12:13:28

protected function curlPost($encoded_data) {

if ($this->use_ssl) {
            $uri = 'https://'.$this->getPaypalHost().'/cgi-bin/webscr';
            $this->post_uri = $uri;
        } else {
            $uri = 'http://'.$this->getPaypalHost().'/cgi-bin/webscr';
            $this->post_uri = $uri;
        }
        
        $ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $uri);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $encoded_data);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
//         curl_setopt($ch, CURLOPT_CAINFO, 
//         dirname(__FILE__)."/cert/cert_key.pem");
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);

curl_setopt($ch, CURLOPT_HTTPHEADER, array("Host: ".$this->getPaypalHost()));
        
        
//         curl_setopt($ch, CURLOPT_FOLLOWLOCATION, $this->follow_location);
        curl_setopt($ch, CURLOPT_TIMEOUT, $this->timeout);
        
//         curl_setopt($ch, CURLOPT_HEADER, true);
        
//         if ($this->force_tls_v1) {
//             curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1);
//         }

$this->response = curl_exec($ch);
        
        $this->response_status = strval(curl_getinfo($ch, CURLINFO_HTTP_CODE));
        
        if ($this->response === false || $this->response_status == '0') {
            $errno = curl_errno($ch);
            $errstr = curl_error($ch);
            
            throw new \Exception("cURL error: [$errno] $errstr");
        }
    }

paypal接口对接注意事项的更多相关文章

  1. Web Api 与 Andriod 接口对接开发经验

    最近一直急着在负责弄Asp.Net Web Api 与 Andriod 接口开发的对接工作! 刚听说要用Asp.Net Web Api去跟 Andriod 那端做接口对接工作,自己也是第一次接触Web ...

  2. EMS电子面单接口对接使用-免费版

    快递鸟电子面单接口,可一次对接15家快递公司, 无需和每一家快递公司做对接.支持快递有四通一达.顺丰.EMS.宅急送.德邦.优速等15家快递公司,对顺丰有电子面单服务需求的可以选择顺丰自有的电子面单或 ...

  3. Asp.Net Web Api 与 Andriod 接口对接开发经验,给小伙伴分享一下!

    最近一直急着在负责弄Asp.Net Web Api 与 Andriod 接口开发的对接工作! 刚听说要用Asp.Net Web Api去跟 Andriod 那端做接口对接工作,自己也是第一次接触Web ...

  4. Asp.Net Web Api 与 Andriod 接口对接开发

    Asp.Net Web Api 与 Andriod 接口对接开发经验,给小伙伴分享一下!   最近一直急着在负责弄Asp.Net Web Api 与 Andriod 接口开发的对接工作! 刚听说要用A ...

  5. 快递鸟顺丰物流api接口对接多种方法整理

    目前很多自营电商平台.ERP系统.仓储系统.快递柜企业,对物流模块数据需求还是比较旺盛的.之前有介绍过简单的接口对接方法,这次给大家整理介绍两种快递数据的获取方法. 接口秘钥可以向顺丰公司申请,或者一 ...

  6. java接口对接——别人调用我们接口获取数据

    java接口对接——别人调用我们接口获取数据,我们需要在我们系统中开发几个接口,给对方接口规范文档,包括访问我们的接口地址,以及入参名称和格式,还有我们的返回的状态的情况, 接口代码: package ...

  7. 记录用友T+接口对接的心酸历程

    前言:公司的业务主要是对接财务系统做单据传输或者凭证处理的,难免少不了和各大财务软件做数据对接,其中当然是必须通过接口来传递数据了.于是乎,用友T+的版本来了,对接的工作自然是我来做,可没想到就是这样 ...

  8. .Net与其他公司接口对接心得

    第一次搞这玩意,心里有点紧张,万事开头难,第一次搞过之后,以后就容易了,所以将这次经历记录下来. 这里我们暂且把对接的公司叫A吧,A公司会提供一个接口对接说明,下面是A公司提供的接口说明 请求内容说明 ...

  9. 关于Webservice接口对接相关总结

    Webservice接口对接 因为近期处理了很多关于Webservice的接口对接,所以这篇文章是对近期自己的学习做一个简单的总结. 一: 对于接口对接,建议首先需要了解一下WSDL文件,以及入参的S ...

随机推荐

  1. css3控制内容的可选择性

    <!doctype html><html> <head> <meta charset="UTF-8"> <meta name= ...

  2. linux远程连接mysql数据库

    在linux系统中,远程连接mysql数据库时不仅需要开启ip访问,还需要将防火墙中添加相应规则 在wdlinux中的[安全管理]菜单下选择[防火墙[iptables]]选项,增加端口为3306的规则 ...

  3. HDU 2291

    http://acm.hdu.edu.cn/showproblem.php?pid=2291 读题读的烦死了,今天果真不适合做题 题意:给两个n*n的矩阵,第一个代表一个人战胜一个人可以得到的经验值, ...

  4. Magento给新产品页面添加分页

    本文介绍如何让magento创建一个带分页功能的新到产品页面,方便我们在首页或者其它CMS Page调用和展示新到产品. 在Magento我们经常有的做法是建立一个可以调用新产品的block,然后通过 ...

  5. Qt4升级到Qt5

    QtWidgets作为一个独立的模块 例如编译时错误 error: QMainWindow: No such file or directory error: QToolButton: No such ...

  6. HttpServlet详解

    http://www.cnblogs.com/panjun-Donet/archive/2010/02/22/1671290.html Servlet的框架是由两个Java包组成:javax.serv ...

  7. 转载blog_Linux下Tomcat日志定期清理 及 logrotate 配置

    服务器上的tomcat的catalina.out文件越来越大,查看起来很不方便,以前每次都是想起来的时候手工清理一下(cat /dev/null > catalina.out),后来发现了log ...

  8. 论文学习 - 《Hadoop平台下的海量数据存储技术研究》

    摘要 研究背景: 1. 互联网的图片数据急剧膨胀 2. Hadoop平台下的Hdfs分布式文件系统能够很好的处理海量数据 研究内容: 1. Hadoop平台工作原理 2. Hadoop平台下图片存储系 ...

  9. 关于Highcharts图表组件动态修改属性的方法(API)总结之Series

    Highcharts图表组件内的Series很重要,如果说Categries是其大脑,那么Series就是其心脏.这两者才是Highcharts图表组件的重中之重啊.接下来就为大家介绍关于设置Seri ...

  10. Container With Most Water

    Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai).  ...