我已经实现了Paytm支付系统,一切都很好,在我的意图之上的网络意图,钱从客户的访问和它的添加到我的账户上,但交易完成后,它被卡在一个白色页面上说‘重定向到应用程序’,我认为我应该写代码重定向回我的应用程序,但我不知道如何做,因为我找不到一个onTransactionSucess()事件或任何类似的东西,我也尝试了onTransactionResponse,但仍然没有反应。我检查了所有的paytm文档,并尝试联系paytm支持人员,但找不到方法。
发布于 2020-01-03 15:32:14
希望你已经添加了'CALLBACK_URL‘,这是验证校验和所必需的。正如paytm文档中所提到的
CALLBACK_URL -避免篡改的安全参数。使用Paytm提供的服务器端校验和实用程序生成。商家必须确保这总是在服务器上生成。here提供了生成校验和散列的实用程序。
希望这能起到魔力。
发布于 2019-11-28 20:16:45
我希望你已经在你的代码中添加了这个变量-
PaytmPGService service;如果你正在使用它,那么你可以获得所有与支付相关的方法,如下所示:
service.startPaymentTransaction(this, true,
true, new PaytmPaymentTransactionCallback() {
@Override
public void onTransactionResponse(Bundle inResponse) {
System.out.println("===== onTransactionResponse " + inResponse.toString());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
if (Objects.equals(inResponse.getString("STATUS"), "TXN_SUCCESS")) {
// Payment Success
} else if (!inResponse.getBoolean("STATUS")) {
// Payment Failed
}
}
}
@Override
public void networkNotAvailable() {
// network error
}
@Override
public void clientAuthenticationFailed(String inErrorMessage) {
// AuthenticationFailed
}
@Override
public void someUIErrorOccurred(String inErrorMessage) {
// UI Error
}
@Override
public void onErrorLoadingWebPage(int iniErrorCode, String inErrorMessage, String inFailingUrl) {
// Web page loading error
}
@Override
public void onBackPressedCancelTransaction() {
// on cancelling transaction
}
@Override
public void onTransactionCancel(String inErrorMessage, Bundle inResponse) {
// maybe same as onBackPressedCancelTransaction()
}
});我希望这能对你有所帮助。
发布于 2020-02-28 19:43:29
将默认的回调更改为假设'http://yourdomain (如果检查本地主机,则为ip地址)/pgResponse.php‘;。将以下代码添加到pgResponse.php
<?php
session_start();
header("Pragma: no-cache");
header("Cache-Control: no-cache");
header("Expires: 0");
// following files need to be included
require_once("./lib/config_paytm.php");
require_once("./lib/encdec_paytm.php");
$paytmChecksum = "";
$paramList = array();
$isValidChecksum = "FALSE";
$paramList = $_POST;
$return_array= $_POST;
$checkSum = getChecksumFromArray($paramList,PAYTM_MERCHANT_KEY);//generate new checksum
$paytmChecksum = isset($_POST["CHECKSUMHASH"]) ? $_POST["CHECKSUMHASH"] : ""; //Sent by Paytm pg
//Verify all parameters received from Paytm pg to your application. Like MID received from paytm pg is same as your applicationís MID, TXN_AMOUNT and ORDER_ID are same as what was sent by you to Paytm PG for initiating transaction etc.
$isValidChecksum = verifychecksum_e($paramList, PAYTM_MERCHANT_KEY, $paytmChecksum); //will return TRUE or FALSE string.
$return_array["IS_CHECKSUM_VALID"] = $isValidChecksum ? "Y" : "N";
unset($return_array["CHECKSUMHASH"]);
$mid = $_POST['MID'];
$orderid = $_POST['ORDERID'];
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => 'https://securegw-stage.paytm.in/order/status?JsonData={"MID":"'.$mid.'","ORDERID":"'.$orderid.'","CHECKSUMHASH":"'.$checkSum.'"}',
CURLOPT_USERAGENT => 'Make Request'
));
$resp = curl_exec($curl);
$status= json_decode($resp)->STATUS;
//do something in your database
$encoded_json = htmlentities(json_encode($return_array));
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-I">
<title>Paytm</title>
<script type="text/javascript">
function response(){
return document.getElementById('response').value;
}
</script>
</head>
<body>
Redirecting back to the app.....</br>
<form name="frm" method="post">
<input type="hidden" id="response" name="responseField" value='<?php echo $encoded_json?>'>
</form>
</body>
</html>在android直播间:
public void onTransactionResponse(Bundle inResponse) {
Log.d("Create Response", inResponse.toString());
String response = inResponse.getString("RESPMSG");
if (response.equals("Txn Successful.")) {
Toast.makeText(Bag.this,"Payment done",Toast.LENGTH_LONG).show();
}
else{
Toast.makeText(Bag.this,response,Toast.LENGTH_LONG).show();
}
}https://stackoverflow.com/questions/58166484
复制相似问题