0

問題

リモート支払いWebサイトに正常に投稿していますが、同時に注文の詳細をデータベースに保存する必要があります

これはデータを送信するフォームであり、そのほとんどは構成に保存されています。

echo $this->Form->create(null, array('url' => Configure::read('Payment.strPurchaseURL'))); ?>

echo $this->Form->hidden('navigate', array(
    'name'  => 'navigate',
    'value' => ''
));
echo $this->Form->hidden('VPSProtocol', array(
    'name'  => 'VPSProtocol',
    'value' => Configure::read('Payment.strProtocol')
));
echo $this->Form->hidden('TxType', array(
    'name'  => 'TxType',
    'value' => Configure::read('Payment.strTransactionType')
));
echo $this->Form->hidden('Vendor', array(
    'name'  => 'Vendor',
    'value' => Configure::read('Payment.strVendorName')
));
echo $this->Form->hidden('Crypt', array(
    'name'  => 'Crypt',
    'value' => $encrypted
));
echo $this->Form->end(__('Proceed to payment'));

コントローラ

ビューのコントローラーの残りの部分は正しく機能しますが、投稿のアクションによってコントローラーから離れるため、このifステートメントが呼び出されることはありません。$post_data前のフォームによって生成されたセッションからのデータです。

    if ($this->request->is('post')) {
        $this->Order->create();
        if ($this->Order->save($post_data)) {
        ...

ロジックに欠陥があります

私のロジックに欠陥があることは知っていますが、私の調査ではコントローラーから投稿できないため、保存ボタンが機能するか、リモート投稿が機能することになります。

私は両方を行う必要がありますが、私はまだ良い方法に出くわしていません。うまくいけば、あなたの一人が私をまっすぐにすることができます。

どうもありがとう。

4

1 に答える 1

1

PHP cURLを使用して、目的を達成できるはずだと思います。注文を保存した後、セカンダリURLに対してPOSTリクエストを実行できます。テストされていない例を次に示します。

if ($this->request->is('post')) {
    $this->Order->create();
    if ($this->Order->save($post_data) {
        $url = 'http://domain.com/post.php';

        //url-ify the data for the POST
        $fields_string = http_build_query($post_data);

        //open connection
        $ch = curl_init();

        //set the url, number of POST vars, POST data
        curl_setopt($ch,CURLOPT_URL, $url);
        curl_setopt($ch,CURLOPT_POST, count($post_data));
        curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);

        //execute post
        $result = curl_exec($ch);

        //close connection
        curl_close($ch);
    }
}

あなたの最善の策は、cURLについていくつかの調査を行うことです:)

于 2012-12-06T14:39:10.237 に答える