Flutter CC-Avenue支付网关集成ft。PHP
#教程 #php #android #flutter

在当今的数字时代,企业不断寻求安全可靠的支付网关,以促进无缝交易。 CCAvenue是印度流行的支付网关,为在线业务提供了广泛的付款方式。在此博客中,我们将探讨如何使用PHP服务器将CCAVENAT集成到扑朔迷离的应用程序中。

注意:没有官方的SDK可用于扑波,因此我们将通过Flutter WebView进行集成。

先决条件:

我们开始之前,请确保您有以下要求:

  • 安装在您的机器上的Flutter SDK
  • 颤抖和php的基本知识
  • ccavenue商家帐户凭据

注意:CCAVENUE不允许在现场或测试模式下进行付款交易,直到您域名域/IP。对于白名单,您可以通过电子邮件发送电子邮件。

让我们了解交易如何通过CCAVNUE处理?

ccavenue有两个用于完成交易的阶段

image 1

  • 启动付款:在此步骤中,客户端将amountcurrency以及其他所需详细信息发送给服务器,而不是服务器将这些值加密到单个加密(让我们说enc_val)字符串)并将enc_valaccess_code发送给客户端。<<<<<<<<<<<<<<<<< /li>

注意:当您的CCAVENUE批准和白名单进行交易时,您可以从CCAVENAY获得关注access_codeworking_keymerchant_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&currency=INR

加密后,我们将获得像
的字符串

a5eed2d2a51358773bb1de741b0b2f1261308043c2a8f78bf59d9d3d5081f785792599d64876
220964ebdd1578ce633aae959b804f2b2d53cda3821baf5480b3a082ea89a0e6784af4fef98e0
54f3a5c78f0ec9e611a01dd7666e9903e6b5d62c7a11d8db869d665c0077a292cfa6aba80a1ab
a94882168ede009b2c3806a4b08c781e2e5a7d54411b5a288ff28d499bc9de
,将将客户重定向到此URL。
参数名称 描述 类型(长度)
商人ID 商人ID是CCAVENUE生成的唯一标识符。 数字
订购ID 该ID被商家使用来识别订单。确保您在每个请求中发送独特的ID。 CCAVENUE不会检查此订单ID的唯一性。因为它为商人发送的每个订单生成了唯一的付款参考号。 字母数字(30)
重定向url CCAVENUE将发布订单状态以及此URL的参数。 字母数字(100)
取消URL CCAVENUE如果客户在计费页面上取消交易。字母数字(100)
金额 订单金额 数字(12,2)
货币 您要处理交易的货币。
AED-阿拉伯酋长国Dirham
美元 - 美国美元
SAR -SAUDI AABIA RIYAL
INR印度卢比
SGD新加坡美元
GBP
GBP- Sterling
EUR欧元,欧元区的官方货币
字母(3)

注意:我们将在接下来的步骤中谈论cancel_urlredirect_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_valaccess_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
  1. isTesting(变量):

    • 描述:用于指示应用程序是在测试模式还是生产模式的布尔变量。
    • 类型:bool
  2. jsChannels(变量):

    • 描述:一组JavascriptChannel对象,该对象定义了可用于flutter应用程序和WebView之间的JavaScript通道。
    • 类型:Set<JavascriptChannel>
  3. initPayment(方法):

    • 描述:此方法负责通过指定金额向requestInitiateUrl提出HTTP POST请求来初始化付款。
    • 参数:
      • amount(类型:String):付款金额。
    • 返回:以JSON格式解决付款数据的未来对象。
    • 类型:Future<dynamic>
  4. onPageFinished(方法):

    • 描述:当WebView完成加载页面时,此方法被调用。
    • 参数:
      • url(类型:String):加载页面的URL。
    • 返回:void
    • 类型:void
  5. navigationDelegate(方法):

    • 描述:此方法用于根据请求的URL控制WebView的导航行为。
    • 参数:
      • nav(类型:NavigationRequest):导航请求对象,其中包含有关所请求URL的信息。
    • 返回:确定是否允许或阻止导航的NavigationDecision
    • 类型:NavigationDecision

meme1

源代码 :

Github Repo

跟着我