2015-03-20 4 views
2

Я использую PayumBundle для интеграции шлюза оплаты полосы в мое приложение symfony2. Я могу создать успешный прямой платеж, однако я не могу создать повторяющийся. поскольку документация пакета очень бедна.Полоса оплаты шлюза создать повторяющийся платеж с использованием PayumBundle

Мой вопрос заключается в том, как внедрить периодическую оплату для клиента с использованием PayumBundle или любого подобного.

+0

Поддержка Периодической выплаты по полосе не добавляется в Payum. Я могу сделать это за вас или вы можете сделать это сами (отправьте PR (;). –

+0

Извините, что такое PR? – Dahab

+0

Извините, по PR Я имел в виду Pull Request. –

ответ

0

мне удается сделать небольшую комбинацию между PayumBundle & Stripe-PHP следующим образом:

/** 
* @Extra\Route(
* "/prepare_checkout", 
* name="mycom_stripe_prepare_checkout" 
*) 
* 
* @Extra\Template("MYCOMStripeBundle:PurchaseExamples:prepareCheckout.html.twig") 
*/ 
public function prepareCheckoutAction(Request $request) { 
    $paymentName = 'subscribe_guardia_via_stripe_checkout'; 

    $storage = $this->getPayum()->getStorage('MYCOM\PaymentBundle\Entity\PaymentDetails'); 

    /** @var $details PaymentDetails */ 
    $details = $storage->create(); 
    $details["amount"] = 85 * 100; 
    $details["currency"] = 'USD'; 
    $details["description"] = "Bi-Annual Subs."; 

    if ($request->isMethod('POST') && $request->request->get('stripeToken')) { 
     // create a new customer and assign a plan for him 
     \Stripe::setApiKey($this->container->getParameter('stripe.secret_key')); 
     $customer = \Stripe_Customer::create([ 
        'description' => 'amr samy', 
        'source' => $request->request->get('stripeToken'), 
        'plan' => 'C1', 
     ]); 

     $details["customer"] = $customer->id; 
     $storage->update($details); // presist the customer and the payment 


     $captureToken = $this->getTokenFactory()->createToken(
       $paymentName, $details, 'mycom_subscription_create_stripe_recurring_payment' 
     ); 

     return $this->redirect($captureToken->getTargetUrl()); 
    } 

    return array(
     'publishable_key' => $this->container->getParameter('stripe.publishable_key'), 
     'model' => $details, 
     'paymentName' => $paymentName 
    ); 
} 

Единственная проблема, я столкнулся, если использование createCaptureToken() он показывает Checkout Форма оплаты снова, поэтому я использовал createToken() вместо этого, однако, я получаю другую проблему, которая является статусом транзакции, является новой.

+0

Попробуйте сделать forward вместо $ this-> redirect ($ captureToken-> getTargetUrl()); Или сохранить stripeToken к деталям. –