在当今的数字时代,企业不断寻求安全可靠的支付网关,以促进无缝交易。 CCAvenue是印度流行的支付网关,为在线业务提供了广泛的付款方式。在此博客中,我们将探讨如何使用PHP服务器将CCAVENAT集成到扑朔迷离的应用程序中。
注意:没有官方的SDK可用于扑波,因此我们将通过Flutter WebView进行集成。
先决条件:
我们开始之前,请确保您有以下要求:
- 安装在您的机器上的Flutter SDK
- 颤抖和php的基本知识
- ccavenue商家帐户凭据
注意:CCAVENUE不允许在现场或测试模式下进行付款交易,直到您域名域/IP。对于白名单,您可以通过电子邮件发送电子邮件。
让我们了解交易如何通过CCAVNUE处理?
ccavenue有两个用于完成交易的阶段
-
启动付款:在此步骤中,客户端将
amount
和currency
以及其他所需详细信息发送给服务器,而不是服务器将这些值加密到单个加密(让我们说enc_val
)字符串)并将enc_val
和access_code
发送给客户端。<<<<<<<<<<<<<<<<< /li>
注意:当您的CCAVENUE批准和白名单进行交易时,您可以从CCAVENAY获得关注
access_code
,working_key
和merchant_id
。
- 生成enc_val:商人需要使用CCAvenue提供的加密工具加密以下一组参数(我们将使用php)
我们将加密以下字符串:
merchant_id=123&order_id=123456redirect_url=www.amazonaws.com/payment
/ccav_resp.phpcancel_url=www.amazonaws.com/payment/ccav_resp.phpamount=1.00¤cy=INR
加密后,我们将获得像
的字符串
a5eed2d2a51358773bb1de741b0b2f1261308043c2a8f78bf59d9d3d5081f785792599d64876
220964ebdd1578ce633aae959b804f2b2d53cda3821baf5480b3a082ea89a0e6784af4fef98e0
54f3a5c78f0ec9e611a01dd7666e9903e6b5d62c7a11d8db869d665c0077a292cfa6aba80a1ab
a94882168ede009b2c3806a4b08c781e2e5a7d54411b5a288ff28d499bc9de
参数名称 | 描述 | 类型(长度) |
---|---|---|
商人ID | 商人ID是CCAVENUE生成的唯一标识符。 | 数字 |
订购ID | 该ID被商家使用来识别订单。确保您在每个请求中发送独特的ID。 CCAVENUE不会检查此订单ID的唯一性。因为它为商人发送的每个订单生成了唯一的付款参考号。 | 字母数字(30) |
重定向url | CCAVENUE将发布订单状态以及此URL的参数。 | 字母数字(100) |
取消URL | CCAVENUE如果客户在计费页面上取消交易。 | ,将将客户重定向到此URL。字母数字(100) |
金额 | 订单金额 | 数字(12,2) |
货币 | 您要处理交易的货币。 AED-阿拉伯酋长国Dirham 美元 - 美国美元 SAR -SAUDI AABIA RIYAL INR印度卢比 SGD新加坡美元 GBP GBP- Sterling EUR欧元,欧元区的官方货币 |
字母(3) |
注意:我们将在接下来的步骤中谈论
cancel_url
和redirect_url
。
- WebView中的开始付款:您可以通过以下URL在WebView中开始付款
https://secure.ccavenue.com/transaction.do?command=initiateTransaction&encRequest=enc_val&access_code=access_code
测试的注意
-
响应处理程序:当用户完成付款时,如果失败或成功,CCAVENUE将使用POST请求将加密字符串发送给redirect_url或cancel_url。
-
redirect_url
:它是指服务器域/IP上托管的网页,必须由CCAvenue将其列入白色。本网页将在完成付款请求后处理必要的步骤,包括处理失败和成功方案。 -
cancel_url
:与redirect_url
类似,cancel_url
也托管在您的服务器域/IP上。但是,它专门处理用户取消付款的请求。
-
现在,我们将使用解密工具来解密CCAVENUE给出的字符串
付款完成后。
让我们开始集成(服务器端)
- 我们需要加密和解密功能来加密和解密请求。
创建crypto.php
并具有以下内容:
安装所需库:
sudo apt-get install php7.4-openssl
- 现在我们需要创建一个接受
POST
请求的页面,然后返回enc_val
和access_code
。
ccAvenueRequestHandler.php
注意:您可以根据需要编辑页面,但以后在flutter侧您需要JavaScript功能才能获得所需的结果。
- 我们还需要创建一个像上面的页面,该页面接受
POST
请求并返回解密数据。
ccavResponseHandler.php
注意:应通过白色域
https://your-domain/ccavResponseHandler.php
访问plow url 23。
集成在颤动(客户端)中:
- 在
pubspec.yaml
中添加以下
dependencies:
http: ^0.13.6
webview_flutter: ^2.0.6
html:
- Android配置:
build.gradle
(android/app)中的更改
android {
defaultConfig {
minSdkVersion 19
}
}
- 创建带有以下内容的付款处理程序屏幕:
假设
payment_screen.dart
:
-
isTesting
(变量):- 描述:用于指示应用程序是在测试模式还是生产模式的布尔变量。
- 类型:
bool
-
jsChannels
(变量):- 描述:一组
JavascriptChannel
对象,该对象定义了可用于flutter应用程序和WebView之间的JavaScript通道。 - 类型:
Set<JavascriptChannel>
- 描述:一组
-
initPayment
(方法):- 描述:此方法负责通过指定金额向
requestInitiateUrl
提出HTTP POST请求来初始化付款。 - 参数:
-
amount
(类型:String
):付款金额。
-
- 返回:以JSON格式解决付款数据的未来对象。
- 类型:
Future<dynamic>
- 描述:此方法负责通过指定金额向
-
onPageFinished
(方法):- 描述:当WebView完成加载页面时,此方法被调用。
- 参数:
-
url
(类型:String
):加载页面的URL。
-
- 返回:
void
- 类型:
void
-
navigationDelegate
(方法):- 描述:此方法用于根据请求的URL控制WebView的导航行为。
- 参数:
-
nav
(类型:NavigationRequest
):导航请求对象,其中包含有关所请求URL的信息。
-
- 返回:确定是否允许或阻止导航的
NavigationDecision
。 - 类型:
NavigationDecision