1

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 を使用して作成され、そのコードがコントローラーに記述されていることですが、ビューに表示される必要があるフォームのように、ユーザーから amount を取得する必要があります。セキュリティ上の理由でビューに書き込むことができない security_key が必要なため、ビューに securitySignature を作成できません。ビューからコントローラに金額を送信してから、コントローラで formPostUrl に POST リクエストを作成し、その URL にリダイレクトするポスト リクエストを作成するフォームと同じように、formPostUrl にリダイレクトする方法はありますか。

4

1 に答える 1

0

以下の手順を試してください。

  1. コントローラーで中間送信ハンドラーを作成する
  2. そこでUIパラメータを収集し、サーバー側/非表示のパラメータを追加します。
  3. UI フォームが新しい中間送信ハンドラーを指すようにする
  4. そこから curl を使用して呼び出しを支払いゲートウェイにリンクします (例: https://stackoverflow.com/a/5676572/1304559 )。

PS: 念のため、監査のために、2 番目の要求の状態をログやデータベースなどに保存する必要がある場合があります。

それが役に立てば幸い!

于 2016-05-03T06:36:31.677 に答える