package com.trans.music.search;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.util.Log;
import android.widget.Toast;
import android.app.Dialog;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.HashMap;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URLConnection;
import java.net.URL;
import java.net.URLEncoder;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLContext;
import com.jokes.search.R;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileInputStream;
import java.io.DataInputStream;
import java.io.BufferedInputStream;
public class paypal extends Activity {
// Paypal donate
private static String mToken;
WebView mPPWebview;
final String UrlSucess = "http://127.0.0.1/musicsearch/sucess/";
final String UrlFailed = "http://127.0.0.1/musicsearch/failed/";
static final int DONATE_INIT = 1;
static final int DONATE_SECUSS = 2;
static final int DONATE_FAILED = 3;
static final int TEST_PAYPAL_SANDBOX = 0;
AlertDialog mDialog;
ProgressDialog mProgressDialog;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.paypal);
final String mimeType = "text/html";
final String encoding = "utf-8";
mPPWebview = (WebView) findViewById(R.id.webview_paypal);;
showDialog(DONATE_INIT);
(new Thread() {
public void run() {
mToken = PaypalDonate_SetMobileCheckout();
String uriString;
if(TEST_PAYPAL_SANDBOX == 1)
uriString = "https://www.sandbox.paypal.com/wc?t=" + mToken;
else
uriString = "https://mobile.paypal.com/wc?t=" + mToken;
mPPWebview.loadUrl(uriString);
mPPWebview.setWebViewClient(mPPClient);
}
}).start();
}
WebViewClient mPPClient = new WebViewClient(){
public void onPageFinished(WebView view, String url){
mPPWebview.requestFocus();
Log.e("MusicSearch Paypal", "finished url: " + url);
mProgressDialog.dismiss();
paypal.this.setTitle(url);
if(url.startsWith(UrlSucess)){
Log.e("MusicSearch Paypal", "finished url: " + url);
}
}
public boolean shouldOverrideUrlLoading(WebView view, String url){
if(url.startsWith(UrlSucess)){
Log.e("MusicSearch Paypal", "OverrideUrlLoading url: " + url);
String token = url.substring(url.indexOf("?token=") + new String("?token=").length());
Log.e("MusicSearch Paypal", "OverrideUrlLoading token: " + token + " mToken: " +mToken);
if(token.equals(mToken) == true){
showDialog(DONATE_INIT);
(new Thread() {
public void run() {
String response = PaypalDonate_DoMobileCheckoutPayment(mToken);
if(response.length() > 0){
// save donate flag to 1
try{
byte[] b = new byte[1];
FileOutputStream fcontrol = openFileOutput("control2.list", 0);
b[0] = 1;
fcontrol.write(b);
fcontrol.close();
}catch(IOException e) {
e.printStackTrace();
}
ShowProgressDialog();
}else
ShowProgressDialog();
}
}).start();
}else
showDialog(DONATE_FAILED);
return true;
}
else
return false;
}
/*
public void onLoadResource(WebView view, String url){
Log.e("MusicSearch Paypal", "finished url 2: " + url);
if(url.startsWith(UrlSucess)){
Log.e("MusicSearch Paypal", "finished url 2: " + url);
PaypalDonate_DoMobileCheckoutPayment();
Toast.makeText(paypal.this, url, Toast.LENGTH_SHORT).show();
String token = url.substring(url.indexOf("&TOKEN=") + new String("&TOKEN=").length());
}
}
*/
};
private void ShowProgressDialog() {
this.runOnUiThread(new Runnable() {
public void run() {
mProgressDialog.dismiss();
showDialog(DONATE_SECUSS);
}
});
}
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DONATE_INIT: {
mProgressDialog = new ProgressDialog(this);
mProgressDialog.setMessage("Please wait while connect https://mobile.paypal.com/ ...");
mProgressDialog.setIndeterminate(true);
mProgressDialog.setCancelable(true);
return mProgressDialog;
}
case DONATE_SECUSS: {
mDialog = new AlertDialog.Builder(this)
.setTitle("Donate sucess ")
.setMessage("Thank you, donate sucess, you can search unlimited now !")
.setCancelable(true)
.setPositiveButton("Close",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
finish();
}
}).create();
return mDialog;
}
case DONATE_FAILED: {
mDialog = new AlertDialog.Builder(this)
.setTitle("Donate failed ")
.setMessage("Sorry to paypap failed , please restart MusicSearch to try again, thanks !")
.setCancelable(true)
.setPositiveButton("Close",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
finish();
}
}).create();
return mDialog;
}
}
return null;
}
// paypal donate
private String PaypalDonate_SetMobileCheckout(){
String urlString;
String token;
if(TEST_PAYPAL_SANDBOX == 1)
urlString = "https://api-3t.sandbox.paypal.com/nvp";
else
urlString = "https://api-3t.paypal.com/nvp";
Map map = new HashMap();
map.put("METHOD", "SetMobileCheckout");
map.put("VERSION", "51.0");
if(TEST_PAYPAL_SANDBOX == 1){
map.put("USER", "waf.ya_1243923059_biz_api1.gmail.com");
map.put("PWD", "1243923076");
map.put("SIGNATURE", "AKLmkqPFFE7vwEEbGPrfwjOAZSf-A2GE2onAxvbQd69o8ao.h1oGoxAS");
}else{
map.put("USER", "info_api1.irobotsoft.com");
map.put("PWD", "3E964KGDFHS84X6J");
map.put("SIGNATURE", "A89ietZHH8rcYuKCskd3qnsfSktCA2zSupG.FCOCs20Gt1AhSd1BPhPU");
}
map.put("AMT", "7.99");
map.put("CURRENCYCODE", "USD");
map.put("DESC", "MusicSearch Donate");
map.put("RETURNURL", UrlSucess);
map.put("CANCELURL", UrlFailed);
String temp = doPost(urlString, map, null);
Log.e("MusicSearch Paypal", "response: " + temp);
int pos = temp.indexOf("&TOKEN=");
if(pos != -1)
token = temp.substring(temp.indexOf("&TOKEN=") + new String("&TOKEN=").length());
else
token = null;
return token;
}
private String PaypalDonate_DoMobileCheckoutPayment(String token){
String urlString;
if(TEST_PAYPAL_SANDBOX == 1)
urlString = "https://api-3t.sandbox.paypal.com/nvp";
else
urlString = "https://api-3t.paypal.com/nvp";
Map map = new HashMap();
map.put("METHOD", "DoMobileCheckoutPayment");
map.put("VERSION", "51.0");
if(TEST_PAYPAL_SANDBOX == 1){
map.put("USER", "waf.ya_1243923059_biz_api1.gmail.com");
map.put("PWD", "1243923076");
map.put("SIGNATURE", "AKLmkqPFFE7vwEEbGPrfwjOAZSf-A2GE2onAxvbQd69o8ao.h1oGoxAS");
}else{
map.put("USER", "info_api1.irobotsoft.com");
map.put("PWD", "3E964KGDFHS84X6J");
map.put("SIGNATURE", "A89ietZHH8rcYuKCskd3qnsfSktCA2zSupG.FCOCs20Gt1AhSd1BPhPU");
}
map.put("TOKEN", token);
String temp = doPost(urlString, map, null);
Log.e("MusicSearch Paypal", "DoMobileCheckoutPayment response: " + temp);
return temp;
}
public String doPost(String reqUrl, Map parameters,
String recvEncoding)
{
HttpURLConnection url_con = null;
//URLConnection url_con = null;
String responseContent = null;
InputStream stream = null;
InputStreamReader is = null;
String httpresponse = null;
Log.e("MusicSearch Paypal", "doPost reqUrl: " + reqUrl);
try
{
StringBuffer params = new StringBuffer();
for (Iterator iter = parameters.entrySet().iterator(); iter
.hasNext();)
{
Entry element = (Entry) iter.next();
params.append(element.getKey().toString());
params.append("=");
if(recvEncoding == null)
params.append(URLEncoder.encode(element.getValue().toString()));
else
params.append(URLEncoder.encode(element.getValue().toString(), recvEncoding));
params.append("&");
}
if (params.length() > 0)
{
params = params.deleteCharAt(params.length() - 1);
}
Log.e("MusicSearch Paypal", "doPost params: " + params.toString());
HttpsURLConnection.setDefaultHostnameVerifier(hv);
URL url = new URL(reqUrl);
url_con = (HttpURLConnection) url.openConnection();
//url_con = (URLConnection) url.openConnection();
url_con.setRequestMethod("POST");
url_con.setRequestProperty("User-Agent", "Mozilla/5.0 (Linux; U; Android 0.5; en-us) AppleWebKit/522+ (KHTML, like Gecko) Safari/419.3 -Java");
url_con.setDoOutput(true);
byte[] b = params.toString().getBytes();
url_con.getOutputStream().write(b, 0, b.length);
url_con.getOutputStream().flush();
url_con.getOutputStream().close();
url_con.connect();
stream = url_con.getInputStream();
StringBuilder builder = new StringBuilder(4096);
char[] buff = new char[4096];
is = new InputStreamReader(stream);
int len;
while ((len = is.read(buff)) > 0) {
builder.append(buff, 0, len);
}
httpresponse = builder.toString();
Log.e("MusicSearch Paypal", "doPost response: " + httpresponse);
url_con = (HttpURLConnection)url.openConnection();
url_con.setDoOutput(true);
url_con.getOutputStream().flush();
url_con.getOutputStream().close();
}
catch (IOException e)
{
Log.e("MusicSearch", "error: " + e.getMessage(), e);
}
finally
{
if (url_con != null)
{
url_con.disconnect();
}
}
return httpresponse;
}
static HostnameVerifier hv = new HostnameVerifier() {
public boolean verify(String urlHostName, SSLSession session) {
System.out.println("Warning: URL Host: " + urlHostName + " vs. "
+ session.getPeerHost());
return true;
}
};
}