2017-02-18 36 views
0

私はSMSプロジェクトのオンラインショッピングストアで働いていますが、その目的は、顧客より注文される注文が、チェックアウトの際に顧客が指定した番号でSMSを自動的に送信することです。HTTPS URLがPHPで動作しない

SMS会社はこのためのAPIドキュメントを提供します。最初に、セッションIDを生成する認証プロセスが必要でした。セッションIDを使用して、ユーザーにSMSを送信しました。

認証コード:

$msisdn = 'abc'; 
$password = 'xyz'; 
$session_req="https://telenorcsms.com.pk:27677/corporate_sms2/api/auth.jsp?msisdn=".$msisdn."&password=".$password; 

$xmlResponse = simplexml_load_file('https://telenorcsms.com.pk:27677/corporate_sms2/api/auth.jsp?msisdn=abc&password=xyz'); 
    $sessionID = $xmlResponse->corpsms->data;  
    var_dump($sessionID); 
    echo "Session ID: " . $sessionID; 

さて、問題は、私はセッションIDを取得することができませんです。私がvar_dump($sessionID);を使用するとき、NULLが出力され、echo "Session ID: " . $sessionID;を使用して画面に表示しようとすると何も表示されません。私がheader('Location:'.$session_req);コードを以下より使用すると、上記のURLの応答があり、セッションIDが正常に表示されます。

成功応答:

<?xml version="1.0" encoding="UTF-8" ?> 
<corpsms> 
    <command>Auth_request</command> 
    <data>Session ID</data> 
    <response>OK</response> 
</corpsms> 

セッションIDは、XML構造内に格納され、その中に別のURLが、私のファイルは別のURLです。 (http://example.com/neworder.php)。 誰も私に、セッションIDをPHPの変数に格納して、それをさらに使ってSMSを送信する方法を教えてもらえますか? 重要な点は、セッションIDが非アクティブの30分後に失効することです。事前に

https://telenorcsms.com.pk:27677/corporate_sms2/api/sendsms.jsp?session_id=xxxx&to=923xxxxxxxxx&text=xxxx&mask=xxxx 

感謝: 以下はセッションIDを使用してSMSを送信するためのURLです。

MUNEEB

+0

カールを試しましたか? – tousif

+0

はい、解決策が見つからないのは目的がセッションIDの値を取得するためです。 –

+0

$ ch = curl_init(); \t \t curl_setopt($ ch、CURLOPT_URL、$ session_req); \t \t curl_setopt($ ch、CURLOPT_RETURNTRANSFER、true); \t \t // SSL証明書の場合 \t \t curl_setopt($ ch、CURLOPT_SSL_VERIFYPEER、false); \t \t $ response = curl_exec($ ch); \t \t $ tokens = explode( "\ n"、trim($ response)); \t \t curl_close($ ch); \t \t var_dump($ response); –

答えて

0
  • ストアPHP変数にXMLレスポンス(のは$ xmlResponseそれを呼びましょう)
  • 簡単にあなたがfile_get_contents()にそのパラメータに関連付けられているAPIのURLを提出することにより、XMLレスポンスを得ることができます機能。次いで、応答がSimpleXMLElementとして使用することができること機能simplexml_load_string()

    $xmlResponseString = file_get_contents($apiUrl) 
    $xmlResponse = simplexml_load_string($xmlResponseString); 
    
  • を使用してXMLオブジェクトに変換します。

  • セッションIDは、この方法でアクセスする必要があります。

    $sessionID = $xmlResponse->corpsms->data; 
    
+0

回答ありがとう!しかし、問題はどうすればPHP $ session_req = "https://telenorcsms.com.pk:27677/corporate_sms2/api/auth.jsp?msisdn="でURLを実行できますか?$ msisdn。 "&password ="。$ password ; –

+0

simplexml_load_file()はurlを実行し、SimpleXMLElementとしてXMLレスポンスを返します。 – Hatem

+0

こんにちは、私はそれを試しましたが、セッションIDは取得しません:$ msisdn = 'abc'; \t \t $ password = 'xyz'; \t \t $ xmlResponse = simplexml_load_file( 'https://telenorcsms.com.pk:27677/corporate_sms2/api/auth.jsp?msisdn=」$ MSISDN。。 "&パスワード=" $パスワード。'); \t \t $セッションID = $ xmlResponse-> corpsms->データ; \t \t \t \tエコー「セッションID:」。$セッションID; –

0

私はHostgatorのサーバでスクリプトを実行するときに、同じ問題に直面したが、そのちょうどここに私はlocalhostサーバーで正常に動作しています。 WAMPまたはXAMPサーバーでOPENSSL拡張を有効にするだけです。

+0

解決済み:サーバーをホストする際に以下の手順を実行してください 1)OPENSSLを有効にしてください 2)ホスティングプロバイダに、外部からの要求に対してポート27677を開くように依頼してください。 –

関連する問題