Я интегрировал платежи 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);