如何在Symfony 1.4&amp ;;中实现PayPal教义

时间:2011-01-19 21:07:32

标签: paypal symfony-1.4

我想在Symfony / Doctrine 1.4.8中使用PayPal,Express Checkout,当前的插件似乎都处于测试阶段,并且在实现方式上也有点过分。我可以按照PayPal提供的信息和代码的逻辑,虽然有些项目在Symfony中如何处理它们有点模糊。

任何类文件都可以,因为我创建了一个lib目录并重命名了这个类,并且这个实例化了。但是,我有一些简单的程序PHP文件,即expresscheckout.php,我不知道在哪里加载它,因为它似乎不适合模板。也许它会出现在行动中?

我不是在寻找一个逐行解决方案(但如果你有一个感觉自由),但实际上有一些关于元素去向的指针。正如我所说,我仍然在遭受一些Symfony失明的痛苦。

最后我会更好地实现一个简单的(可能的吗?)插件来处理这个或者将模块中的paypal项目分组?

1 个答案:

答案 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的所有必填字段