webformを使用して支払いを完了した後、条件付き郵便確認を送信する方法

私たちは、遅延支払いとオンライン支払いプロセッサのどちらかを選択できる投稿ウェブフォームを用意しています。

選択されたお支払い方法に応じて確認メールを送信します。繰り延べられた場合は、支払いを完了するための指示がメールに含まれていなければなりません。オンラインであれば、支払いが正常に完了した場合は、メールに感謝のメッセージが含まれている必要があります。

これを達成するための最良のアプローチは何ですか?電子メールフォームを使用している場合は、遅延支払方法が選択されている場合はフォームを送信するときにメールが送信されますが、支払方法ではなく支払い処理が開始される前にメールが送信されるため、コンプリート。

ベストアンサー

<?php

/**
 * Implementation of hook_civicrm_tokens
 */

function callhooks_civicrm_tokens( &$tokens ) {
  $tokens['contribution'] = array('contribution.last_total_amount', 'contribution.last_receive_date', 'contribution.last_financial_type', 'contribution.last_trxn_id');
}

function callhooks_civicrm_tokenValues( &$values, &$contactIDs, $job = null, $tokens = array(), $context = null) {

   //KG NOTES
   //Example from Lobo: https://civicrm.org/node/480
    if ( is_array( $contactIDs ) ) {
      $contactIDString = implode( ',', array_values( $contactIDs ) );
      $single = false;
    } else {
      $contactIDString = "( $contactIDs )";
      $single = true;
    }

 //Contribution tokens
  $query = "
SELECT id, contact_id, financial_type_id, total_amount, receive_date, trxn_id
FROM   civicrm_contribution
WHERE  contact_id IN ( $contactIDString )
AND    is_test = 0
ORDER BY receive_date DESC LIMIT 1
";

  $dao = CRM_Core_DAO::executeQuery( $query );
  while ( $dao->fetch( ) ) {
    if ( $single ) {
      $value =& $values;
    } else {
      if ( ! array_key_exists( $dao->contact_id, $values ) ) {
        $values[$dao->contact_id] = array( );
      }
      $value =& $values[$dao->contact_id];
    }

    $value['contribution.last_total_amount'] = $dao->total_amount;
    $value['contribution.last_receive_date'] = $dao->receive_date;
    $value['contribution.last_financial_type'] = $dao->financial_type_id;
    $value['contribution.last_trxn_id'] = $dao->trxn_id;

    $test = 1;
  }
}

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です