在移动商务迅猛发展和数字支付激增的当下,将支付网关集成到任何电子商务应用中显得尤为重要。目前,许多应用都需要具备支付网关功能,以便用户能够在应用内进行交易,购买商品或服务。虽然许多应用都在使用支付网关,但在Android应用中集成它们却是一项挑战。为了简化这一过程,PayU提供了一项服务,使我们能够快速将支付选项集成到应用中,并处理所有支付方式。本文将探讨我们如何将支付网关集成到Android应用:-www.deekpay.com
关于PayU
PayU是印度最受欢迎的支付网关之一,被大小企业广泛使用,以在线销售商品并快速收款。PayU印度为大型企业以及SMB/SME提供支付网关服务。PayU的Android SDK相对易于使用,我们将在本文的后续部分详细介绍。
Android集成
在进行以下博客内容之前,请确保您已安装并配置以下内容:
– Java Development Kit版本1.6或更高版本
– Android SDK
– Git客户端
– Eclipse / Android Studio
– PayU支付网关的先决条件(密钥、盐)
PayU的SDK可以用来创建以下两种类型的解决方案:
1. 非无缝集成:如果您不想设计自己的UI,可以使用这个模块。
2. 无缝集成:在这种情况下,您需要创建自己的用户界面来捕获财务数据,例如信用卡号码和CVV。
使用SDK内置UI进行非无缝集成
获取所有必要参数
创建一个PaymentParams对象,并使用其默认设置方法将所有接收到的参数放入其中,然后设置paymentHash的哈希值。
“`java
PaymentParams mPaymentParams = new PaymentParams();
mPaymentParams.setKey(“gtKFFx”);
mPaymentParams.setAmount(“15.0”);
mPaymentParams.setProductInfo(“Tshirt”);
mPaymentParams.setFirstName(“Guru”);
mPaymentParams.setEmail(“[email protected]”);
mPaymentParams.setTxnId(“0123479543689”);
mPaymentParams.setSurl(“https://payu.herokuapp.com/success”);
mPaymentParams.setFurl(“https://payu.herokuapp.com/failure”);
mPaymentParams.setUdf1(“udf1l”);
mPaymentParams.setUdf2(“udf2”);
mPaymentParams.setUdf3(“udf3”);
mPaymentParams.setUdf4(“udf4”);
mPaymentParams.setUdf5(“udf5”);
mPaymentParams.setHash(“your payment hash”);
“`
如果您不使用udf1-5,则无需设置它们。如果您不希望使用它们,电子邮件和姓名可以留空。
您必须提供用户凭证,以便商店用户卡功能可以工作:
“`java
mPaymentParams.setUserCredentials(“your key:user id”);
“`
对于优惠,使用:
“`java
mPaymentParams.setOfferKey(“your_offer_key”);
“`
对于其他支付默认参数(如电话等),使用:
“`java
mPaymentParams.setPhone(“your number”);
“`
使用您自己的服务器获取正确的哈希值。创建一个PayuHashes对象,并使用给定的默认设置方法来设置相关哈希值。
“`java
mPaymentParams.setHash(payuHashes.getPaymentHash());
“`
创建一个新的Intent,以PayUBaseActivity为目标,并完成以下步骤。
“`java
intent.putExtra(PayuConstants.ENV, PayuConstants.PRODUCTION_ENV);
intent.putExtra(PayuConstants.PAYMENT_DEFAULT_PARAMS, mPaymentParams);
intent.putExtra(PayuConstants.PAYU_HASHES, payuHashes);
“`
为了实现一键支付:
“`java
// 启用一键支付,以MOBILE为存储哈希的选项
intent.putExtra(PayuConstants.STORE_ONE_CLICK_HASH, PayuConstants.STORE_ONE_CLICK_HASH_MOBILE);
“`
或者:
“`java
// 启用一键支付,以MERCHANT SERVER为存储哈希的选项
intent.putExtra(PayuConstants.STORE_ONE_CLICK_HASH, PayuConstants.STORE_ONE_CLICK_HASH_SERVER);
“`
或者:
“`java
// 禁用一键支付
intent.putExtra(PayuConstants.STORE_ONE_CLICK_HASH, PayuConstants.STORE_ONE_CLICK_HASH_NONE);
“`
启动活动,其余交由PayU SDK处理。
“`java
startActivity(intent);
“`
使用自己的UI进行无缝集成
我们将仅考虑信用卡和网银交易作为无缝集成的示例。此方法可用于连接一键支付卡、商店卡、现金卡和PayU支付。
无缝信用卡/借记卡支付集成
创建一个PaymentParams对象,并使用默认设置方法填充所有接收到的参数,就像非无缝样式一样,并设置Hash为paymentHash。
“`java
mPaymentParams.setCardNumber(cardNumber);
mPaymentParams.setCardName(cardName);
mPaymentParams.setNameOnCard(cardName);
mPaymentParams.setExpiryMonth(expiryMonth); // MM
mPaymentParams.setExpiryYear(expiryYear); // YYYY
mPaymentParams.setCvv(cvv);
“`
为了实现一键支付:
“`java
// 存储一键支付哈希,传递1
mPaymentParams.setEnableOneClickPayment(1);
“`
或者:
“`java
// 否则传递0,或者根本不调用该方法
mPaymentParams.setEnableOneClickPayment(0);
“`
使用上述类型为PostData的PostData,创建一个PaymentPostParams对象。设置环境(测试或生产),建立Intent,然后启动PaymentsActivity活动。
“`java
PostData postData = new PaymentPostParams(mPaymentParams, PayuConstants.CC).getPaymentPostParams();
if (postData.getCode() == PayuErrors.NO_ERROR) {
// 启动webview
PayuConfig payuConfig = new PayuConfig();
payuConfig.setEnvironment(PayuConstants.PRODUCTION_ENV);
payuConfig.setData(postData.getResult());
Intent intent = new Intent(this, PaymentsActivity.class);
intent.putExtra(PayuConstants.PAYU_CONFIG, payuConfig);
startActivityForResult(intent, PayuConstants.PAYU_REQUEST_CODE);
} else {
// 出现错误
Toast.makeText(this, postData.getResult(), Toast.LENGTH_LONG).show();
}
“`
无缝网银集成
创建一个PaymentParams对象,并使用默认设置方法填充所有接收到的参数,就像非无缝样式一样,并设置Hash为paymentHash。将选定银行的bankCode(字符串)添加到之前定义的mPaymentParams中,使用您的spinner/list view适配器。
“`java
mPaymentParams.setBankCode(bankCode);
“`
通过创建类型为PostData的PaymentPostParams对象来启动PaymentsActivity。
“`java
PostData postData = new PaymentPostParams(mPaymentParams, PayuConstants.NB).getPaymentPostParams();
if (postData.getCode() == PayuErrors.NO_ERROR){
// 启动webview
PayuConfig payuConfig = new PayuConfig();
payuConfig.setEnvironment(PayuConstants.PRODUCTION_ENV);
payuConfig.setData(postData.getResult());
Intent intent = new Intent(this, PaymentsActivity.class);
intent.putExtra(PayuConstants.PAYU_CONFIG, payuConfig);
startActivityForResult(intent, PayuConstants.PAYU_REQUEST_CODE);
} else {
// 出现错误
Toast.makeText(this, postData.getResult(), Toast.LENGTH_LONG).show();
}
“`
PayU将为您提供测试配置,以开始集成过程,包括测试商户账户和测试信用卡详情,以便您了解整个交易流程。然后,SDK代码必须集成到您的应用程序中。在测试完成后,您应该准备好将您的应用指向PayU生产服务器,进行一些实际交易。
测试凭证
要启用更多日志,开始使用测试密钥和盐(针对测试服务器)。请使用以下测试账户(仅用于测试目的):
– 密钥:ktKFFx
– 盐:bDwWELix
测试卡信息:
– 持卡人姓名:Shefali Singh
– 卡号:2355 6756 9902 6654
– CVV:098
– 有效期:11/2023
输出
由于我们使用的是测试凭证,因此无法进行支付。您必须在PayU仪表板中激活您的应用程序并生成新的密钥,才能使您的支付生效。
这就是PayU Android应用集成的入门内容。祝您的集成顺利!