1

私の質問は流行に見えるかもしれませんが、私はそれについて困難に直面しています..

関数コードの一部は

 public function capture(Varien_Object $payment, $amount){

            if(!$this->isEnabled()){
                return parent::capture($payment, $amount);
            }else{
    ---- MORE CODE--
    $quote = Mage::getSingleton('customer/session');
        $nickname = $quote->getAuthorizenetNickname();
        $profile = $quote->getProfile();
        $postedNickname = $quote->getNickname();

        if ($payment->getCcTransId()) {
        $payment->setAnetTransType(self::REQUEST_TYPE_PRIOR_AUTH_CAPTURE);
        } else {
        $payment->setAnetTransType(self::REQUEST_TYPE_AUTH_CAPTURE);
        }

        $payment->setAmount($amount);

        $request= $this->_buildRequest($payment);
        $result = $this->_postRequest($request);

        MORE CODE HERE, NOT RELEVENT TO MY ISSUE    

ここで2つの質問があります

トランザクション ID を渡す方法

$payment->setAmount($amount);   
$request= $this->_buildRequest($payment);
$result = $this->_postRequest($request);

2番目の質問は

渡されたトランザクションIDの値をエコー/デバッグするにはどうすればよいですか

あなたにとってはとても簡単かもしれませんが、私は失敗しています

これまでに試した

$payment->setTransID($payment->gerOrder->getTransID());   
and 
$payment->gerOrder->getTransID()
$payment->setAmount($amount);   
$request= $this->_buildRequest($payment);

あなたの助けとガイドラインをありがとう

4

2 に答える 2

8

私は以前にこの問題を経験しました、そしてここに私の発見があります:)

支払いには関係がありますが、トランザクションとはまったく異なります。

支払オブジェクトは、注文合計に関する完全な情報(割引、総計、キャンセル、出荷など...)を保持します。

トランザクションは、たとえば支払いゲートウェイからの場合(txn_idparent_txn_id-親トランスがある場合-など)に関連する情報のみを保持するため、支払額/残額/キャンセル/出荷額などから離れることはありません。

  • 支払いはトランザクションと1対多の関係にあります(したがって、トランザクションIDを設定することはできません)支払いにlast_trans_idを設定するか、クレジットカードトランザクションの場合(1回限り)このフィールドを設定して使用できますcc_trans_id言い換えると方法トランザクションを支払いに割り当てるには、次のようにする必要があります。-
    • 注文に割り当てられた新しい支払いオブジェクトを作成し、すべてのデータなどを保存します(または、支払いゲートウェイから戻ってきた場合は、注文/見積もりをロードして支払いオブジェクトを取得します$order->getPayment();
    • トランザクションオブジェクトを作成して、その支払いIDや注文IDなどに割り当てます。次に保存します。
    • last_trans_id支払対象に 割り当てて保存します!
    • 次に、その支払いオブジェクトを使用して注文を保存するか、その注文にすでに割り当てられている支払いオブジェクトを保存します。

これがお役に立てば幸いです:)

支払いにトランザクションを追加するために私が行った支払い統合の例のコードを見つけてください

    /**
 * Creates Transactions for directlink activities
 *
 * @param Mage_Sales_Model_Order $order
 * @param int $transactionID - persistent transaction id
 * @param int $subPayID - identifier for each transaction
 * @param array $arrInformation - add dynamic data
 * @param string $typename - name for the transaction exp.: refund
 * @param string $comment - order comment
 * 
 * @return Cashu_Helper_DirectLink $this
 */
public function directLinkTransact($order,$transactionID, $subPayID,
    $arrInformation = array(), $typename, $comment, $closed = 0)
{
    $payment = $order->getPayment();
    $payment->setTransactionId($transactionID."/".$subPayID);
    $transaction = $payment->addTransaction($typename, null, false, $comment);
    $transaction->setParentTxnId($transactionID);
    $transaction->setIsClosed($closed);
    $transaction->setAdditionalInformation("arrI    nfo", serialize($arrInformation));
    $transaction->save();
    $order->save();
    return $this;
}
于 2013-01-26T10:18:54.743 に答える