Las tiendas online son uno de los productos más usados en desarrollo web, pero suele ser lo que más dolores de cabeza da debido al pago por tarjeta de crédito. Afortunadamente, Paypal ofrece la posibilidad de pagar mediante tarjeta de crédito. Para ello, Paypal dispone de una API NVP muy cómoda de usar.
Para los usuarios de Codeigniter existe una librería que nos facilita toda la tarea. En el controlador primero debemos indicar el SetExpressCheckout que prepara la transacción. Cuando aceptemos el OK de la llamada se redireccionará a Paypal para que el usuario pueda realizar la compra, que devolverá la llamada a una URL nuestra y en ese caso, cogiendo los datos devueltos por Paypal podremos confirmar la transacción:
define('PAYPAL_URL', 'https://www.sandbox.paypal.com/webscr&cmd=_express-checkout&token=');
class Demo extends Controller {
function Demo()
{
parent::Controller();
}
function index() {
$this->paypal_api_lib->add_nvp('RETURNURL', 'http://servidor/demo/ok');
$this->paypal_api_lib->add_nvp('CANCELURL', 'http://servidor/demo/cancel');
$this->paypal_api_lib->add_nvp('NOSHIPPING', '0');
$this->paypal_api_lib->add_nvp('ALLOWNOTE', '1');
$this->paypal_api_lib->add_nvp('SOLUTIONTYPE', 'Sole'); // esto es lo que no obliga a que se tenga que tener cuenta Paypal
$this->paypal_api_lib->add_nvp('LANDINGPAGE', 'Billing');
$this->paypal_api_lib->add_nvp('AMT', '69.00');
$this->paypal_api_lib->add_nvp('NOSHIPPING', '2');
$this->paypal_api_lib->add_nvp('HDRIMG', 'http://servidor/logo.gif');
$this->paypal_api_lib->add_nvp('CURRENCYCODE', 'EUR');
$this->paypal_api_lib->add_nvp('L_NAME0', 'Librito');
$this->paypal_api_lib->add_nvp('L_AMT0', '59.00');
$this->load->library('session');
$sesion = array('paypalAmount'=>'69.00');
$this->session->set_userdata($sesion);
if($this->paypal_api_lib->send_api_call('SetExpressCheckout')){
if (strtoupper($this->paypal_api_lib->nvp_data["ACK"]) =="SUCCESS") {
$token = urldecode($this->paypal_api_lib->nvp_data["TOKEN"]);
$payPalURL = PAYPAL_URL.$token;
header("Location: ".$payPalURL);
exit();
}
}
paypal_errors();
}
function ok() {
$this->load->library('session');
$this->paypal_api_lib->add_nvp('TOKEN', $_REQUEST['token']);
$this->paypal_api_lib->add_nvp('PAYERID', $_REQUEST['PayerID']);
$this->paypal_api_lib->add_nvp('PAYMENTACTION', 'Sale');
$this->paypal_api_lib->add_nvp('AMT', $this->session->userdata('paypalAmount'));
$this->paypal_api_lib->add_nvp('CURRENCYCODE', 'EUR');
$this->paypal_api_lib->add_nvp('IPADDRESS', $_SERVER['SERVER_NAME']);
if($this->paypal_api_lib->send_api_call('DoExpressCheckoutPayment')) {
var_dump($this->paypal_api_lib->nvp_data);
} else {
paypal_errors();
}
}
}
CI PayPal NVP Library
Hola,
Parece que el filtro
posts_resultsya esta obsoleto, uno equivalente podrÃa serposts_request.Saludos!
Hola Francisco
Pues sinceramente, ni idea de si está obsoleto, yo me metà en el código de WP y vi que hacÃa uso de ese filtro.
Muchas gracias por el aviso, ¿dónde puedo ver que el filtro está obsoleto para la próxima?
Saludos
Qué tal,
Me dà cuenta que estaba depreciado porque no lo encontré en includes/query.php donde pensé que corresponde, tampoco esta en la documentación oficial de filtros y por último lo busqué en google y en otro repositorio de hooks encontré http://adambrown.info/p/wp_hooks/hook/posts_results
Me imagino que si no esta en la lista de filtros oficial, seguramente este depreciado y pronto a eliminarse, aunque yo buscarÃa directamente por el hook en cuestión para asegurarme.
Un saludo!
Me encanta la página que has pasado, nunca me acuerdo de meterla en “Marcadores” y me viene de perlas que me la hayas pasado 🙂
Gracias