【发布时间】:2020-12-21 16:05:52
【问题描述】:
我正在尝试根据此链接“https://developer.paytm.com/docs/v1/android-sdk/”实施 Paytm 网关,但在应用程序 webview 中打开,我卡在 Paytms 处理页面。下面是我用来尝试的演示代码。请帮忙,因为 Paytm 没有帮助。我没有遗漏任何参数,因为如果我删除/更改任何参数,它会在特定参数处显示错误。 首先,我在服务器上创建一个订单 ID,然后校验和然后调用 Paytm 服务。 使用相同校验和的同一件事在 PC 浏览器上运行,但在 android 上运行。
public class MainActivity extends AppCompatActivity {
APIinterface apiInterface;
String order_id,paytmschecksum;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_SMS) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_SMS, Manifest.permission.RECEIVE_SMS}, 101);
}
get_orderid();
}
public void get_orderid(){
apiInterface = APIClient.getClient().create(APIinterface.class);
Call<List<OrderID_response>> call = apiInterface.get_orderid("1","rxazcv89315285244163");
call.enqueue(new Callback<List<OrderID_response>>() {
@Override
public void onResponse(Call<List<OrderID_response>> call, Response<List<OrderID_response>> response) {
// Toast.makeText(LocationUpdateService.this, response.toString(), Toast.LENGTH_SHORT).show();
List<OrderID_response> details = response.body();
if(details!=null){
if(details.get(0).getResponse().equalsIgnoreCase("success")){
order_id = details.get(0).getUnique_id();
Log.d("Order Id :", order_id );
get_paytmchecksum();
}
}
}
@Override
public void onFailure(Call<List<OrderID_response>> call, Throwable t) {
Toast.makeText(MainActivity.this, "Failure:" +t, Toast.LENGTH_SHORT).show();
Log.d(TAG, "onFailure: "+t.toString());
}
});
}
// Checksum for paytm
public void get_paytmchecksum(){
apiInterface = APIClient.getClient().create(APIinterface.class);
Call<List<paytm_checksum_model>> call = apiInterface.get_paytmchecksum_temp("email@gmail.comm","7777777777","1",order_id,"100.00"); //100 is recharge amount change it after testing
call.enqueue(new Callback<List<paytm_checksum_model>>() {
@Override
public void onResponse(Call<List<paytm_checksum_model>> call, Response<List<paytm_checksum_model>> response) {
// Toast.makeText(LocationUpdateService.this, response.toString(), Toast.LENGTH_SHORT).show();
List<paytm_checksum_model> details = response.body();
if(details!=null){
paytmschecksum = details.get(0).getCheckSum();
Log.d("Checksum : ", paytmschecksum );
paytm();
}
}
@Override
public void onFailure(Call<List<paytm_checksum_model>> call, Throwable t) {
Toast.makeText(MainActivity.this, "Failure:" +t, Toast.LENGTH_SHORT).show();
Log.d(TAG, "onFailure: "+t.toString());
}
});
}
public void paytm(){
PaytmPGService Service = PaytmPGService.getStagingService("https://securegw-stage.paytm.in/order/process");
HashMap paramMap = new HashMap<>();
paramMap.put( "MID" , "rxazcv89315285244163"); //My mid will be here.
// Key in your staging and production MID available in your dashboard
paramMap.put( "ORDER_ID" , order_id);
paramMap.put( "CUST_ID" , "1");
// paramMap.put( "MOBILE_NO" , "7777777777");
// paramMap.put( "EMAIL" , "email@gmail.com");
paramMap.put( "CHANNEL_ID" , "WEB");
paramMap.put( "TXN_AMOUNT" , "100.00");
paramMap.put( "WEBSITE" , "WEBSTAGING");
// This is the staging value. Production value is available in your dashboard
paramMap.put( "INDUSTRY_TYPE_ID" , "Retail");
// This is the staging value. Production value is available in your dashboard
paramMap.put( "CALLBACK_URL", "https://pguat.paytm.com/paytmchecksum/paytmCallback.jsp");
paramMap.put( "CHECKSUMHASH" , paytmschecksum);
PaytmOrder Order = new PaytmOrder(paramMap);
Service.initialize(Order, null);
Service.startPaymentTransaction(MainActivity.this, true, true, new PaytmPaymentTransactionCallback() {
public void someUIErrorOccurred(String inErrorMessage) {}
public void networkNotAvailable() {
Toast.makeText(MainActivity.this, "Network connection error: Check your internet connectivity", Toast.LENGTH_LONG).show();
}
public void clientAuthenticationFailed(String inErrorMessage) {
Toast.makeText(MainActivity.this, "Authentication failed: Server error" + inErrorMessage.toString(), Toast.LENGTH_LONG).show();
}
public void onErrorLoadingWebPage(int iniErrorCode, String inErrorMessage, String inFailingUrl) {
Toast.makeText(MainActivity.this, "Unable to load webpage " + inErrorMessage.toString(), Toast.LENGTH_LONG).show();
}
public void onBackPressedCancelTransaction() {}
public void onTransactionCancel(String inErrorMessage, Bundle inResponse) {}
public void onTransactionResponse(Bundle inResponse) {
Toast.makeText(MainActivity.this, "Payment Transaction response " + inResponse.toString(), Toast.LENGTH_LONG).show();
}
});
}
}
【问题讨论】:
标签: android payment-gateway paytm