カスタムゲートウェイのヘルプが必要

私がコード能力が限られているので、私がばかばかしいように聞こえたら、私を許してください。それを言って、私はカスタム支払いのゲートウェイを設定することに問題がありました。

支払いゲートウェイでは、トランザクションステータスごとにリダイレクトURLを指定する必要があります(成功、失敗、キャンセル)。

問題は、注文が正常に処理されてデータベースに記録されるように、成功したトランザクションに指定するURLがわからないことです。

私は基本的に、既存の商人のファイルの1つから順応して、次のものを思いついた。

class Merchant_enets extends Merchant_driver
{
    const PROCESS_URL = 'https://www.enets.sg/enets2/enps.do';

    public function default_settings()
    {
        return array(
            'user_id' => '',
            'test_mode' => FALSE,
        );
    }

    public function purchase()
    {
        $request = $this->_build_purchase();
        $this->post_redirect($this->_process_url(), $request);
    }

    private function _build_purchase()
    {
        $request = array();
        $request['mid'] = $this->setting('user_id');
        $request['amount'] = $this->param('amount');
        $request['txnRef'] = $this->param('transaction_id');
        $request['umapiType'] = 'lite';
        return $request;
    }

    public function purchase_return()
    {
        $result = $this->CI->input->get_post('result');
        if (empty($result))
        {
            return new Merchant_response(Merchant_response::FAILED, lang('merchant_invalid_response'));
        }

       //validate response
        $request = new SimpleXMLElement('');
        $request->Response = $result;

        $response = $this->post_request(self::PROCESS_URL, $request->asXML());
        $xml = simplexml_load_string($response);

        if ((string)$xml->Success == '1')
        {
            if ((string)$xml->status == 'succ')
            {
                return new Merchant_response(Merchant_response::AUTHORIZED, (string)$xml->ResponseText, (string)$xml->txnRef);
            }
        }

        return new Merchant_response(Merchant_response::FAILED, (string)$xml->ResponseText, (string)$xml->txnRef);
    }   

    protected function _process_url()
    {
        return $this->setting('test_mode') ? self::PROCESS_URL_TEST : self::PROCESS_URL;
    }
}

助けてください!

私はEE 2.7とStore 1.6.5を使用しています

2

1 答え

リクエストごとに返品とキャンセルのURLを指定する必要があります。 Store v1では、次のURLを使用してこれらのURLを取得できます。

$this->param('return_url');//use this for success and error
$this->param('cancel_url');//use this for cancel

これがPayPal Expressのような他のゲートウェイでどのように行われているかを見ることができます:

https://github.com/expressodev/ci-merchant /blob/master/libraries/merchant/merchant_paypal_express.php

2
追加された
以前は何十ものゲートウェイを実装していたため、カスタム戻りURLは許可されていなかったので、これをもう一度確認する必要があります。そうでない場合は、カスタムGET/POSTパラメータを指定できますか?その場合、Storeで必要な正しいACTとHパラメータを返すようにハッキングすることができます。
追加された 著者 ESV,
私はあなたのサイトに戻りURLのカスタムPOSTパラメータを送り返すようゲートウェイに依頼することができますか? $ this-> param( 'return_url')を見ると、 ACT H パラメータが表示されます。 EEは正しいアクションをロードするために ACT パラメータを必要とし、ストアは H パラメータを使用してトランザクションを検索します。これらをGETまたはPOSTパラメータとして index.php ファイルに送ることができ、うまく動作するはずです。
追加された 著者 ESV,
こんにちはエイドリアン、返信ありがとう!支払いゲートウェイは、フォームから転記されたパラメータとしてURLを受け入れません。彼らはwww.mystore.com/products/successのような絶対URLを求めています。だから私はそれらを提供するURLが分からない
追加された 著者 Tim Lentine,
Adrianにもう一度感謝します。うん、ゲートウェイはPOSTパラメータを受け入れるので、正しいACTとHパラメータを返すためにハッキングする方法を教えてください。 (これらはどういうものなのかよく分かりません)参考資料はありますか?
追加された 著者 Tim Lentine,
ありがとうエイドリアン!あなたが何を言っているのか理解するのに私はしばらく時間をかけましたが、回答した別の投稿の助けを借りて(エクスプレッション・エンジン。スタックエクスチェンジ/クエスト/77737/… )。私たちの質問に答えるためにタイムアウトを取ってくれてありがとう!
追加された 著者 Tim Lentine,