[need] modul client xml rpc h2h untuk s/w pulsa (open source)

Discussion in 'Programming & Reverse Engineering' started by angga74, Jan 16, 2010.

  1. angga74

    angga74 New Member

    Messages:
    5
    Likes Received:
    0
    Trophy Points:
    0
    Saya lagi butuh contoh cource code untuk koneksi xml rpc sesuai spesifikasi yang diberikan supplier h2h.
    Bahasa yang digunakan kalo bisa php. bagi yang punya source dengan bahasa lain juga dishare aja disini, siapa tahu bisa dikonversikan ke php.

    berikut contoh speknya :
    Code:
    [COLOR=#000000][FONT=Verdana]<?[/FONT][/COLOR][COLOR=#000000][FONT=Verdana]xml version="1.0" [/FONT][/COLOR][COLOR=#000000][FONT=Verdana]?>[/FONT][/COLOR]
      <evoucher>
         <command>TOPUP</command>
         <product>PRODUCTID</product>
         <userid>USERID</userid>
         <time>HH24MISS</time>
         <msisdn>MSISDN</msisdn>
         <partner_trxid>TRXID</partner_trxid>
         <signature>SIGN</signature>
      </evoucher>
       
      [B]Alamat Server:[/B]
      Host    :  [B]XXX[/B][B].XXX.XXX.XXX[/B]
      Port     : 9900
      Path     : / atau /h2h_server/
       
      Penjelasan:
      
    [LIST]
    [*]PRODUCTID:      kode produk ePulsa, misalnya S20 untuk Simpati 20rb, M10 untuk Mentari      10rb, dsb.
    [*]USERID:      userid yang digunakan untuk proses topup (akan diberikan oleh ePulsa)
    [*]HH24MISS:      waktu transaksi dalam jam, menit, detik. Contoh: 191001
    [*]MSISDN:      nomor yang akan di topup
    [*]TRXID:      nomor referensi transaksi Anda
    [*]SIGN:      signature sesuai dengan perhitungan di bawah
    [/LIST]
       
      Contoh Signature:
      Time = 191001
      Msisdn = 0812345678
      Password = abcdef
      a = 1910015678
      b = 8765abcdef
      SIGN = base64encoded(a XOR b) [FONT=Wingdings]à[/FONT] CQ4HBVFTVlJSXg==
       
      Perhitungan Signature:
      a= <time> + 4 digit terakhir <msisdn>
      b= 4 digit terakhir <msisdn> dibalik + password [B]6[/B] digit (password akan diberikan oleh TP)
      <signature> = a XOR b lalu di base64encoded
    
    [B]Contoh Acknowledge dari server:[/B]
      [COLOR=windowtext][FONT=Verdana]<?[/FONT][/COLOR][COLOR=windowtext][FONT=Verdana]xml version="1.0" [/FONT][/COLOR][COLOR=windowtext][FONT=Verdana]?>[/FONT][/COLOR][FONT=Verdana][/FONT]
      <evoucher>
         <result>0</result>
         <msg>ePulsa-Berhasil. Pengisisian pulsa berhasil. No transaksi 10001. dst </msg>
         <trxid>10001</trxid>
         <partner_trxid>12345</partner_trxid>
      </evoucher>
       
      
    [LIST]
    [*]<resut>      = hasil transaksi. Result=0 [FONT=Wingdings]à[/FONT] Transaksi BERHASIL.      Result selain 0 [FONT=Wingdings]à[/FONT] Transaksi GAGAL
    [*]<msg>      = pesan dari ePulsa mengenai transaksi tersebut
    [*]<trxid>      = nomor transaksi ePulsa
    [*]<partner_trxid>      = nomor referensi transaksi Anda
    [/LIST]
    
    
    saya sudah coba ke salah satu server h2h dengan XML-RPC for PHP tetapi masih belum berhasil.

    mohon bantuannya ya..:peace::peace::peace:
     
  2. angga74

    angga74 New Member

    Messages:
    5
    Likes Received:
    0
    Trophy Points:
    0
    [share] modul client xml rpc h2h untuk s/w pulsa (open source)

    berikut ini contoh source php saya yang masih salah:
    Code:
    <?php
    
    // get these file from http://phpxmlrpc.sourceforge.net/
    require_once("xmlrpc.inc");
    
    $result = topup("useridhere", "passwdhere", "0813XXXXXXXX", "S20", "tes1234");
    if(!empty($result)){
    $strRslt = $result[1]['value'];
    $strMSG = $result[3]['value'];
    $strTRXID = $result[5]['value'];
    $strPART_TRX = $result[7]['value'];
    
    echo "<br>result:".$strRslt.", MSG: ".$strMSG
        .", TRXID: ".$strTRXID.", PARTNER_TRX: ".$strPART_TRX;
    }else echo "array empty";
    
    
    function topup ($username, $passwd, $msisdn, $product, $referencecode) {
    
        $url = "http://116.68.166.122:9900/h2h_server/";
        // array to store results
        $retval = array();
    
        $c=new xmlrpc_client($url);
        $c->setSSLVerifyHost(0);
        $c->setSSLVerifyPeer(0);
        $c->setDebug(1);
    
        $timestr = date("His");
        $last4 = substr($msisdn, (4*-1));
        
        $varA = $timestr.$last4;
        $varB = strrev($last4).$passwd;
        echo "varA:".$varA.", varB:".$varB."<br>";
        
        $signature = XOREncrypt($varA,$varB);
        echo "sign: ".$signature;
    
        // ok, get ready for real work
        
        $f = "<evoucher>"
            ."<command>topup</command>"
            ."<product>".$product."</product>"
            ."<userid>".$username."</userid>"
            ."<time>".$timestr."</time>"
            ."<msisdn>".$msisdn."</msisdn>\n"
            ."<signature>".$signature."</signature>"
            ."<partner_trxid>".$referencecode."</partner_trxid>"
            ."</evoucher>";
        $retval = array();
    
        $c->return_type = 'xml';
        echo "<pre>";
        print_r($f);
        echo "</pre>";
        
        $r=&$c->send($f);
        $p = xml_parser_create();
        xml_parse_into_struct($p, $r->value(), $retval);
        xml_parser_free($p);
    
    
        if ($r->faultCode()) {
            $retval = array();
            echo "fault found";
        }
    
        return $retval;
    }
    
    /**
     * XOR encrypts a given string with a given key phrase.
     *
     * @param     string    $InputString    Input string
     * @param     string    $KeyPhrase      Key phrase
     * @return    string    Encrypted string    
     */    
    function XOREncryption($InputString, $KeyPhrase){
     
        $KeyPhraseLength = strlen($KeyPhrase);
     
        // Loop trough input string
        for ($i = 0; $i < strlen($InputString); $i++){
     
            // Get key phrase character position
            $rPos = $i % $KeyPhraseLength;
     
            // Magic happens here:
            $r = ord($InputString[$i]) ^ ord($KeyPhrase[$rPos]);
     
            // Replace characters
            $InputString[$i] = chr($r);
        }
     
        return $InputString;
    }
     
    // Helper functions, using base64 to
    // create readable encrypted texts:
     
    function XOREncrypt($InputString, $KeyPhrase){
        $InputString = XOREncryption($InputString, $KeyPhrase);
        $InputString = base64_encode($InputString);
        return $InputString;
    }
     
    function XORDecrypt($InputString, $KeyPhrase){
        $InputString = base64_decode($InputString);
        $InputString = XOREncryption($InputString, $KeyPhrase);
        return $InputString;
    }
    
    ?>
    
    
    ditunggu pencerahannya... :tea:

    ps: respon dari server sudah dapat dicapture, namun pesannya selalu "Salah Password/Key" .
    padahal saya sudah register di supplier h2h yang bersangkutan (setidaknya belum nyimpen deposit disana, hehe:peace:).
     
  3. angga74

    angga74 New Member

    Messages:
    5
    Likes Received:
    0
    Trophy Points:
    0
    haloo?
    lagi nunggu para master developer pulsa ngasih pencerahan nih


    [​IMG]
     
  4. SSPCellular

    SSPCellular New Member

    Messages:
    1
    Likes Received:
    0
    Trophy Points:
    0
    kalau ga salah itu xml nya eratel deh om :D
     
  5. neoholic

    neoholic New Member

    Messages:
    71
    Likes Received:
    49
    Trophy Points:
    0

    seeprtinnya saya dah paparkan koq juragan di thread sebelah......... mohon di koreksi
    :gossip:
     
  6. kazaoo

    kazaoo New Member

    Messages:
    2
    Likes Received:
    0
    Trophy Points:
    0
    coba make nusoap di php, pasti jadinya lebih mudah.
     
  7. siswayudi

    siswayudi New Member

    Messages:
    3
    Likes Received:
    0
    Trophy Points:
    0
    $rawdata = $HTTP_RAW_POST_DATA;
    $rawdata = substr($rawdata, strpos($rawdata, '?>', 1)+2);
    $arrItems = Array();

    $xml_parser = xml_parser_create() or die("Error: invalid operation !");
    xml_set_element_handler($xml_parser, "startElement", "endElement");
    xml_set_character_data_handler($xml_parser, "charData");

    if (!xml_parse($xml_parser, $rawdata, 1)) {
    die(sprintf("XML Error: %s at line %d",
    xml_error_string(xml_get_error_code($xml_parser)),
    xml_get_current_line_number($xml_parser)
    ));
    }

    :D:D
     
  8. pandaris03

    pandaris03 New Member Super Member

    Messages:
    1,385
    Likes Received:
    603
    Trophy Points:
    123
    bos yang blue Tebal pakai apa ya?
    Saya juga pengen coba untuk mengkonversikannya?
    Thank n ditunggu sharenya
     

Share This Page