2016-11-28 11 views
1

これをデバッグしようとしています。私はアイデアが不足しています。私は次の簡単なPHPコードを持っています。Webサービスでエラーが返されました

$url = "https://webservices.test.optimalpayments.com/creditcardWS/CreditCardServlet/v1";   
       $ch = curl_init(); 
       curl_setopt($ch, CURLOPT_POST,1); 
       curl_setopt($ch, CURLOPT_POSTFIELDS,"&txnMode=".$txnMode."&txnRequest=".urlencode($ch)); 
       curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 
       curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
       $result = curl_exec($ch); 

残念ながら、私はこれを実行しようとするたびに私は、XMLリクエストに問題があることを得続けます。ここにリクエストがあります。

$txnRequest = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"; 
       $txnRequest .= "<ccAuthRequestV1 xmlns=\"http://www.optimalpayments.com/creditcard/xmlschema/v1\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.optimalpayments.com/creditcard/xmlschema/v1\">\n"; 
       $txnRequest .= "<merchantAccount>\n"; 
       $txnRequest .= "<accountNum>".$account."</accountNum>\n"; 
       $txnRequest .= "<storeID>".$merchantId."</storeID>\n"; 
       $txnRequest .= "<storePwd>".$merchantPwd."</storePwd>\n"; 
       $txnRequest .= "</merchantAccount>\n"; 
       $txnRequest .= "<merchantRefNum>".$merchantRefNum."</merchantRefNum>\n"; 
       $txnRequest .= "<amount>".$amount."</amount>\n"; 
       $txnRequest .= "<card>\n"; 
       $txnRequest .= "<cardNum>".$cardNum."</cardNum>\n"; 
       $txnRequest .= "<cardExpiry>\n<month>".$eMonth."</month>\n<year>".$eYear."</year>\n</cardExpiry>\n"; 
       $txnRequest .= "<cardType>".$cardType."</cardType>\n"; 
       $txnRequest .= "<cvdIndicator>".$cvdIndicator."</cvdIndicator>\n"; 
       $txnRequest .= "<cvd>".$cvd."</cvd>\n"; 
       $txnRequest .= "</card>\n"; 
       $txnRequest .= "<billingDetails>\n"; 
       $txnRequest .= "<cardPayMethod>WEB</cardPayMethod>\n"; 
       $txnRequest .= "<firstName>".$firstName."</firstName>\n"; 
       $txnRequest .= "<lastName>".$lastName."</lastName>\n"; 
       $txnRequest .= "<street>".$bStreet."</street>\n"; 
       $txnRequest .= "<city>".$bCity."</city>\n"; 
       $txnRequest .= "<state>".$bState."</state>\n"; 
       $txnRequest .= "<country>".$bCountry."</country>\n"; 
       $txnRequest .= "<zip>".$bZip."</zip>\n"; 
       $txnRequest .= "<phone>".$bPhone."</phone>\n"; 
       $txnRequest .= "<email>".$bEmail."</email>\n"; 
       $txnRequest .= "</billingDetails>\n"; 
       $txnRequest .= "</ccAuthRequestV1>"; 

誰もが適切にエンコードされていないものになど、いくつかの洞察を提供することはできますか?

+0

'$ txnRequest'をエコーアウトして、最終データを調べます。私はそれを投稿する前にXMLをエンコードする必要があるかもしれないと思います。 – aynber

+1

'.urlencode($ ch)'そこには何が起こっていますか? – Steve

答えて

1

@aynberは正しいです。リクエストの正しい部分をエンコードしていないようです。

私はこれを行う正しい方法がこのようになると信じています。

$url = "https://webservices.test.optimalpayments.com/creditcardWS/CreditCardServlet/v1";   
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_POST,1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS,"&txnMode=".$txnMode."&txnRequest=".urlencode($txnRequest)); 
    curl_setopt($ch, CURLOPT_URL,$url); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 

    $result = curl_exec($ch); 

これが役立つことを願っています。

-2

@Steveが正しいトラックにあると思います。おそらくあなたはurlencode($ txnRequest)を意味していたかもしれません。

また、あなたのXMLを検証してから送信してください。

+1

これはコメントであり、回答ではありません –

関連する問題