echo $form["jotag"]->getValue();
    echo $form["jotag"]->render();
    echo $form["confirm_jotag"]->render();
    ?>
</td>
		  	</tr>
		  	<tr>
		  		<td><b><?php 
    echo $form["duration"]->renderLabel();
    ?>
:</b></td>
		  		<td><?php 
    echo $form["duration"]->getValue();
    ?>
 <?php 
    echo PaymentPeer::getYearString($form["duration"]->getValue(), false);
    echo $form["duration"]->render();
    ?>
</td>
		  	</tr>
		  	<tr>
		  		<td><b><?php 
    echo __("Price");
    ?>
:</b></td>
		  		<td><?php 
    echo sprintf(OptionPeer::retrieveOption('CURRENCY_FORMAT'), $form["duration"]->getValue() * OptionPeer::retrieveOption('BUY_PRICE'));
    ?>
</td>
		  	</tr>
		    <tr>
示例#2
0
 public function executeIPN($request)
 {
     // rebuild post parameters to send back to paypal
     $req = "";
     foreach ($_POST as $var => $value) {
         $req .= "&{$var}=" . urlencode(stripslashes($value));
     }
     // get transaction info
     $paymentStatus = $request->getParameter('payment_status');
     $transNum = $request->getParameter('txn_id');
     $type = $request->getParameter('custom');
     $paymentId = $request->getParameter('invoice');
     $totalAmount = $request->getParameter('mc_gross');
     $test_ipn = $request->getParameter('test_ipn');
     if ($test_ipn && OptionPeer::retrieveOption('PAYPAL_MODE') == 'L') {
         die('fail');
     }
     // we are NOT in sandbox
     // send back to paypal
     $ch = @curl_init();
     @curl_setopt($ch, CURLOPT_POST, 1);
     @curl_setopt($ch, CURLOPT_URL, OptionPeer::retrieveOption('PAYPAL_MODE') != 'L' ? "https://www.sandbox.paypal.com/cgi-bin/webscr" : "https://www.paypal.com/cgi-bin/webscr");
     @curl_setopt($ch, CURLOPT_POSTFIELDS, "cmd=_notify-validate" . $req);
     @curl_setopt($ch, CURLOPT_TIMEOUT, 20);
     @curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
     @curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
     @curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
     $result = @curl_exec($ch);
     @curl_close($ch);
     if ($result != "VERIFIED") {
         //can't verify the POST information, most likely fraudulent so exit.
         die('fail');
     }
     // locate payment
     $payment = PaymentPeer::getFromField(PaymentPeer::ID, $paymentId);
     if (!$payment || !in_array($payment->getStatus(), array(PaymentPeer::ST_NEW, PaymentPeer::ST_PENDING))) {
         // tried to process an already paid order, or a cancelled one.. if not paid, alert
         // staff
         if ($payment && $payment->getStatus() != PaymentPeer::ST_PAID) {
             Mailer::sendEmail(OptionPeer::retrieveOption('ADMIN_EMAIL'), 'paymentError', array('payment' => $payment, 'reason' => 'CANCELLED'));
         }
         die('fail');
     }
     // check if transNum is UNIQUE
     $c = new Criteria();
     $c->add(PaymentPeer::REFERENCE, $transNum);
     $c->add(PaymentPeer::METHOD, PaymentPeer::PT_PAYPAL);
     $p = PaymentPeer::doSelectOne($c);
     if ($p && $p->getId() != $payment->getId()) {
         die('fail');
     }
     // duplicated transaction
     $payment->setMethod(PaymentPeer::PT_PAYPAL);
     $payment->setReference($transNum);
     //    if($type == "RENEW") $payment->setType(PaymentPeer::PT_RENEW);
     //    else $payment->setType(PaymentPeer::PT_NEW);
     switch ($paymentStatus) {
         case "Completed":
             // check if value matches
             if ((double) $payment->getAmount() != (double) $totalAmount) {
                 $payment->setStatus(PaymentPeer::ST_ERROR_NOTIFY);
                 $payment->save();
             } else {
                 if (!$payment->getTag()) {
                     $jotag = new Tag();
                     $jotag->setJotag($payment->getJotag());
                     $jotag->setStatus(TagPeer::ST_NEW);
                     $jotag->setUser($payment->getUser());
                     $jotag->setIsPrimary(false);
                 } else {
                     $jotag = $payment->getTag();
                 }
                 // calculate new expiration date
                 $jotag->setValidUntil($jotag->calcNewDate($payment->getDuration()));
                 // try to save new jotag
                 try {
                     $jotag->setStatus(TagPeer::ST_ACTIVE);
                     $jotag->save();
                 } catch (PropelException $e) {
                     // failed to save  jotag, probably due to duplicated jotag (race condition)
                     // we must mark it as ERROR and contact user
                     $payment->setStatus(PaymentPeer::ST_ERROR_NOTIFY);
                     $jotag = null;
                 }
                 if ($jotag) {
                     // everything OK
                     $payment->setTag($jotag);
                     $payment->setJotag('');
                     $payment->setStatus(PaymentPeer::ST_PAID);
                     // remove from interest list
                     $payment->getUser()->delInterest($jotag->getJotag());
                 }
                 $payment->save();
             }
             // send emails
             if ($payment->getStatus() == PaymentPeer::ST_PAID) {
                 // payment processed, notify customer
                 Mailer::sendEmail($payment->getUser()->getPrimaryEmail(), 'paymentConfirmation', array('payment' => $payment), $payment->getUser()->getPreferedLanguage());
             } else {
                 // payment processed, but there was an error creating/updating JoTAG, notify merchant
                 $reason = (double) $payment->getAmount() != (double) $totalAmount ? 'AMMOUNT' : 'DBERROR';
                 Mailer::sendEmail(OptionPeer::retrieveOption('ADMIN_EMAIL'), 'paymentError', array('payment' => $payment, 'reason' => $reason));
             }
             break;
         case "Pending":
             $payment->setStatus(PaymentPeer::ST_PENDING);
             $payment->save();
             break;
         case "Failed":
             $payment->setStatus(PaymentPeer::ST_FAILED);
             $payment->save();
             break;
     }
     return sfView::HEADER_ONLY;
 }
echo $payment->getId();
?>
<br/>
PayPal Reference: <?php 
echo $payment->getReference();
?>
<br/> 
Jotag: <?php 
echo $payment->getTag() ? $payment->getTag()->getJotag() : $payment->getJotag();
?>
<br/> 
Duration: <?php 
echo $payment->getDuration();
?>
 <?php 
echo PaymentPeer::getYearString($payment->getDuration(), false);
?>
<br/>
Order Total: <?php 
echo sprintf(OptionPeer::retrieveOption('CURRENCY_FORMAT'), $payment->getAmount());
?>
<br/> 
User: <?php 
echo $payment->getUser();
?>
<br/>
User Email: <?php 
echo $payment->getUser()->getPrimaryEmail();
?>
<br/> 
Reason: <?php 
示例#4
0
<?php

require_once dirname(__FILE__) . '/../config/ProjectConfiguration.class.php';
$configuration = ProjectConfiguration::getApplicationConfiguration('frontend', 'prod', false);
// initialize instance
sfContext::createInstance($configuration);
// set default TIMEZONE
$tz = OptionPeer::retrieveOption('TIMEZONE');
if ($tz) {
    date_default_timezone_set($tz);
}
$c = new Criteria();
$expiration_age = OptionPeer::retrieveOption('BUY_NEW_ORDER_LIFETIME');
$c->add(PaymentPeer::CREATED_AT, time() - $expiration_age, Criteria::LESS_EQUAL);
$c->add(PaymentPeer::STATUS, PaymentPeer::ST_NEW);
$payments = PaymentPeer::doSelect($c);
if ($payments) {
    foreach ((array) $payments as $payment) {
        $payment->setStatus(PaymentPeer::ST_CANCELLED);
        $payment->save();
    }
}