[英]Using Paypal REST api and PHP cURL to post invoice (draft) constantly returns 415 Unsupported Media Type
我在他們的網站上使用paypal的創建發票樣本json
我得到一個令牌足夠好,我用帖子提交,因為錯誤不是401未經授權而是415不支持的媒體類型(現在最近500內部服務器錯誤)讓我相信我可能會得到那部分是正確的...所以我會提供一些代碼,希望有人能抓住一些我不知道的東西:
createPaypalInvoice.php
function paypalCreateDraftRequest($token,$jsondraft){
global $url;
$sUrl = "/v1/invoicing/invoices";
$accept = "Accept:application/json";
$acceptlang = "Accept-Language:en_US";
$contenttype = "Content-Type: application/json";
$contentlen = "Content-Length: " . strlen($jsondraft);
// $jsondraft is a string of json from paypal example
$authorization = "Authorization: Bearer ".$token["access_token"];
$headers = array($accept,$acceptlang,$contenttype,$contentlen,$authorization);
$fields_string = $jsondraft;
$ch = curl_init();
$options = array (CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_FAILONERROR => true,
CURLOPT_URL => $url.$sUrl,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => $fields_string,
CURLOPT_HEADER => false, // don't return headers
CURLOPT_SSL_VERIFYPEER => false, // TODO: fix certificate provider list problem later
CURLOPT_CONNECTTIMEOUT => 6, // timeout on connect
CURLOPT_TIMEOUT => 10 ); // timeout on response
curl_setopt_array ( $ch, $options );
try {
$result=curl_exec( $ch );
$log->LogDebug($result);
//$header = curl_getinfo ( $ch );
$err = curl_errno ( $ch );
$errmsg = curl_error ( $ch );
curl_close($ch);
if ($errmsg) throw new Exception($errmsg);
return $result;
} catch (Exception $e) { throw $e; }
}
paypal的示例發票:
{
"merchant_info": {
"email": "dennis@sample.com",
"first_name": "Dennis",
"last_name": "Doctor",
"business_name": "Medical Professionals, LLC",
"phone": {
"country_code": "001",
"national_number": "5032141716"
},
"address": {
"line1": "1234 Main St.",
"city": "Portland",
"state": "OR",
"postal_code": "97217",
"country_code": "US"
}
},
"billing_info": [
{
"email": "example@example.com"
}
],
"items": [
{
"name": "Sutures",
"quantity": 100,
"unit_price": {
"currency": "USD",
"value": 5
}
}
],
"note": "Medical Invoice 16 Jul, 2013 PST",
"payment_term" :{
"term_type": "NET_45"
},
"shipping_info": {
"first_name": "Sally",
"last_name": "Patient",
"business_name": "Not applicable",
"address": {
"line1": "1234 Broad St.",
"city": "Portland",
"state": "OR",
"postal_code": "97216",
"country_code": "US"
}
}
}
我發現了這個問題:
從paypal的發票文件:
注意:發票中指定的商家必須擁有信譽良好的PayPal帳戶。
顯然,不應使用示例帳戶“dennis@sample.com”。 當我使用自己的沙盒帳戶獲取商家信息時,一切都神奇地起作用了......
也許其他人可能有這個問題,現在解決方案已經發布。 也許我的示例代碼也可能有幫助......
我無法找到顯示在PayPal REST文檔中使用Accept / Accept-Language的示例。
$accept = "Accept:application/json";
$acceptlang = "Accept-Language:en_US";
我會從你的標題中刪除這些,看看這是否會改變你得到的錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.