paypal接口对接注意事项 paypal状态返回的设置

    xiaoxiao2021-12-03  24

     

    在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");         }     } 分类: php 标签: paypal
    转载请注明原文地址: https://ju.6miu.com/read-680114.html

    最新回复(0)