Как использовать платное Android-приложение PayTM с бэкэндом Django? - PullRequest
0 голосов
/ 24 июня 2019

Я интегрировал платежи PayTM в свое приложение для Android с бэкэндом Django.

Ранее для платежей мы использовали платеж Stripe.но теперь, когда мы переходим с чередования платежей на PayTM (из-за региональной доступности), вот несколько вопросов:

Нужно ли нам использовать библиотеку PayTM Django?Мы использовали Stripe платежи Django lib.ранее (pip install ..)

В Stripe мы использовали для отправки токена Stripe через POST Django, а после того, как Django аутентифицировал его по отношению к Stripe, мы получим json-ответ как успешный.

Этот json-ответ «успех» вызовет другие функции приложения для Android.

Согласно некоторым учебникам, чтобы интегрировать PayTM в приложение для Android, я загружаю файлы CHECKSUM на сервер (этот сервер не является бэкэндом Django, язагружен на веб-службу хостинга и только что получил URL-адрес, указывающий на файл контрольной суммы)

В настоящее время я получаю статус TXN_SUCCESS или такие ответы по транзакции PayTM выполнены успешно.

По сути, как я могу использовать платежи PayTMв приложении для Android только с Django в качестве бэкэнда?

 buttonPaytm.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (ContextCompat.checkSelfPermission(PaymentActivity.this, Manifest.permission.READ_SMS) != PackageManager.PERMISSION_GRANTED) {
                    ActivityCompat.requestPermissions(PaymentActivity.this, new String[]{Manifest.permission.READ_SMS, Manifest.permission.RECEIVE_SMS}, 101);
                }

                final String M_id = "Ulbgcl83114033677105";
                final String customer_id = UUID.randomUUID().toString().substring(0, 28);
                final String order_id = UUID.randomUUID().toString().substring(0, 28);
                String url = "http://paytmwingstest1.atwebpages.com/paytm/generateChecksum.php";
                final String callBackUrl = "https://pguat.paytm.com/paytmchecksum/paytmCallback.jsp";

                RequestQueue requestQueue = Volley.newRequestQueue(PaymentActivity.this);

                StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {


                        Toast.makeText(PaymentActivity.this, "onResponse", Toast.LENGTH_SHORT).show();
                        try {
                            JSONObject jsonObject = new JSONObject(response);

                            if (jsonObject.has("CHECKSUMHASH")) {

                                String CHECKSUMHASH = jsonObject.getString("CHECKSUMHASH");

                                PaytmPGService paytmPGService = PaytmPGService.getStagingService();

                                HashMap<String, String> paramMap = new HashMap<String, String>();
                                paramMap.put("MID", M_id);
                                paramMap.put("ORDER_ID", order_id);
                                paramMap.put("CUST_ID", customer_id);
                                paramMap.put("CHANNEL_ID", "WAP");
                                paramMap.put("TXN_AMOUNT", "200");
                                paramMap.put("WEBSITE", "WEBSTAGING");
                                paramMap.put("INDUSTRY_TYPE_ID", "Retail");
                                paramMap.put("CALLBACK_URL", callBackUrl);
                                paramMap.put("CHECKSUMHASH", CHECKSUMHASH);

                                final PaytmOrder order = new PaytmOrder(paramMap);

                                paytmPGService.initialize(order, null);
                                paytmPGService.startPaymentTransaction(PaymentActivity.this, true, true, new PaytmPaymentTransactionCallback() {
                                    @Override
                                    public void onTransactionResponse(Bundle inResponse) {

                                        Log.d(TAG, "onTransactionResponse: PaymentActivity: " + inResponse);


                                    }

                                    @Override
                                    public void networkNotAvailable() {

                                    }

                                    @Override
                                    public void clientAuthenticationFailed(String inErrorMessage) {

                                    }

                                    @Override
                                    public void someUIErrorOccurred(String inErrorMessage) {


                                    }

                                    @Override
                                    public void onErrorLoadingWebPage(int iniErrorCode, String
                                            inErrorMessage, String inFailingUrl) {

                                    }

                                    @Override
                                    public void onBackPressedCancelTransaction() {

                                    }

                                    @Override
                                    public void onTransactionCancel(String inErrorMessage, Bundle
                                            inResponse) {

                                    }
                                });

                            }

                        } catch (
                                JSONException e) {
                            e.printStackTrace();
                        }

                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {

                    }
                }) {
                    @Override
                    protected Map<String, String> getParams() throws AuthFailureError {
                        HashMap<String, String> paramMap = new HashMap<String, String>();
                        paramMap.put("MID", M_id);
                        paramMap.put("ORDER_ID", order_id);
                        paramMap.put("CUST_ID", customer_id);
                        paramMap.put("CHANNEL_ID", "WAP");
                        paramMap.put("TXN_AMOUNT", "200");
                        paramMap.put("WEBSITE", "WEBSTAGING");
                        paramMap.put("INDUSTRY_TYPE_ID", "Retail");
                        paramMap.put("CALLBACK_URL", callBackUrl);

                        return paramMap;
                    }
                };

                requestQueue.add(stringRequest);

...