Я написал класс PaypalNvp, назвал файл PaypalNvp.class.php, поместил его в папку / lib и поместил в функции для Nvp Ops.
Затем вы можетевыберите статический вызов функций (при необходимости измените функции класса) или инициализируйте класс и вызовите функции ...
Так что-то вроде:
PaypalNvp::doExpressCheckoutPaypment($token, $payer_id, $amount, $currency, $payment_action);
или
$paypal = new PaypalNvp();
$paypal->doExpressCheckoutPaypment($token, $payer_id, $amount, $currency, $payment_action);
Я не думаю, что есть определенный способ сказать, какой путь лучше ... Я сам использую последний метод.
В моем классе есть вспомогательная функция, которая выполняет финальныйоперация связи с Paypal:
protected function api($data = array())
{
if (empty($data) || !is_array($data)) return false;
// INIT
$data = array_merge($data, array(
'VERSION' => $this->VERSION,
'PWD' => $this->PASSWORD,
'USER' => $this->USERNAME,
'SIGNATURE' => $this->SIGNATURE
));
array_walk($data, array(&$this, 'urlencode_walk'));
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $this->getUrl() . '/nvp',
CURLOPT_VERBOSE => 1,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => http_build_query($data)
));
$response = curl_exec($curl);
if (curl_errno($curl)) {
curl_close($curl);
return false;
} else {
curl_close($curl);
return $this->deformatNVP($response);
}
}
Главное, что вам нужно запомнить, - это установить метод api, например SetExpressCheckout, и все необходимые поля в соответствии с API PaypalNvp