贝宝PHP沙盒头验证?

贝宝PHP沙盒头验证?,php,paypal,paypal-sandbox,paypal-ipn,Php,Paypal,Paypal Sandbox,Paypal Ipn,我目前在贝宝退款测试中遇到了一些问题 我通过以下方式获得帐户令牌: public function __construct(){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://api.sandbox.paypal.com/v1/oauth2/token"); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_SS

我目前在贝宝退款测试中遇到了一些问题

我通过以下方式获得帐户令牌:

 public function __construct(){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://api.sandbox.paypal.com/v1/oauth2/token");
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_USERPWD, $this->clientID.":".$this->secret);
    curl_setopt($ch, CURLOPT_POSTFIELDS, "grant_type=client_credentials");

    $result = curl_exec($ch);
    $json = json_decode($result);

    $this->auth = $json->access_token;

   // echo "Auth?" . $this->auth;

 }
当我试着退款时,不管怎样,它只会返回1。事务ID是正确的,但它好像没有设置正确的标题-有人能帮我吗

 public function RefundSale($transaction_id){
     $url = self::getPath() . "/payments/sale/".$transaction_id."/refund";
     echo "URL:" . $url;
     self::rest($url);
 }

 public function rest($url,$data=""){

    $ch = curl_init();

    if ( !empty($data)): $data=json_encode($data); endif; //Array to json?

    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, true);
    if ( !empty($data)): curl_setopt($ch, CURLOPT_POSTFIELDS, $data); endif;
     curl_setopt($ch, CURLOPT_USERPWD, $this->clientID . ":" . $this->secret);
    $result = curl_exec($ch);

    var_dump($result);
 }
有几件事

必须将curl_setopt$ch、CURLOPT_RETURNTRANSFER设置为1才能检索curl响应。否则,您只会收到一条正确/错误的成功/错误消息。 修复此问题后,代码段将给出400个错误的请求http响应代码。这可以通过无条件调用curl_setopt$ch、CURLOPT_POSTFIELDS$data来纠正。即使您没有要发送的数据,也会发送一个空的有效负载。 最后一个问题是如何验证呼叫。获得身份验证令牌后,通过发送“Authentication:Bearer”头对API调用进行身份验证。