📜  paytm 支付网关 android studio (1)

📅  最后修改于: 2023-12-03 15:33:25.571000             🧑  作者: Mango

Paytm支付网关Android Studio

Paytm是印度一家著名的支付公司,它提供了支付网关的解决方案,包括提供多种支付方式和安全的支付服务。本文将介绍如何在Android Studio中集成Paytm支付网关。

前置要求

在开始开发之前,需要完成以下准备工作:

  • 在Paytm网站上注册新的商家帐户,并创建一个应用程序。
  • 确认您的应用程序包名称与Paytm应用程序包名称一致。
集成Paytm SDK

首先,您需要将Paytm SDK添加到您的项目中。您可以通过以下方式添加它:

1.打开Module级别build.gradle文件,并将以下依赖项添加到该文件中:

dependencies {
    implementation 'com.paytm:pgplussdk:1.3.3'
}

2.在使用Paytm SDK之前,必须在您的AndroidManifest.xml文件中添加以下权限:

<uses-permission android:name="android.permission.INTERNET"/>

3.您还需要在AndroidManifest.xml文件中添加以下元素:

<activity
    android:name="com.paytm.pgsdk.PaytmPGActivity"
    android:configChanges="keyboardHidden|orientation|keyboard"
    android:screenOrientation="portrait"
    android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
创建订单请求

在创建订单之前,您必须准备必要的数据来给Paytm提供:

  • 商家的帐户ID
  • 商家的密钥
  • 您的应用程序的包名称
  • 交易金额
  • 订单号
  • 客户ID
  • 客户邮箱
  • 客户手机号码
  • 回调URL
//商家的帐户ID和商家的密钥
String merchant_id = "merchant_id";
String merchant_key = "merchant_key";

//交易金额和订单号
String amount = "10";
String orderId = "order_id_" + System.currentTimeMillis();

//客户ID、客户邮箱、客户手机号码
String customerId = "customer_id";
String customerEmail = "customer_email";
String customerPhone = "customer_phone";

//回调URL
String callbackUrl = "https://securegw.paytm.in/theia/paytmCallback?ORDER_ID=" + orderId;

接下来,您需要使用这些数据来创建一个订单请求。

PaytmPGService service = PaytmPGService.getProductionService(); //或PaytmPGService.getStagingService(),如果您希望使用Paytm的测试环境,请使用该方法。

Map<String, String> paramMap = new HashMap<>();
//中文这里加了别名
paramMap.put("商户ID", merchant_id);
paramMap.put("订单ID", orderId);
paramMap.put("金额", amount);
paramMap.put("回调URL", callbackUrl);
paramMap.put("请求EXPIRY时间", "180");
paramMap.put("请求模式", "正式");
paramMap.put("流程类型", "默认");
paramMap.put("主题", "测试");
paramMap.put("商户密钥", merchant_key);
paramMap.put("渠道ID", "WAP");
paramMap.put("行业类型 ID", "Retail");
paramMap.put("网站", "APP_PAY");
paramMap.put("请求类型", "DEFAULT");
paramMap.put("客户ID", customerId);
paramMap.put("客户邮箱", customerEmail);
paramMap.put("客户手机号码", customerPhone);

PaytmOrder order = new PaytmOrder(paramMap);
service.initialize(order, null);

service.startPaymentTransaction(this, true, true, new PaytmPaymentTransactionCallback() {
    @Override
    public void onTransactionResponse(Bundle inResponse) {
        //处理订单支付结果
    }

    @Override
    public void networkNotAvailable() {
        //网络不可用
    }

    @Override
    public void clientAuthenticationFailed(String inErrorMessage) {
        //用户认证失败
    }

    @Override
    public void someUIErrorOccurred(String inErrorMessage) {
        //支付UI错误
    }

    @Override
    public void onErrorLoadingWebPage(int iniErrorCode, String inErrorMessage, String inFailingUrl) {
        //加载Web页面出错
    }

    @Override
    public void onBackPressedCancelTransaction() {
        //用户取消支付
    }

    @Override
    public void onTransactionCancel(String inErrorMessage, Bundle inResponse) {
        //订单取消
    }

});
处理订单支付结果

当用户完成Paytm支付时,Paytm将通过callbackURL发送响应,您需要在与callbackURL相同的活动中处理该响应,以便了解订单支付的结果。

Intent intent = getIntent();
Bundle bundle = intent.getExtras();
if (bundle != null) {
    for (String key : bundle.keySet()) {
        Log.d(TAG, key + " - " + bundle.getString(key));
    }
}

根据OrderStatus,您可以知道订单是否被支付。

String orderStatus = bundle.getString("STATUS");
if (orderStatus.equals("TXN_SUCCESS")) {
    //订单被支付
} else {
    //订单未被支付
}
总结

通过本文,您已经了解了如何使用Paytm支付网关SDK在Android Studio中实现支付。希望这篇文章能够帮助您在Paytm支付网关中继续开发。