【问题标题】:How to integrate citrus payment gateway in zend?如何在zend中集成citrus支付网关?
【发布时间】:2016-04-29 05:34:48
【问题描述】:

我正在尝试将 citrus 支付网关集成到我用 zend 编写的应用程序中。我正在使用柑橘旅馆结帐。我在控制器中生成签名,然后将这些值传递给查看表单的创建位置。 控制器代码:

$formPostUrl = "https://sandbox.citruspay.com/sslperf/your-vanityUrlPart";  
$secret_key = "xxxxxx"; // your secret key
$vanityUrl = "xxx"; // your vanity url
$merchantTxnId = uniqid(); 
$orderAmount = "1.00";
$currency = "INR";
$TransactionData= $vanityUrl.$orderAmount.$merchantTxnId.$currency;
$securitySignature = hash_hmac('sha1', $TransactionData, $secret_key); 
$data = [
    'formPostUrl' => $formPostUrl,
    'vanityUrl' => $vanityUrl,
    'merchantTxnId' => $merchantTxnId,
    'orderAmount' => $orderAmount,
    'currency' => $currency,
    'securitySignature' => $securitySignature,
    'returnUrl' => $this->hostName.'/'.'paymentResponse' 
]; 
return new ViewModel ( $data );

查看代码:

<form align="center" method="post" action="<?php echo $formPostUrl;?>">
    <input ng-model="amount" type="number"class="form-control" id="orderAmount" name="orderAmount" placeholder="Enter the amount here.." required min="1" />
    <input type="hidden" id="merchantTxnId" name="merchantTxnId" value="<?php echo $merchantTxnId;?>" />
    <input type="hidden" id="currency" name="currency" value="<?php echo $currency;?>" /> 
    <input type="hidden" name="returnUrl" value="<?php echo $returnUrl;?>" />
    <input type="hidden" id="secSignature"  name="secSignature" value="<?php echo $securitySignature;?>" />
    <input type="Submit" value="Pay Now"/>
</form>

但这里的问题是 securitySignature 是使用金额创建的,并且代码是在控制器中编写的,但我必须从用户那里获取金额,就像应该在视图中的表单一样。我无法在视图中创建securitySignature,因为它需要security_key,出于安全原因我无法在视图中写入。有什么方法可以从视图中发送数量到控制器,然后在控制器中向 formPostUrl 发出 POST 请求,该请求也将我重定向到 formPostUrl,就像在表单中我们发出一个也重定向到该 URL 的发布请求一样。

【问题讨论】:

    标签: php zend-framework2 payment-gateway citrus-pay


    【解决方案1】:

    试试下面的步骤,

    1. 在您的控制器上创建一个中间提交处理程序
    2. 在那里收集 UI 参数并在其上添加您的服务器端/隐藏参数。
    3. 将您的 UI 表单指向新的中间提交处理程序
    4. 使用 curl 从那里将呼叫链接到支付网关(例如:https://stackoverflow.com/a/5676572/1304559)。

    P.S:您可能需要将第二个请求的状态存储在日志或数据库中,以防万一,以供审核。

    希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-01
      • 2016-04-09
      • 1970-01-01
      • 2020-04-14
      • 2011-05-05
      • 2023-03-03
      相关资源
      最近更新 更多