我想在Symfony / Doctrine 1.4.8中使用PayPal,Express Checkout,当前的插件似乎都处于测试阶段,并且在实现方式上也有点过分。我可以按照PayPal提供的信息和代码的逻辑,虽然有些项目在Symfony中如何处理它们有点模糊。
任何类文件都可以,因为我创建了一个lib目录并重命名了这个类,并且这个实例化了。但是,我有一些简单的程序PHP文件,即expresscheckout.php,我不知道在哪里加载它,因为它似乎不适合模板。也许它会出现在行动中?
我不是在寻找一个逐行解决方案(但如果你有一个感觉自由),但实际上有一些关于元素去向的指针。正如我所说,我仍然在遭受一些Symfony失明的痛苦。
最后我会更好地实现一个简单的(可能的吗?)插件来处理这个或者将模块中的paypal项目分组?
答案 0 :(得分:0)
我所做的是写一个类,我称之为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,以及根据PaypalNvp API的所有必填字段