我正在尝试将柑橘支付网关集成到我用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是使用amount创建的,并且该代码是在控制器中编写的,但我必须从用户那里获取金额,就像应该在视图中一样。我无法在视图中创建securitySignature,因为它需要security_key,出于安全原因我无法在视图中写入。有没有办法从视图中我可以发送金额给控制器然后在控制器发出一个POST请求到formPostUrl也将我重定向到formPostUrl就像我们发出一个帖子请求,也重定向到该网址。
答案 0 :(得分:0)
尝试以下步骤
P.S:您可能需要将第二个请求的状态存储在日志或数据库中,以防万一,以便进行审计。
希望它有所帮助!