1. forget oxPaymentGateway::executePayment() - in your case you don't
need it at all;
2. make a module for order with these:
<?php
// set payment method as active
protected $_blActive = true;
// set Alertpay merchant name
protected $loginId = 'XXX';
// set Alertpay gateway URL
protected $gatewayUrl = 'https://www.alertpay.com/PayProcess.aspx';
protected function _getNextStep( $iSuccess )
{
// defining that everything was fine
if ( is_numeric( $iSuccess ) && $iSuccess > 0 && $iSuccess < 2 )
$oOrder = oxNew( 'oxorder' );
if ( $oOrder->load( $this->getOrderId() ) &&
$oOrder->oxorder__oxpaymenttype->value == 'alertpay' ) {
// your code goes here
$oCur = $this->getConfig()->getActShopCurrencyObject();
$formData = array(
'ap_purchasetype' => 'item-goods',
'ap_merchant' => $this->loginId,
'ap_currency' => $oCur->name,
'ap_quantity' => '1',
'ap_returnurl' =>
'http://oxid.localhost/index.php?cl=order&fnc=processalertPay&sid=' .
$this->getSession()->getId(),
'ap_itemname' => 'Shopping Cart',
'ap_description' =>
$this->getConfig()->getActiveShop()->oxshops__oxname->value,
'ap_amount' => $dAmount,
'ap_cancelurl' =>
'http://oxid.localhost/index.php?cl=payment&payerror=4&sid=' .
$this->getSession()->getId(),
'apc_1' => $this->getSession()->getId(),
);
oxUtils::getInstance()->redirect( $this->gatewayUrl .
http_build_query( $formData ) );
}
}
if ( $iSuccess === 'AlertPayOK' && $oOrder->load(
$this->getOrderId() ) ) {
// you load order here and set its status to OK
$oOrder->oxorder__oxtransstatus = new oxField(
"PAYMENT_OK" );
//saving
$oOrder->save();
// check code below
// means emailing succeded
$iSuccess = $oOrder->sendAlertPayEmails();
} elseif ( $iSuccess === 'AlertPayERROR' ) {
// you set this code to move user back to payment
selection page
// or you can simply return NULL and user will stay in
order confirmation page
$iSuccess = 2;
}
return parent::_getNextStep( $iSuccess );
}
public function processAlertPay()
{
// this function will be called when ap_returnurl will be
executed
// so now you can check response parameters and do all other
you need
// on success you set
$iSuccess = 'AlertPayOK';
// on error you set
$iSuccess = 'AlertPayERROR';
// set
// you will be redirected now where needed..
return $this->_getNextStep( $iSuccess )
}
public function getOrderId()
{
return oxSession::getVar( 'sess_challenge' );
}
?>
3. additionally you need to handle email sending -
oxOrder::_sendOrderByEmail(), and send emails only when everything
went file:
<?php
protected function _sendOrderByEmail( $oUser = null, $oBasket =
null, $oPayment = null )
{
if ( $this->oxorder__oxpaymenttype->value != 'alertpay') {
return parent::_sendOrderByEmail( $oUser, $oBasket,
$oPayment );
}
return 1;
}
public function sendAlertPayEmails()
{
...
return $this->_sendOrderByEmail( $oUser = null, $oBasket =
null, $oPayment = null )
}
4. I did not check the code, probably errors contain.. but the idea
should be clear! ;)
where should I send my paypal account data? :D
_______________________________________________
dev-general mailing list
[email protected]
http://dir.gmane.org/gmane.comp.php.oxid.general