2017-06-07 1 views
0

私のプロジェクトではpaypal支払いを使用する必要があります。これは私が公式のペイパルのページから得たものです。 https://developer.paypal.com/docs/api/payments.payouts-batch/このデータからカールリクエストを作成するには

curl -v -X POST https://api.sandbox.paypal.com/v1/payments/payouts \ 
-H "Content-Type:application/json" \ 
-H "Authorization: Bearer Access-Token" \ 
-d '{ 
    "sender_batch_header": { 
    "sender_batch_id": "2014021801", 
    "email_subject": "You have a payout!" 
    }, 
    "items": [ 
    { 
    "recipient_type": "EMAIL", 
    "amount": { 
    "value": "9.87", 
    "currency": "USD" 
    }, 
    "note": "Thanks for your patronage!", 
    "sender_item_id": "201403140001", 
    "receiver": "[email protected]" 
    }, 
    { 
    "recipient_type": "PHONE", 
    "amount": { 
    "value": "112.34", 
    "currency": "EUR" 
    }, 
    "note": "Thanks for your support!", 
    "sender_item_id": "201403140002", 
    "receiver": "91-734-234-1234" 
    }, 
    { 
    "recipient_type": "PHONE", 
    "amount": { 
    "value": "5.32", 
    "currency": "USD" 
    }, 
    "note": "Thanks for your patronage!", 
    "sender_item_id": "201403140003", 
    "receiver": "408-234-1234" 
    }, 
    { 
    "recipient_type": "PHONE", 
    "amount": { 
    "value": "5.32", 
    "currency": "USD" 
    }, 
    "note": "Thanks for your patronage!", 
    "sender_item_id": "201403140004", 
    "receiver": "408-234-1234" 
    } 
    ] 
}' 

これからの私は、PHPでこれを作ることができました。 $data変数iが作ったもので、私は実際にここに-dされるかを理解することはできません

$ch = curl_init(); 
     $header_object = (object) array('sender_batch_header'=>(object) array('sender_batch_id'=>"2014021801",'email_subject'=>"you got that")); 
     $data_array = array('items'=>array(
    "recipient_type"=>"EMAIL",'amount'=>array('value'=>'9.87','CAD'),'note'=>'get your money',"sender_item_id"=>"232211",'receiver'=>"[email protected]")); 
     $data = array($header_object,$data_array); 
     // print_r($object); 
     // die(); 
     $c_header = ['Content-Type'=>'application/json"', 
     'Authorization'=>'Bearer access_token_string_was_here']; 
     // set URL and other appropriate options 
     curl_setopt($ch, CURLOPT_URL, "https://api.sandbox.paypal.com/v1/payments/payouts"); 
     curl_setopt($ch, CURLOPT_HEADER, 0); 
     curl_setopt($ch, CURLOPT_POST, 1); 
     curl_setopt($ch, CURLOPT_HTTPHEADER,$c_header); 
     // curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
     curl_setopt($ch, CURLOPT_POSTQUOTE, $data); 

     // grab URL and pass it to the browser 
     $data_2 = curl_exec($ch); 

     // close cURL resource, and free up system resources 
     curl_close($ch); 

は、私が理解できるものをそう意味、または私はそれだと思います。クラスstdクラスのオブジェクトを文字列に変換できないというエラーが表示されます。配列から文字列への変換 誰かが実際に何が間違っているのか、代わりに何をすべきか教えてくれますか?

+0

STDクラスはあなたがこの上のエラーを取得しているgetting.When、問題は、だから私はただデータを符号化するJSONに持って応答 – lalithkumar

答えて

1

-ddataを意味し、あなたがjson_encodeを使用してJSONにデータをエンコードし、CURLOPT_POSTFIELDSオプションに

$data = ['name' => 'Alice', 'age' => '25']; 
$dataStr = json_encode($data); 

$ch = curl_init('http://example.com'); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $dataStr); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_HTTPHEADER, [ 
    'Content-Type: application/json', 
    'Content-Length: ' . strlen($dataStr) 
]); 

$result = curl_exec($ch); 

をそれを置く必要がありますhttps://curl.haxx.se/docs/manpage.html#-d

を参照してください、あなたのデータをエンコードしているとUPDATE

、ちょうど置きますそのような配列に:

$data = [ 
    'sender_batch_header' => [ 
     'sender_batch_id' => '2014021801', 
     'email_subject' => 'You have a payout!', 
    ], 
    'items' => [ 
     [ 
      'recipient_type' => 'email', 
      // ... 
     ], 
     // ... 
    ], 
]; 

アップデート2

GuzzleのようないくつかのHTTPクライアントを使用することを検討してください。 HTTPリクエストを作成するためのきれいでシンプルなインターフェースを提供します。あなたの場合の例:

$client = new GuzzleHttp\Client(); 

$data = [ 
    'sender_batch_header' => [ 
     'sender_batch_id' => '2014021801', 
     'email_subject' => 'You have a payout!', 
    ], 
    'items' => [ 
     [ 
      'recipient_type' => 'email', 
      // ... 
     ], 
     // ... 
    ], 
]; 

$res = $client->request('POST', 'https://api.sandbox.paypal.com/v1/payments/payouts', [ 
    'headers' => [ 
     'Authorization' => 'Bearer Access-Token', 
    ], 
    'json' => $data, 
]); 

echo $res->getStatusCode(); 
// "200" 
echo $res->getHeader('content-type'); 
// 'application/json; charset=utf8' 
echo $res->getBody(); 
// {"batch_header":{"sender_batch_header"... 
+0

を扱うだろうしていること応答です。私の$データが正確にそれと同じであることを確認できますか? – prabhjot

+0

$ data =(オブジェクト)[ 'sender_batch_header' => [ 'sender_batch_id' => '2014021801'、 'email_subject' => 'ペイアウト!」、 ]、 'アイテム' => [ (オブジェクト)[ 'recipient_type' => 'メール'、// ... ]、// ... ] 、 ] ; – prabhjot

+0

これは私がそこで見ることができるものに応じたフォーマットです。まだ何かが欠けています。応答がありません – prabhjot

関連する問題