Paytm payment gateway works on android studio but not after installing actual apk bundle

51 views Asked by At

I am trying to integrate Paytm with my android app. Creating token at backend. I am successfully able to launch Paytm transaction page and complete transaction under android studio but not on actual mobile.

The issue is: It is not opening the payment page in actual mobile. Timing out with error:

Webpage not available
The webpage at https://internal-pgp-stage-renew-8887872.ap-south-1.elb.amazonaws.com/theia/api/v2/showPaymentPage?mid=<mid>&orderId=<id>&txnToken=<token>&amount=2968.2&sourceName=googlechrome&sourceUrl=https://internal-pgp-stage-renew-8887872.ap-south-1.elb.amazonaws.com/theia/api/v2/showPaymentPage?isAppLink=true&appInvokeForm=REDIRECTION_APPINVOKE
could not be loaded because:
net::ERR_CONNECTION_TIMED_OUT

Backend code:

public String createPaytmOrder(String bookingId, float txnAmount, String mid, String apiKey, String paytmBaseUrl)
            throws JSONException, EmException {
        JSONObject body = new JSONObject();
        body.put("requestType", "Payment");
        body.put("mid", mid);
        body.put("orderId", bookingId);

        body.put("callbackUrl", "https://securegw-stage.paytm.in/theia/paytmCallback?ORDER_ID=" + bookingId);
        body.put("websiteName", "WEBSTAGING");

        JSONObject txnBody = new JSONObject();
        txnBody.put("value", String.valueOf(txnAmount));
        txnBody.put("currency", "INR");
        body.put("txnAmount", txnBody);

        JSONObject userInfo = new JSONObject();
        userInfo.put("custId", "customer123");
        userInfo.put("firstName", "First Name");
        userInfo.put("email", "[email protected]");
        body.put("userInfo", userInfo);

        JSONObject head = new JSONObject();
        head.put("signature", generateChecksum(body.toString(), apiKey));

        JSONObject paytmParams = new JSONObject();
        paytmParams.put("body", body);
        paytmParams.put("head", head);
        String post_data = paytmParams.toString();

        String postUrl = String.format("/theia/api/v1/initiateTransaction?mid=%s&orderId=%s", mid, bookingId);

        HttpHeaders headers = new HttpHeaders();
        headers.add(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE);
        RestTemplateWrapper restTemplateWrapper = new RestTemplateWrapper(paytmBaseUrl, headers);
        @SuppressWarnings("unchecked")
        ResponseEntity<PaytmTokenResponse> paytmTokenResponseEntity =
                (ResponseEntity<PaytmTokenResponse>) restTemplateWrapper.postRequest(postUrl, post_data,
                        PaytmTokenResponse.class);
        PaytmTokenResponse paytmTokenResponse = paytmTokenResponseEntity.getBody();
        System.out.println("Response: " + paytmTokenResponse.toString());
        return paytmTokenResponse.getBody().getTxnToken();
    }

    private String generateChecksum(String body, String apiKey) throws EmException {
        try {
            return PaytmChecksum.generateSignature(body, apiKey);
        } catch (Exception e) {
            throw new EmException("Wrong input provided.");

        }
    }
Base Url is Paytm staging URL: https://securegw-stage.paytm.in

PaytmTokenResponse

@Data
public class TokenResHead {

    private String responseTimestamp;
    private String version;
    private String clientId;
    private String signature;

}

TokenResBody

@Data
public class TokenResBody {

    private ResultInfo resultInfo;
    private String txnToken;
    private boolean isPromoCodeValid;
    private boolean authenticated;

    private String txnId;
    private String bankTxnId;
    private String orderId;
    private String txnAmount;
    private String txnType;
    private String gatewayName;
    private String bankName;
    private String mid;
    private String paymentMode;
    private String refundAmt;
    public String txnDate;
    private String authRefId;

}

private void proceedPaytmPayment(String paytmUrl, String mid, String orderID, String txnToken){
        PaytmOrder paytmOrder = new PaytmOrder(orderID, mid, txnToken, "2968.20", "https://securegw-stage.paytm.in/theia/paytmCallback?ORDER_ID="+orderID);
        TransactionManager transactionManager = new TransactionManager(paytmOrder, new PaytmPaymentTransactionCallback() {
            @Override
            public void onTransactionResponse(@Nullable Bundle bundle) {
                //TODO open checkout landing page
            }
            @Override
            public void networkNotAvailable() {
            }
            @Override
            public void onErrorProceed(String s) {
            }
            @Override
            public void clientAuthenticationFailed(String s) {
            }
            @Override
            public void someUIErrorOccurred(String s) {
            }
            @Override
            public void onErrorLoadingWebPage(int i, String s, String s1) {
            }
            @Override
            public void onBackPressedCancelTransaction() {
            }
            @Override
            public void onTransactionCancel(String s, Bundle bundle) {
            }
        });
        transactionManager.setAppInvokeEnabled(false);
        transactionManager.setEnableAssist(true);
        transactionManager.setShowPaymentUrl("https://securegw-stage.paytm.in/theia/api/v1/showPaymentPage");
        transactionManager.startTransaction(this,123);
    }

0

There are 0 answers