我可能有个奇怪的问题:
我用的是在网上任何地方都能找到的标准Paypal PDT请求代码
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, env('PAYPAL_HOST_URL'));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
// curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
// curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
// curl_setopt($ch, CURLOPT_HTTPHEADER, array("Host: $pp_hostname"));
$res = curl_exec($ch);
curl_close($ch);
if(!$res){
//HTTP ERROR
} else {
// parse the data
$lines = explode("\n", $res);
$keyarray = array();
if (strcmp ($lines[0], "SUCCESS") == 0) {
for ($i=1; $i<count($lines);$i++) {
list($key,$val) = explode("=", $lines[$i]);
$keyarray[urldecode($key)] = urldecode($val);
}
除了解析之外,一切都可以正常工作:
响应似乎返回一个带有空格的字符串,而不是换行符"\n“
SUCCESS mc_gross=23.50 protection_eligibility=Eligible address_status=confirmed payer_id=S9H3YCCR9VKX2 tax=3.50 address_street=1+Maire-Victorin payment_date=17%3A07%3A00+Aug+14%2C+2015+PDT payment_status=Completed charset=windows-1252 address_zip=M5A+1E1 first_name=John mc_fee=0.98 address_country_code=CA address_name=John+Snow custom=2%2Csingle payer_status=verified business=John+Snow%40gmail.com address_country=Canada address_city=Toronto quantity=1 payer_email=John+Snow%40hotmail.com txn_id=7KE02601B8442143K payment_type=instant last_name=Dubey address_state=Ontario receiver_email=John+Snow%40gmail.com payment_fee= receiver_id=H3JF3H2DJ7EKG txn_type=web_accept item_name=Est+soluta+consequatur+qui+et+sint+quisquam. mc_currency=CAD item_number= residence_country=CA handling_amount=0.00 transaction_subject=2%2Csingle payment_gross= shipping=0.00
我尝试将解析逻辑更改为:
$lines = explode(" ", $res);
在这种情况下,我得到一个空数组:(
Array()
发布于 2018-11-22 11:05:00
我也有同样的问题,但在我的情况下,以任何顺序进行\n \r或两者的爆炸都不起作用。所以我让PHP用nl2br自动做这件事。然后我在br上爆炸了。
$response=nl2br($response);
$response=explode('<br />',$response);
https://stackoverflow.com/questions/32020293
复制相似问题