我已经在我的应用程序中使用alredy启用未来的付款权限,并使用开发人员dashboard.but但不工作,请找到错误
http://developer.paypal.com/并登录
https://developer.paypal.com/developer/accountStatus在那里你可以看到你有什么允许.
http://developer.paypal.com/并登录
https://developer.paypal.com/developer/accountStatus在那里你可以看到你有什么允许.
$data = array( "intent" => "authorize","payer" => array( "payment_method" => "paypal" ),"transactions" => array( array("amount" => array( "currency" => "USD","total" => "1.88" ),"description" => "future of sauces") )); $data_string = json_encode($data); $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,"https://api.sandBox.paypal.com/v1/payments/payment"); $headers = array( 'Content-Type: application/json','PayPal-Client-Metadata-Id: d6743cbb53ea4470a53bfe458f0cb885','Authorization: Bearer A103.B7d5318JDS6NA1zGh02avjCx16oxnBPadUat5z9SlGVGEiOhoAeMuqyz0anGSICS.FAkzECypTS1IXfemHcpVa5yyrGu',); curl_setopt($ch,CURLOPT_HTTPHEADER,$headers); //curl_setopt($ch,CURLINFO_HEADER_OUT,true); curl_setopt($ch,CURLOPT_POST,CURLOPT_POSTFIELDS,$data_string); $result = curl_exec($ch); $information = curl_getinfo($ch); curl_close($ch); print_r($information); die;
放在这里
{"name":"PERMISSION_DENIED","message":"No permission for the requested operation","information_link":"https://developer.paypal.com/docs/api/#PERMISSION_DENIED","debug_id":"5b39efd4cf370"}Array ( [url] => https://api.sandBox.paypal.com/v1/payments/payment [content_type] => application/json [http_code] => 403 [header_size] => 592
因为我没有得到任何人的任何解决方案,所以我逐步挖掘我的代码,并找到解决方案.
function paypalFuturePayment($userID,$amount) { $amount=number_format($amount,2); /* paypal App truxx dev client and secret key*/ if($userID && $amount){ $userData = selectById('tbl_users','*',"id='".$userID."'"); $refresh_token = $userData['paypal_refresh_tokens']; $Metadata_id = $userData['paypal_Metadata_id']; if($refresh_token && $Metadata_id){ if ($_SERVER['SERVER_NAME'] == 'syonserver.com') { $clientId = "xxxxx"; $secret = "xxx"; $url1="https://api.sandBox.paypal.com/v1/oauth2/token"; $url2="https://api.sandBox.paypal.com/v1/payments/payment"; }else{ $account = 0; // 0 for sandBox,1 for live if ($account == 1) { //client live $clientId = "xxx"; $secret = xxx"; $url1 = "https://api.paypal.com/v1/oauth2/token"; $url2 = "https://api.paypal.com/v1/payments/payment"; } else { //client sandBox $clientId = "xxx"; $secret = "xxx"; $url1 = "https://api.sandBox.paypal.com/v1/oauth2/token"; $url2 = "https://api.sandBox.paypal.com/v1/payments/payment"; } } //print_r($refresh_token);die; $ch = curl_init(); curl_setopt($ch,$url1); curl_setopt($ch,CURLOPT_HEADER,"Content-Type: application/x-www-form-urlencoded"); curl_setopt($ch,CURLOPT_USERPWD,$clientId . ":" . $secret); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,"grant_type=refresh_token&refresh_token=" . $refresh_token); $result = curl_exec($ch); curl_close($ch); $result=json_decode($result); //11111111 for payment Authorize: For example,to first authorize the payment,use a request similar to this: $access_token = $result->access_token; $data = array( "intent" => "authorize","payer" => array( "payment_method" => "paypal" ),"transactions" => array( array("amount" => array( "currency" => "USD","total" => $amount ),"description" => "future of sauces") )); $data_string = json_encode($data); $ch1 = curl_init(); curl_setopt($ch1,$url2); $headers = array( 'Content-Type: application/json','PayPal-Client-Metadata-Id: '.$Metadata_id,'Authorization: Bearer '.$access_token,'Content-Length: ' . strlen($data_string) ); curl_setopt($ch1,$headers); curl_setopt($ch1,true); curl_setopt($ch1,1); curl_setopt($ch1,$data_string); $result1 = curl_exec($ch1); curl_close($ch1); $result1=json_decode($result1); $message = $result1->message; if($result1->state=='approved'){ $access_id= $result1->transactions[0]->related_resources[0]->authorization->id; }else{ if(empty($message)){ $message ='Authorization error,Please try again.'; } return array('response' => '','success' => '0','message'=>$message); } // print_r($result1);die; //2222222 capture the payment: $data = array("amount" => array( "currency" => "USD","total" => $amount ),"is_final_capture" => "true" ); $data_string = json_encode($data); $ch2 = curl_init(); if ($_SERVER['SERVER_NAME'] == 'syonserver.com') { curl_setopt($ch2,"https://api.sandBox.paypal.com/v1/payments/authorization/$access_id/capture"); }else { $account = 0; // 0 for sandBox,1 for live if ($account == 1) { //client live curl_setopt($ch2,"https://api.paypal.com/v1/payments/authorization/$access_id/capture"); }else{ curl_setopt($ch2,"https://api.sandBox.paypal.com/v1/payments/authorization/$access_id/capture"); } } $headers = array( 'Content-Type: application/json','Content-Length: ' . strlen($data_string) ); curl_setopt($ch2,$headers); curl_setopt($ch2,true); curl_setopt($ch2,1); curl_setopt($ch2,$data_string); $response = curl_exec($ch2); curl_close($ch2); $response_a = json_decode($response,true); $state = $response_a['state']; $message = $response_a['message']; if(!empty($response_a)){ if($state=='completed') { return array('response' => $response_a,'success' => '1','message'=>'Data received'); }else{ if(empty($message)){ $message ='Payment authorization error,Please try again.'; } return array('response' => '','message'=>$message); } } else{ return array('response' => '','success'=>'0','message'=>'Response nil'); } } else { return array('response' => '','message'=>'Authorization code not available.'); } }else{ return array('response' => '','message'=>'Unauthorize request.'); } }