如何在Android中实现Telenor easypay API

如何在Android中实现Telenor easypay API,android,easypay,Android,Easypay,我正在实现telenor easypay API,它由两个Web服务组成,第一个是我发布我的店铺id和其他信息,这些信息使我成功地使用Auth_令牌和postbackurl进行响应。当我将Auth令牌和postback url发布到下一个Web服务urlhttps://easypaystg.easypaisa.com.pk/easypay/Confirm.jsf它将我重定向到easypaisa结帐屏幕,其中在easypay签出屏幕上显示以下错误 public class Payment_deta

我正在实现telenor easypay API,它由两个Web服务组成,第一个是我发布我的店铺id和其他信息,这些信息使我成功地使用Auth_令牌和postbackurl进行响应。当我将Auth令牌和postback url发布到下一个Web服务url
https://easypaystg.easypaisa.com.pk/easypay/Confirm.jsf
它将我重定向到easypaisa结帐屏幕,其中在easypay签出屏幕上显示以下错误

public class Payment_details extends AppCompatActivity {
    private WebView webView;
    String postData = null;
    private RelativeLayout mConfirm;
    String data;
    boolean isFirst = true;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.payment_details);
        mConfirm = (RelativeLayout) findViewById(R.id.pd_confirm);


        webView = (WebView) findViewById(R.id.pdwebView);

        data = "https://easypaystg.easypaisa.com.pk/easypay/Index.jsf";
        Log.e("data", data);


        try {


            postData = URLEncoder.encode("amount", "UTF-8")
                    + "=" + URLEncoder.encode("10", "UTF-8");

            postData += "&" + URLEncoder.encode("storeId", "UTF-8") + "="
                    + URLEncoder.encode("xxxx", "UTF-8");

            postData += "&" + URLEncoder.encode("postBackURL", "UTF-8")
                    + "=" + URLEncoder.encode("your post back url any url", "UTF-8");

            postData += "&" + URLEncoder.encode("orderRefNum", "UTF-8")
                    + "=" + URLEncoder.encode("1111", "UTF-8");

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        webView.setWebViewClient(new MyWebViewClient());
        WebSettings settings = webView.getSettings();
        settings.setJavaScriptEnabled(true);

        webView.postUrl(data, postData.getBytes());




    }

    private class MyWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);


            return true;
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);

            Log.e("purl", url);
            if(isFirst) {
                isFirst = false;
                String[] ist = url.split("=");
                String[] snd = ist[1].split("&");
                String Token = snd[0];

                Log.e("token", Token);
                Log.e("posturl", ist[2]);
                secondredirect(Token, view);
            }

        }

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);




        }

        @Override
        public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
            handler.proceed();
        }

    }

    @Override
    public void onBackPressed() {
    }

   private void secondredirect(String token, WebView view){
       String sData = null;
       String sURL = "https://easypaystg.easypaisa.com.pk/easypay/Confirm.jsf";
       try {
           sData = URLEncoder.encode("auth_token", "UTF-8")
                   + "=" + URLEncoder.encode(token, "UTF-8");

           sData += "&" + URLEncoder.encode("postBackURL", "UTF-8") + "="
               + URLEncoder.encode("any url as a postback url", "UTF-8");
           view.postUrl(sURL, sData.getBytes());
       } catch (UnsupportedEncodingException e) {
           e.printStackTrace();
       }
   }
}

我的代码:

private class PostTask extends AsyncTask < String, String, String > {
 @Override
 protected void onPreExecute() {
  super.onPreExecute();
  mBT.setEnabled(false);
 }

 @Override
 protected String doInBackground(String...data) {

  OkHttpClient client; // = new OkHttpClient();
  client = getUnsafeOkHttpClient();
  client.setHostnameVerifier(new HostnameVerifier() {
   @Override
   public boolean verify(String hostname, SSLSession session) {
    return true;
   }
  });

  MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
  RequestBody body = RequestBody.create(mediaType, "amount=10&orderRefNum=110&storeId=xxxx&postBackURL=https://www.jeevaysehat.com/");
  Request request = new Request.Builder()
   .url("https://easypaystg.easypaisa.com.pk/easypay/Index.jsf")
   .post(body)
   .addHeader("content-type", "application/x-www-form-urlencoded")
   .addHeader("cache-control", "no-cache")
   .build();
  Response response = null;
  String resp = null;
  try {
   response = client.newCall(request).execute();
   resp = response.body().string();
  } catch (IOException e) {
   e.printStackTrace();
  }

  //return resp;
  return response.request().url().toString();
 }

 @Override
 protected void onPostExecute(String s) {
  super.onPostExecute(s);
  Log.e("data", s);
  try {
   mBT.setEnabled(true);
   String[] ist = s.split("=");
   String[] snd = ist[1].split("&");
   Token = snd[0];

   Log.e("token", Token);
   Log.e("posturl", ist[2]);

   pburl = ist[2];
   medPost.setText(pburl);
   medtoken.setText(Token);


   //  Log.e("pburl", pburl);
   /* Intent ii = new Intent(MainActivity.this, Payment_details.class);
    ii.putExtra("data", token);
     startActivity(ii);*/
   //http://jeevaysehat.com/?auth_token=260915100358342650147434472217522869797&postBackURL=http%3A%2F%2Fjeevaysehat.com%2F


  } catch (Exception e) {

  }
 }
}

private class PostTask1 extends AsyncTask < String, String, String > {
 String mtoken;
 String PBURL;

 public PostTask1(String token, String pb) {
  mtoken = token;
  PBURL = pb;
 }

 @Override
 protected String doInBackground(String...data) {


  OkHttpClient client; // = new OkHttpClient();
  client = getUnsafeOkHttpClient();
  client.setHostnameVerifier(new HostnameVerifier() {
   @Override
   public boolean verify(String hostname, SSLSession session) {
    return true;
   }
  });
  MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
  RequestBody body = RequestBody.create(mediaType, "auth_token=" + mtoken + "&postBackURL=https://www.jeevaysehat.com/");
  Request request = new Request.Builder()
   .url("https://easypaystg.easypaisa.com.pk/easypay/Confirm.jsf")
   .post(body)
   .addHeader("content-type", "application/x-www-form-urlencoded")
   .addHeader("cache-control", "no-cache")
   .build();

  Response response = null;
  String resp = null;
  try {
   response = client.newCall(request).execute();
   resp = response.body().string();
  } catch (Exception e) {
   e.printStackTrace();
  }

  return response.request().url().toString();
 }

 @Override
 protected void onPostExecute(String s) {
  super.onPostExecute(s);
  Log.e("data", s);
  //here i redirect to webview activity
  Intent ii = new Intent(MainActivity.this, Payment_details.class);
  ii.putExtra("data", s);
  startActivity(ii);
  // Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(s));
  // startActivity(browserIntent);

 }
}


 
私有类PostTask扩展了AsyncTask{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
mBT.setEnabled(假);
}
@凌驾
受保护的字符串doInBackground(字符串…数据){
OkHttpClient;/=新的OkHttpClient();
client=getUnsafeOkHttpClient();
client.setHostnameVerifier(新的HostnameVerifier(){
@凌驾
公共布尔验证(字符串主机名、SSLSession会话){
返回true;
}
});
MediaType MediaType=MediaType.parse(“application/x-www-form-urlencoded”);
RequestBody=RequestBody.create(mediaType,“amount=10&orderefnum=110&storeId=xxxx&postBackURL=https://www.jeevaysehat.com/");
Request Request=newrequest.Builder()
.url(“https://easypaystg.easypaisa.com.pk/easypay/Index.jsf")
.职位(机构)
.addHeader(“内容类型”、“应用程序/x-www-form-urlencoded”)
.addHeader(“缓存控制”、“无缓存”)
.build();
响应=空;
字符串resp=null;
试一试{
response=client.newCall(request.execute();
resp=response.body().string();
}捕获(IOE异常){
e、 printStackTrace();
}
//返回响应;
返回response.request().url().toString();
}
@凌驾
受保护的void onPostExecute(字符串s){
super.onPostExecute(s);
Log.e(“数据”,s);
试一试{
mBT.setEnabled(真);
字符串[]ist=s.split(“”);
字符串[]snd=ist[1]。拆分(&);
令牌=snd[0];
Log.e(“令牌”,令牌);
Log.e(“姿势”,ist[2]);
pburl=ist[2];
medPost.setText(pburl);
medtoken.setText(令牌);
//Log.e(“pburl”,pburl);
/*意向ii=新意向(MainActivity.this,Payment\u details.class);
ii.putExtra(“数据”,令牌);
星触觉(ii)*/
//http://jeevaysehat.com/?auth_token=260915100358342650147434472217522869797&postBackURL=http%3A%2F%2Fjeevaysehat.com%2F
}捕获(例外e){
}
}
}
私有类PostTask1扩展了AsyncTask{
字符串mtoken;
字符串PBURL;
公共PostTask1(字符串标记,字符串pb){
mtoken=代币;
PBURL=pb;
}
@凌驾
受保护的字符串doInBackground(字符串…数据){
OkHttpClient;/=新的OkHttpClient();
client=getUnsafeOkHttpClient();
client.setHostnameVerifier(新的HostnameVerifier(){
@凌驾
公共布尔验证(字符串主机名、SSLSession会话){
返回true;
}
});
MediaType MediaType=MediaType.parse(“application/x-www-form-urlencoded”);
RequestBody=RequestBody.create(mediaType,“auth_token=“+mtoken+”&postBackURL=https://www.jeevaysehat.com/");
Request Request=newrequest.Builder()
.url(“https://easypaystg.easypaisa.com.pk/easypay/Confirm.jsf")
.职位(机构)
.addHeader(“内容类型”、“应用程序/x-www-form-urlencoded”)
.addHeader(“缓存控制”、“无缓存”)
.build();
响应=空;
字符串resp=null;
试一试{
response=client.newCall(request.execute();
resp=response.body().string();
}捕获(例外e){
e、 printStackTrace();
}
返回response.request().url().toString();
}
@凌驾
受保护的void onPostExecute(字符串s){
super.onPostExecute(s);
Log.e(“数据”,s);
//这里我重定向到webview活动
意向ii=新意向(MainActivity.this,Payment\u details.class);
ii.额外(“数据”);
星触觉(ii);
//Intent browserIntent=新的Intent(Intent.ACTION_视图,Uri.parse);
//startActivity(浏览器内容);
}
}

我已经解决了这个问题并实现了Telenor easypay API,神奇的是我们将在webview中完成所有事情。。。使用webview将数据发布到第一个URL,它将返回附加到URL的auth_令牌和postbackurl。。。然后将auth_令牌和postbackurl发布到webview中的第二个URL,它将成功地使您进入easypay签出屏幕

public class Payment_details extends AppCompatActivity {
    private WebView webView;
    String postData = null;
    private RelativeLayout mConfirm;
    String data;
    boolean isFirst = true;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.payment_details);
        mConfirm = (RelativeLayout) findViewById(R.id.pd_confirm);


        webView = (WebView) findViewById(R.id.pdwebView);

        data = "https://easypaystg.easypaisa.com.pk/easypay/Index.jsf";
        Log.e("data", data);


        try {


            postData = URLEncoder.encode("amount", "UTF-8")
                    + "=" + URLEncoder.encode("10", "UTF-8");

            postData += "&" + URLEncoder.encode("storeId", "UTF-8") + "="
                    + URLEncoder.encode("xxxx", "UTF-8");

            postData += "&" + URLEncoder.encode("postBackURL", "UTF-8")
                    + "=" + URLEncoder.encode("your post back url any url", "UTF-8");

            postData += "&" + URLEncoder.encode("orderRefNum", "UTF-8")
                    + "=" + URLEncoder.encode("1111", "UTF-8");

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        webView.setWebViewClient(new MyWebViewClient());
        WebSettings settings = webView.getSettings();
        settings.setJavaScriptEnabled(true);

        webView.postUrl(data, postData.getBytes());




    }

    private class MyWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);


            return true;
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);

            Log.e("purl", url);
            if(isFirst) {
                isFirst = false;
                String[] ist = url.split("=");
                String[] snd = ist[1].split("&");
                String Token = snd[0];

                Log.e("token", Token);
                Log.e("posturl", ist[2]);
                secondredirect(Token, view);
            }

        }

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);




        }

        @Override
        public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
            handler.proceed();
        }

    }

    @Override
    public void onBackPressed() {
    }

   private void secondredirect(String token, WebView view){
       String sData = null;
       String sURL = "https://easypaystg.easypaisa.com.pk/easypay/Confirm.jsf";
       try {
           sData = URLEncoder.encode("auth_token", "UTF-8")
                   + "=" + URLEncoder.encode(token, "UTF-8");

           sData += "&" + URLEncoder.encode("postBackURL", "UTF-8") + "="
               + URLEncoder.encode("any url as a postback url", "UTF-8");
           view.postUrl(sURL, sData.getBytes());
       } catch (UnsupportedEncodingException e) {
           e.printStackTrace();
       }
   }
}

没有适合开发人员的文档和支持。只是一些过时的PDF文件。看起来他们对帮助开发者并不认真。