2017-08-21 15 views
0

私はWebサービスからデータを受け取るPHP関数を持っています。私は私のコードは、何らかの理由でこのフックにデータを読み込む

public function webhook() 
    { 
    $post_content = file_get_contents("php://input"); 

    $webhook = json_decode($post_content); 
    $amount = $webhook["amount"]; 
    $telephone = $webhook["sender_phone"]; 
    $code = $webhook["transaction_reference"]; 
    $date_updated = time(); 
    $id = rand(3,1000); 
    $status = 'unseen'; 

    $data = array(
    'id' => $id, 
    'amount' => $amount, 
    'telephone' => $telephone, 
    'code' => $code, 
    'date_updated' => $date_updated, 
    'status' => $status 
    ); 

    $this->db->insert('dbo.mpesa', $data); 
    } 

のように見えるこの

service_name=M-PESA&business_number=896747&transaction_reference=LHL8XS8N1K&internal_transaction_id=7874122&transaction_timestamp=2017-08-21T18%3A42%3A17Z&transaction_type=buygoods&account_number=N%2FA&sender_phone=%2B254720069005&first_name=RON&middle_name=&last_name=AVERY&amount=2.0&currency=Ksh&signature=Z5RI5VtwyI9T2xHgI2GVW8LmnIw%3D&username=very%40gmail.com&password=droid2090 

のように見える、私はできないですデータは、私のフックに投稿

私のデータ受信機として動作する機能を設定していますデータベースにnullを挿入すると、Webサービスがフックに達するのを見ることができますが、下のコードでデータを取得することができます。

データが間違って掲載されていますか?

答えて

0

JSONはあなたのwebserviceに投稿されているものではありません...したがって、json_decodeはnullを返します。

代わりにparse_str()を使用する可能性が最も高いです。

無効parse_str(文字列$ encoded_string [、配列& $結果])

解析し、クエリ文字列はURL を経由して渡され、現在のスコープで変数を設定(または配列にしているかのようにencoded_string結果が の場合)。配列としてご$webhook変数にデータを入れます2番目のパラメータの利用で

$post_content = file_get_contents("php://input"); 

parse_str($post_content, $webhook); 

-

追記:

あなたはしません'id' => $idを設定します。これはランダムに破られ、3,1000のIDプールが取得されると(これは自動インクリメントIDと推定されます)。

関連する問題