支付寶官方給廣大開發朋友們,留了一個下載賬單的API接口,供大家下載指定日期的賬單數據。先來看下這個頁面:
$aop = new AopClient (); $aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do'; $aop->appId = 'your app_id'; $aop->rsaPrivateKey = '請填寫開發者私鑰去頭去尾去回車,一行字符串'; $aop->alipayrsaPublicKey='請填寫支付寶公鑰,一行字符串'; $aop->apiVersion = '1.0'; $aop->signType = 'RSA2'; $aop->postCharset='UTF-8'; $aop->format='json'; $request = new AlipayDataDataserviceBillDownloadurlQueryRequest ();
$bizcontent = json_encode(['bill_type'=>'trade','bill_date'=>'2019-03-05']);
$request->setBizContent($bizcontent);
$result = $aop->execute ( $request); $responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response"; $resultCode = $result->$responseNode->code; if(!empty($resultCode)&&$resultCode == 10000){ echo "成功"; } else { echo "失敗"; }
返回結果如下:(請求正常的情況下)
{ "alipay_data_dataservice_bill_downloadurl_query_response": { "code": "10000", "msg": "Success", "bill_download_url": "http://dwbillcenter.alipay.com/downloadBillFile.resource?bizType=X&userId=X&fileType=X&bizDates=X&downloadFileName=X&fileId=X" }, "sign": "ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE" }
理論上,只要把billDownloadUrl的值拿到跳轉就可以下載。就算完成了賬單下載接口的一次請求。
可是,對於很多人(包括我)來說,似乎沒那么簡單。請求接口后,跳轉頁面顯示ERROR。打印數據返回code,確實是10000(成功)啊!在官方社區查了半天,終於找到了原因:
由於url解析出錯,把其中的×解析為x。這樣子,導致了鏈接請求失效,非常高興的用php 的字符串替換函數將x替換為×后,再次請求,還是ERROR!!!
驚訝的發現,根本沒有替換成功,不管復制url中的x還是手打,怎么都是替換不掉。崩潰啊,哪位大神有辦法,希望告知下!不勝感激!!!