繁体   English   中英

在Android应用程序中复制HTML表单流程

[英]Replicate HTML Form flow in android app

嗨,我需要帮助在我的 android 应用程序中复制下面的 html 代码。 **** HTML**** 在这里测试: http : //bestng.com/buycards on Github: https : //github.com/babaphemy/buycards表格:

<?php session_start(); 
//if(isset($_POST['name'])){
    //$amt1 =  htmlspecialchars(mysql_real_escape_string($_POST['amount'])) * 100 ;
     $amt1 = $_POST['amount'] * 100;
     $_SESSION['amt4hash'] =  $amt1;
     $tref =  $_SESSION['genref']  ;
    $_SESSION['pdtid'] = $pdid = 6205;
$_SESSION['item'] = $pitem =  101;
$rurl = "http://localhost/buycards/tpay.php";
$mac = "D3D1D05AFE42AD50818167EAC73C109168A0F108F32645C8B59E897FA930DA44F9230910DAC9E20641823799A107A02068F7BC0F4CC41D2952E249552255710F";
$tohash = $tref.$pdid.$pitem.$amt1.$rurl.$mac;
$dhash =  hash('sha512',$tohash);
$_SESSION['hashout'] = $dhash;

//}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <title>My Website</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- Bootstrap -->
    <link href="css/bootstrap.min.css" rel="stylesheet">
    <link href="css/custom.css" rel="stylesheet">
    <script src="js/respond.js"></script>
</head>

<body>
<div class="container">
    <!-- row 1: navigation -->
    <div class="row">
        <nav class="navbar navbar-default navbar-fixed-top navbar-inverse">
            <div class="navbar-header">
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#collapse">
                  <span class="sr-only">Toggle navigation</span>
                  <span class="glyphicon glyphicon-arrow-down"></span>
                  MENU
                </button>
            </div>
            <div class="collapse navbar-collapse" id="collapse">
                <ul class="nav navbar-nav">
                    <li><a href="#">Home</a></li>
                    <li class="dropdown"><a href="#" data-toggle="dropdown">About <span class="caret"></span></a>
                        <ul class="dropdown-menu">
                            <li><a href="#">Dr. Nothing</a></li>
                            <li><a href="#">Dr. Do little</a></li>
                            <li><a href="#">Dr. Sanders</a></li>
                        </ul>                    
                    </li>
                    <li class="active"><a href="#">Services</a></li>
                    <li><a href="#">Photo Gallery</a></li>
                    <li><a href="#">Contact</a></li>  
                </ul> 
            </div>
         </nav> 
    </div>

    <!-- row 2: header -->
    <header class="row">
        <div class="col-lg-6 col-sm-5">
            <a href="index.html"><img src="img/logo.png" alt="Wisdom Pets. click for home." class="img-responsive"></a>
        </div>
        <div class="col-lg-6 col-sm-7">
            <img src="img/animals.jpg" alt="" class="hidden-xs img-responsive">
        </div>
    </header>

    <!-- row 3: article/aside -->
    <div class="row">
        <article class="col-lg-offset-1 col-sm-offset-1 col-lg-8 col-sm-7 col-lg-push-3 col-sm-push-4">

            <ol class="breadcrumb">
              <li><a href="#">Home</a> <span class="glyphicon glyphicon-circle-arrow-right"></span></li>
              <li><a href="#">Services</a> <span class="glyphicon glyphicon-circle-arrow-right"></span></li>
              <li class="active">Categories</li>
            </ol>


            <p><span class="glyphicon-credit-card"></span>
            <p>
            <form name="contactform" method="post" action="https://stageserv.interswitchng.com/test_paydirect/pay">
            <fieldset>
            <legend>Confirm your payment </legend>
            <input name="product_id" type="hidden" value="<?php echo $pdid ;?>" >
            <input name="pay_item_id" type="hidden" value="<?php echo $pitem ;?>" >
            <input name="currency" type="hidden" value="566" >
            <input name="amount" type="hidden" value="<?php echo $amt1 ; ?>" >
             <input name="txn_ref" type="hidden" value="<?php echo $tref ;?>" >
             <input name="site_redirect_url" type="hidden" value="<?php echo $rurl ; ?>" >
             <input name="hash" type="hidden" value="<?php echo $dhash;   ?>" >
             <input name="cust_name" type="hidden" value="Test" >
              <input name="cust_id" type="hidden" value="AD99" >

            <label>Reference : <?php echo $tref ;?></label>
           <input type="hidden" value="<?php echo $tref ;?>" ><br />
           <label>Amount</label>
           <input name="ama" type="text" value="<?php echo $_SESSION['amt4hash']/100;?>" readonly="readonly" ><br />
           <button type="submit">Pay</button>




</form>
            </p>
                        <!-- nested row 3a: callouts -->
         <div class="clearfix visible-xs visible-lg"></div>

        </article>
        <aside class="col-lg-3 col-sm-4 col-lg-pull-9 col-sm-pull-8">
            <h3>About Our Services</h3>
            <ul class="nav nav-pills nav-stacked">
                <li class="active"><a href="#">Vaccinations</a></li>
                <li><a href="#">Checkups</a></li>
                <li><a href="#">Senior Pets</a></li>
                <li><a href="#">Diet Plans</a></li>
            </ul> 
         </aside>


        </div><!-- end row 3 -->

    <!-- row 4 -->
    <footer class="row">
         <p><small>This not a real veterinary medicine site, and is not meant to diagnose or offer treatment. Please see your veterinarian for all matters related to your pet's health.</small></p>
         <p><small>Wisdom Pet Medicine is a training brand owned by lynda.com.</small></p>
    </footer>

</div> <!-- end container -->

<!-- javascript -->
    <script src="http://code.jquery.com/jquery-latest.min.js"></script>
    <script src="js/bootstrap.min.js"></script>
    <script>
        $('a.btn-info').tooltip()
    </script>
</body>
</html>

android类如下所示:在github上: https : //github.com/babaphemy/bcandroid/blob/master/app/src/main/java/net/myeverstanding/webpost/MainActivity.java

package net.myeverlasting.webpost;

import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.text.Html;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;


import org.json.JSONObject;

import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Map;
import java.util.Random;
import java.util.WeakHashMap;

import javax.net.ssl.HttpsURLConnection;


public class MainActivity extends AppCompatActivity {

    EditText ama;
    Button dopay;
    TextView tryit;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        ama = (EditText) findViewById(R.id.ama);
        dopay = (Button) findViewById(R.id.pay);
        tryit = (TextView) findViewById(R.id.mesag);


        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });
    }

    public void send(View v){
        final String disama = ama.getText().toString();
        Random r = new Random();
        int tr = r.nextInt(1000000 - 999999) + 999999;
        final String myref = String.valueOf(tr);
        final String pdtid = "6205";
        final String pid = "101";
        String curr = "566";
        final String rurl = "http://localhost/lotto/tpay.php";
        final String mac = "D3D1D05AFE42AD50818167EAC73C109168A0F108F32645C8B59E897FA930DA44F9230910DAC9E20641823799A107A02068F7BC0F4CC41D2952E249552255710F";
        final String gethash = pasher(myref,pdtid,pid,disama,mac,rurl);

        if(disama.length() > 0){
            String url = "https://stageserv.interswitchng.com/test_paydirect/pay";

            StringRequest postrequest = new StringRequest(Request.Method.POST, url,
                    new Response.Listener<String>() {
                        @Override
                        public void onResponse(String resp) {
                            tryit.setText(Html.fromHtml(resp));

                        }
                    },
                    new Response.ErrorListener() {
                        @Override
                        public void onErrorResponse(VolleyError error) {
                            System.out.println("Error ["+error+"]");
                            error.printStackTrace();
                        }


                    }
            ){
                @Override
                protected Map<String, String> getParams()
                {
                    Map<String, String>  params = new Hashtable<>();
                    //params.put("Content-Type", "application/json; charset=utf-8");
                    params.put("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
                    //params.put("User-agent", "My useragent");
                    // the POST parameters:
                    params.put("firstname", "firstname");
                    params.put("businesscategory", "femi");
                    params.put("product_id", pdtid);
                    params.put("pay_item_id", pid);
                    params.put("currency", "566");
                    params.put("txn_ref", myref);
                    params.put("site_redirect_url", rurl);
                    params.put("hash", gethash);
                    params.put("cust_name", "Demo Test");
                    params.put("amount", disama);
                    return params;
                }
            };

            RequestQueue rque = Volley.newRequestQueue(this);

            rque.add(postrequest);





        }


    }



    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }




    public static String pasher(String tref,String pdif,String pitem,String amt,String rurl,String mac){
        String fhash = null;
        try {
            MessageDigest md = MessageDigest.getInstance("SHA-512");
            String tohash = tref+pdif+pitem+amt+rurl+mac;

            md.update(tohash.getBytes());
            byte[] bt = md.digest();
            StringBuilder sb = new StringBuilder();
            for(int i=0; i<bt.length; i++){
                sb.append(Integer.toString((bt[i] & 0xff) + 0x100, 16).substring(1));
            }
            fhash = sb.toString();

        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }

        return fhash;
    }
}

总之,我只想复制我正在做的事情: http : //bestng.com/buycards在 android 类中。 这意味着,将带有表单数据的表单提交到指定的端点。 请指教。

谢谢

我能够在 android 应用程序中使用 webview 做到这一点。 如果有人偶然发现了这一点,我真诚地希望你不要像我一样惩罚自己 48 小时。 谢谢

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM