- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在我的应用程序中成功使用了 PayUMoney 支付网关。如果付款成功,我想调用一个类(class)或 Activity 。如果付款失败,则不会调用此类或 Activity 。我尝试了很多东西,但没有一个对我有用。
PayUMoneyActivity.java
package com.payumoneywebviewintri;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.net.http.SslError;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.webkit.SslErrorHandler;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
@SuppressLint("SetJavaScriptEnabled")
public class PayUMoneyActivity extends AppCompatActivity {
String merchant_key = "OygoFs";
String salt = "BV1QBwCv";
String action1 = "";
String base_url = "https://test.payu.in";
// int error = 0;
// String hashString = "";
// Map<String, String> params;
String txnid = "";
String amount = "1";
String productInfo = "";
String firstName = "Basit";
String emailId = "abdulbasitkhan88@gmail.com";
private String SUCCESS_URL = "http://er.16mb.com/success.php";
private String FAILED_URL = "http://er.16mb.com/failure.php";
private String phone = "7817857472";
private String serviceProvider = "payu_paisa";
private String hash = "";
Handler mHandler = new Handler();
private WebView webView;
@SuppressLint("JavascriptInterface")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pay_umoney);
// getWindow().requestFeature(Window.FEATURE_PROGRESS);
// webView = new WebView(this);
// setContentView(webView);
webView = (WebView)findViewById(R.id.wb);
JSONObject productInfoObj = new JSONObject();
JSONArray productPartsArr = new JSONArray();
JSONObject productPartsObj1 = new JSONObject();
JSONObject paymentIdenfierParent = new JSONObject();
JSONArray paymentIdentifiersArr = new JSONArray();
JSONObject paymentPartsObj1 = new JSONObject();
JSONObject paymentPartsObj2 = new JSONObject();
try {
// Payment Parts
productPartsObj1.put("name", "abc");
productPartsObj1.put("description", "abcd");
productPartsObj1.put("value", "1");
productPartsObj1.put("isRequired", "true");
productPartsObj1.put("settlementEvent", "EmailConfirmation");
productPartsArr.put(productPartsObj1);
productInfoObj.put("paymentParts", productPartsArr);
// Payment Identifiers
paymentPartsObj1.put("field", "CompletionDate");
paymentPartsObj1.put("value", "05/08/2016");
paymentIdentifiersArr.put(paymentPartsObj1);
paymentPartsObj2.put("field", "TxnId");
paymentPartsObj2.put("value", txnid);
paymentIdentifiersArr.put(paymentPartsObj2);
paymentIdenfierParent.put("paymentIdentifiers",
paymentIdentifiersArr);
productInfoObj.put("", paymentIdenfierParent);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
productInfo = productInfoObj.toString();
Log.e("TAG", productInfoObj.toString());
Random rand = new Random();
String rndm = Integer.toString(rand.nextInt())
+ (System.currentTimeMillis() / 1000L);
txnid = hashCal("SHA-256", rndm).substring(0, 20);
hash = hashCal("SHA-512", merchant_key + "|" + txnid + "|" + amount
+ "|" + productInfo + "|" + firstName + "|" + emailId
+ "|||||||||||" + salt);
action1 = base_url.concat("/_payment");
webView.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
// TODO Auto-generated method stub
Toast.makeText(PayUMoneyActivity.this, "Oh no! " + description,
Toast.LENGTH_LONG).show();
}
@Override
public void onReceivedSslError(WebView view,
SslErrorHandler handler, SslError error) {
// TODO Auto-generated method stub
Toast.makeText(PayUMoneyActivity.this, "SslError! " + error,
Toast.LENGTH_LONG).show();
handler.proceed();
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Toast.makeText(PayUMoneyActivity.this, "Page Started! " + url,
Toast.LENGTH_LONG).show();
if (url.equals(SUCCESS_URL)) {
Intent i = new Intent(PayUMoneyActivity.this,TestActivity.class);
startActivity(i);
Toast.makeText(PayUMoneyActivity.this, "Success! " + url,
Toast.LENGTH_LONG).show();
} else {
Toast.makeText(PayUMoneyActivity.this, "Failure! " + url,
Toast.LENGTH_LONG).show();
}
return super.shouldOverrideUrlLoading(view, url);
}
//
// @Override
// public void onPageFinished(WebView view, String url) {
// super.onPageFinished(view, url);
//
// Toast.makeText(PayMentGateWay.this, "" + url,
// Toast.LENGTH_SHORT).show();
// }
});
webView.setVisibility(View.VISIBLE);
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setCacheMode(2);
webView.getSettings().setDomStorageEnabled(true);
webView.clearHistory();
webView.clearCache(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setSupportZoom(true);
webView.getSettings().setUseWideViewPort(false);
webView.getSettings().setLoadWithOverviewMode(true);
webView.addJavascriptInterface(new PayUJavaScriptInterface(PayUMoneyActivity.this),
"PayUMoney");
Map<String, String> mapParams = new HashMap<String, String>();
mapParams.put("key", merchant_key);
mapParams.put("hash", hash);
mapParams.put("txnid", txnid);
mapParams.put("service_provider", "payu_paisa");
mapParams.put("amount", amount);
mapParams.put("firstname", firstName);
mapParams.put("email", emailId);
mapParams.put("phone", phone);
mapParams.put("productinfo", productInfo);
mapParams.put("surl", SUCCESS_URL);
mapParams.put("furl", FAILED_URL);
mapParams.put("lastname", "");
mapParams.put("address1", "");
mapParams.put("address2", "");
mapParams.put("city", "");
mapParams.put("state", "");
mapParams.put("country", "");
mapParams.put("zipcode", "");
mapParams.put("udf1", "");
mapParams.put("udf2", "");
mapParams.put("udf3", "");
mapParams.put("udf4", "");
mapParams.put("udf5", "");
// mapParams.put("pg", (empty(PayMentGateWay.this.params.get("pg"))) ?
// ""
// : PayMentGateWay.this.params.get("pg"));
webview_ClientPost(webView, action1, mapParams.entrySet());
}
public class PayUJavaScriptInterface {
Context mContext;
/** Instantiate the interface and set the context */
PayUJavaScriptInterface(Context c) {
mContext = c;
}
public void success(long id, final String paymentId) {
mHandler.post(new Runnable() {
public void run() {
mHandler = null;
// Toast.makeText(PayMentGateWay.this, "Success",
// Toast.LENGTH_SHORT).show();
}
});
}
}
public void webview_ClientPost(WebView webView, String url,
Collection<Map.Entry<String, String>> postData) {
StringBuilder sb = new StringBuilder();
sb.append("<html><head></head>");
sb.append("<body onload='form1.submit()'>");
sb.append(String.format("<form id='form1' action='%s' method='%s'>",
url, "post"));
for (Map.Entry<String, String> item : postData) {
sb.append(String.format(
"<input name='%s' type='hidden' value='%s' />",
item.getKey(), item.getValue()));
}
sb.append("</form></body></html>");
// Log.d(tag, "webview_ClientPost called");
webView.loadData(sb.toString(), "text/html", "utf-8");
}
public boolean empty(String s) {
if (s == null || s.trim().equals(""))
return true;
else
return false;
}
public String hashCal(String type, String str) {
byte[] hashseq = str.getBytes();
StringBuffer hexString = new StringBuffer();
try {
MessageDigest algorithm = MessageDigest.getInstance(type);
algorithm.reset();
algorithm.update(hashseq);
byte messageDigest[] = algorithm.digest();
for (int i = 0; i < messageDigest.length; i++) {
String hex = Integer.toHexString(0xFF & messageDigest[i]);
if (hex.length() == 1)
hexString.append("0");
hexString.append(hex);
}
} catch (NoSuchAlgorithmException nsae) {
}
return hexString.toString();
}
最佳答案
webviewPayment.getSettings().setJavaScriptEnabled(true);
webviewPayment.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon)
{
dialog.show();
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(webviewPayment, url);
if (dialog.isShowing())
dialog.dismiss();
if(url.equals(SUCCESS_URL))
{
if (cd.isConnectingToInternet()) {
new GetBookSeatOperation().execute();
}
else {
Toaster.make(getActivity(), R.string.err_went_wrong );
} }
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Toast.makeText(getActivity(), "Oh no! " + description, Toast.LENGTH_SHORT).show();
}
});
// }
} else {
Toaster.make(getActivity(), R.string.err_went_wrong);
}
关于android - 在 webview 中加载成功 URL 时调用类或 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38801621/
为了让我的代码几乎完全用 Jquery 编写,我想用 Jquery 重写 AJAX 调用。 这是从网页到 Tomcat servlet 的调用。 我目前情况的类似代码: var http = new
我想使用 JNI 从 Java 调用 C 函数。在 C 函数中,我想创建一个 JVM 并调用一些 Java 对象。当我尝试创建 JVM 时,JNI_CreateJavaVM 返回 -1。 所以,我想知
环顾四周,我发现从 HTML 调用 Javascript 函数的最佳方法是将函数本身放在 HTML 中,而不是外部 Javascript 文件。所以我一直在网上四处寻找,找到了一些简短的教程,我可以根
我有这个组件: import {Component} from 'angular2/core'; import {UserServices} from '../services/UserService
我正在尝试用 C 实现一个简单的 OpenSSL 客户端/服务器模型,并且对 BIO_* 调用的使用感到好奇,与原始 SSL_* 调用相比,它允许一些不错的功能。 我对此比较陌生,所以我可能会完全错误
我正在处理有关异步调用的难题: 一个 JQuery 函数在用户点击时执行,然后调用一个 php 文件来检查用户输入是否与数据库中已有的信息重叠。如果是这样,则应提示用户确认是否要继续或取消,如果他单击
我有以下类(class)。 public Task { public static Task getInstance(String taskName) { return new
嘿,我正在构建一个小游戏,我正在通过制作一个数字 vector 来创建关卡,该数字 vector 通过枚举与 1-4 种颜色相关联。问题是循环(在 Simon::loadChallenge 中)我将颜
我有一个java spring boot api(数据接收器),客户端调用它来保存一些数据。一旦我完成了数据的持久化,我想进行另一个 api 调用(应该处理持久化的数据 - 数据聚合器),它应该自行异
首先,这涉及桌面应用程序而不是 ASP .Net 应用程序。 我已经为我的项目添加了一个 Web 引用,并构建了各种数据对象,例如 PayerInfo、Address 和 CreditCard。但问题
我如何告诉 FAKE 编译 .fs文件使用 fsc ? 解释如何传递参数的奖励积分,如 -a和 -target:dll . 编辑:我应该澄清一下,我正在尝试在没有 MSBuild/xbuild/.sl
我使用下划线模板配置了一个简单的主干模型和 View 。两个单独的 API 使用完全相同的配置。 API 1 按预期工作。 要重现该问题,请注释掉 API 1 的 URL,并取消注释 API 2 的
我不确定什么是更好的做法或更现实的做法。我希望从头开始创建目录系统,但不确定最佳方法是什么。 我想我在需要显示信息时使用对象,例如 info.php?id=100。有这样的代码用于显示 Game.cl
from datetime import timedelta class A: def __abs__(self): return -self class B1(A):
我在操作此生命游戏示例代码中的数组时遇到问题。 情况: “生命游戏”是约翰·康威发明的一种细胞自动化技术。它由一个细胞网格组成,这些细胞可以根据数学规则生存/死亡/繁殖。该网格中的活细胞和死细胞通过
如果我像这样调用 read() 来读取文件: unsigned char buf[512]; memset(buf, 0, sizeof(unsigned char) * 512); int fd;
我用 C 编写了一个简单的服务器,并希望调用它的功能与调用其他 C 守护程序的功能相同(例如使用 ./ftpd start 调用它并使用 ./ftpd stop 关闭该实例)。显然我遇到的问题是我不知
在 dos 中,当我粘贴此命令时它会起作用: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" https://google.
在 dos 中,当我粘贴此命令时它会起作用: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" https://google.
我希望能够从 cmd 在我的 Windows 10 计算机上调用 python3。 我已重新安装 Python3.7 以确保选择“添加到路径”选项,但仍无法调用 python3 并使 CMD 启动 P
我是一名优秀的程序员,十分优秀!