PayU Checkout Pro на AndroidAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 PayU Checkout Pro на Android

Сообщение Anonymous »

Я пытаюсь интегрировать PayU Checkout Pro на Android, но при использовании приведенного ниже кода на странице оформления заказа отображается сообщение «Обработка», а затем через секунду она закрывается сама собой.
Как Сейчас я генерирую хэш локально для тестирования.
Этот код инициируется, когда я нажимаю кнопку «СДЕЛАТЬ ПЛАТЕЖ» -

Код: Выделить всё

        HashGenerator hashGenerator;
PayUPaymentParams payUPaymentParams;

hashGenerator = new HashGenerator();
hashGenerator.setTxnid(String.valueOf(System.currentTimeMillis()));
hashGenerator.setAmount("1.00");
hashGenerator.setProductinfo("Macbook Pro");
hashGenerator.setFirstname("John");
hashGenerator.setEmail("john@gmail.com");
hashGenerator.setPhone("9999999999");

PayUPaymentParams.Builder builder = new PayUPaymentParams.Builder();
builder.setAmount(hashGenerator.getAmount())
.setIsProduction(true)
.setProductInfo(hashGenerator.getProductinfo())
.setKey(hashGenerator.getKey())
.setTransactionId(hashGenerator.getTxnid())
.setFirstName(hashGenerator.getFirstname())
.setEmail(hashGenerator.getEmail())
.setPhone(hashGenerator.getPhone())
.setSurl("https://cbjs.payu.in/sdk/success")
.setFurl("https://cbjs.payu.in/sdk/failure");
payUPaymentParams = builder.build();

PayUCheckoutPro.open(
this,
payUPaymentParams,
new PayUCheckoutProListener() {
@Override
public void onPaymentSuccess(Object response) {
}

@Override
public void onPaymentFailure(Object response) {
}

@Override
public void onPaymentCancel(boolean isTxnInitiated) {
}

@Override
public void onError(ErrorResponse errorResponse) {
}

@Override
public void setWebViewProperties(@Nullable WebView webView, @Nullable Object o) {
//For setting webview properties, if any. Check Customized Integration section for more details on this
}

@Override
public void generateHash(HashMap valueMap, PayUHashGenerationListener hashGenerationListener) {
String hashName = valueMap.get(PayUCheckoutProConstants.CP_HASH_NAME);
String hashData = valueMap.get(PayUCheckoutProConstants.CP_HASH_STRING);
if (!TextUtils.isEmpty(hashName) && !TextUtils.isEmpty(hashData)) {
//Do not generate hash from local, it needs to be calculated from server side only.  Here, hashString contains hash created from your server side.
String hash = hashGenerator.generateHash();
Log.d("ABCDE", "HASH: "+hash);
HashMap dataMap = new HashMap();
dataMap.put(hashName, hash);
hashGenerationListener.onHashGenerated(dataMap);
}
}
}
);

Вот код класса HashGenerator, который я использую просто для удобства -

Код: Выделить всё

import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class HashGenerator {

private String txnid;
private String amount;
private String productinfo;
private String firstname;
private String email;
private String phone;
private final String key = "mykey";
private final String salt = "mysalt";

public HashGenerator() {
}

public String generateHash() {
String input = key + "|" + txnid + "|" + amount + "|" + productinfo + "|" + firstname + "|" + email + "|||||||||||" + salt;
return sha512(input.toLowerCase());
}

private static String sha512(String input) {
try {
MessageDigest md = MessageDigest.getInstance("SHA-512");
byte[] hashBytes = md.digest(input.getBytes(StandardCharsets.UTF_8));
StringBuilder sb = new StringBuilder();
for (byte b : hashBytes) {
sb.append(String.format("%02x", b));
}
return sb.toString();
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
}

public String getKey() {
return key;
}
public String getTxnid() {
return txnid;
}
public void setTxnid(String txnid) {
this.txnid = txnid;
}
public String getAmount() {
return amount;
}
public void setAmount(String amount) {
this.amount = amount;
}
public String getProductinfo() {
return productinfo;
}
public void setProductinfo(String productinfo) {
this.productinfo = productinfo;
}
public String getSalt() {
return "QcOUKmTPLYigvaniwehruhFAGukJgZ6u";
}
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
Шаги, предпринятые до сих пор –
  • Использованные ключ и соль верны.
    < li>Строка - Log.d("ABCDE", "HASH: "+hash); генерирует одну и ту же строку хэша 3 раза, когда я нажимаю кнопку «СДЕЛАТЬ ПЛАТЕЖ».
Возможная проблема. Я связался со службой поддержки PayU. По их словам, нам нужно сгенерировать несколько хэшей в SDK, чтобы попасть на страницу оформления заказа.
Как мне этого добиться? или есть еще какая-то проблема?

Подробнее здесь: https://stackoverflow.com/questions/791 ... in-android
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»