elendev/checkout-bundle

为paypal提供简单的结账工具

1.1.5 2015-01-27 08:48 UTC

This package is auto-updated.

Last update: 2024-09-09 13:39:40 UTC


README

包配置

Symfony 2配置 config.yml

如果您不想使用paypal结账服务,您可以删除paypal配置。其他可用的配置如下所示

elendev_checkout:
	paypal:
    	username: 'your_paypal_username'
    	password: 'your_paypal_password'
    	signature: 'your_paypal_signature'
    	use_sandbox: 'true/false'
    	currency: 'EUR/USD/..., optionnal, default : EUR'
    	page_style: 'saved pagestyle available on paypal website, optionnal'
    	header_image: 'image visible on top left, optionnal'
    	header_border_color: '6 char length color code (e.g. 888888), optionnal'
    	header_background_color: '6 char length color code (e.g. 777777), optionnal'
    	payment_page_background_color: '6 char length color code (e.g. 666666), optionnal'
    	brand_name: 'name visible on top of payment page, optionnal'

简单示例

本页解释了如何在简单控制器中使用ElendevCheckoutBundle。

简单实现示例这里您可以看到一个真正简单的实现示例

/**
 * @author Jonas Renaudot
 */
class OrderingController extends Controller {
 
	...

    public function doCheckoutAction($checkoutMethod){
 
        $command = ...; //instance of Elendev\CheckoutBundle\Command\Command
 
        $checkoutProvider = $this->get("elendev.checkout.service_provider")->getService($checkoutMethod);

        $result = $checkoutProvider->doCheckout($command);
 

    	if($result->getStatus() == CheckoutResult::STATUS_IN_PROGRESS){
        	return $result->getHttpResponse();
    	}else if($result->getStatus() == CheckoutResult::STATUS_CANCELED){
        	//Command canceled : return to the info page
        	$this->getRequest()->getSession()->setFlash("info", "Command canceled");
        	return new RedirectResponse($this->generateUrl("ordering.info"));
    	}else if($result->getStatus() == CheckoutResult::STATUS_ERROR){
        	//Error occured : return to the info page allowing user to chose an other payment method
        	$this->get('session')->setFlash("error", "An error occured, retry again please");
        	return new RedirectResponse($this->generateUrl("ordering.info"));
    	}else if($result->getStatus() == CheckoutResult::STATUS_SUCCESS){
        	//save current command and mark it as done
        	...
        	//go to confirmation page
        	return new RedirectResponse($this->generateUrl("ordering.confirmation"));
    	}
	}

    ...
}

创建一个新的服务类

这部分解释了如何向CheckoutServiceProvider添加一个新服务。这个服务将通过CheckoutServiceProvider->getService('id')方法可用。

  • 创建一个新的服务类要创建一个有效的服务类,您需要扩展Elendev\CheckoutBundle\CheckoutService类。您可以实现的最简单的结账服务如下所示

    namespace Your\Service\Namespace;

    use Elendev\CheckoutBundle\CheckoutService; use Elendev\CheckoutBundle\Command\Command; use Elendev\CheckoutBundle\CheckoutResult;

    class SimpleCheckoutService extends CheckoutService {

      /**
       * @param Command $command
      * @return CheckoutResult : result of checkout operations
     */
     public function doCheckout(Command $command){
       
          $result = new CheckoutResult();
    
          $result->setStatus(CheckoutResult::STATUS_SUCCESS);
      
          return $result;
      }
    

    }

    当您在返回的响应对象中返回`CheckoutResult::STATUS_IN_PROGRESS`状态时,在页面重新加载(或在当前页面上的重定向)时将再次调用doCheckout方法。

  • 配置一个新的服务将您的新结账服务作为带有elendev.checkout.service标签的简单服务添加。指定的id参数是您需要使用CheckoutServiceProvider->getService('id')方法获取服务的服务id。

    your.service.id: class : Your\Checkout\Service\Class tags : - {name : elendev.checkout.service, id: your_service_id}