2

PayumBundleを使用して、Stripe 支払いゲートウェイを symfony2 アプリケーションに統合しています。直接支払いを成功させることはできますが、定期的な支払いを作成することはできません。バンドルのドキュメントが非常に貧弱であるため。

私の質問は、PayumBundle または同様のものを使用して顧客に定期的な支払いを実装する方法です。

4

1 に答える 1

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() を使用するとチェックアウト支払いフォームが再び表示されるため、代わりに createToken() を使用したことですが、トランザクションのステータスが新しいという別の問題に直面しています。

于 2015-03-23T12:00:58.203 に答える