簡體   English   中英

如何在Joomla 3.x組件中發布條帶支付表單

[英]How to post Stripe payment form in Joomla 3.x component

我正在嘗試將Stripe com_swa按鈕實現到我的自定義Joomla 3.x組件com_swa 我試圖通過Stripe的結賬來做到這一點。 我一直在Stripe文檔中關注這個例子 ,但是我在POST時遇到了麻煩。

這是我到目前為止的代碼:

com_swa /視圖/ ticketpurchase / TMPL /如default.php:

<form action="<?php echo JUri::root() .'index.php?option=com_swa&task=ticketpurchase.http_post' ?>" method="POST" >
    <script
        src="https://checkout.stripe.com/checkout.js" class="stripe-button"
        data-key="pk_test_eXamPleK3y"
        data-amount="<?php echo $item->price * 100 ?>"
        data-currency="GBP"
        data-label="Buy now!"
        data-name='SWA'
        data-description="Test description"
        data-image="https://stripe.com/img/documentation/checkout/marketplace.png"
        data-locale="auto"
        data-zip-code="true"
        data-email="<?php echo $this->user->email ?>" >
    </script>
</form>

com_swa /控制器/ ticketpurchase.php:

private function http_post() {

    JLog::add( "http_post called", JLog::INFO, 'com_swa' );

    $token  = $_POST['stripeToken'];
    $ammount = $_POST['data-amount'];
    $currency = $_POST['data-currency'];

    var_dump("Token: " . $token);

    $customer = \Stripe\Customer::create(array(
        'email' => $email,
        'source'  => $token
    ));

    $charge = \Stripe\Charge::create(array(
        'customer' => $customer->id,
        'amount'   => $ammount,
        'currency' => $currency
    ));

    var_dump("Charge: " . $charge);
    JLog::add('Charge: ' . $charge, JLog::INFO, 'com_swa');

}

但這只會導致500 - View not found [name, type, prefix]: home, html, swaView錯誤。 我檢查了日志文件,並且沒有指示已調用http_post()方法的日志。

現在我只想var_dump或記錄一些變量,但將來我會想要根據$ charge的內容重定向到不同的視圖。

任何有關這方面的幫助將不勝感激!

所以我得到了一些睡眠,回到了這個新面孔,並意識到我做錯了一些事情。 我會把它們列在這里,因為其他人都會遇到同樣的問題。

  1. 視圖中的表單沒有隱藏的輸入optiontask
  2. 我試圖在控制器中調用的函數是私有的,應該是公共的。

這是我的代碼現在的樣子:

com_swa /視圖/ ticketpurchase / TMPL /如default.php:

<form action="<?php echo JRoute::_('index.php?option=com_swa&task=ticketpurchase'); ?>" method="POST" >
    <input type="hidden" name="option" value="com_swa" />
    <input type="hidden" name="task" value="ticketpurchase.http_post" />
    <input type="hidden" name="ticketId" value="<?php echo $item->id ?>">
    <script
        src="https://checkout.stripe.com/checkout.js" class="stripe-button"
        data-key="pk_test_tDaDvORCWuyXb0VRIHtMStDR"
        data-amount="<?php echo $item->price * 100 ?>"
        data-currency="GBP"
        data-label="Buy now!"
        data-name="SWA"
        data-description="<?php echo $item->event_name . ' - ' . $item->ticket_name; ?>"
        data-image="https://stripe.com/img/documentation/checkout/marketplace.png"
        data-locale="auto"
        data-zip-code="true"
        data-email="<?php echo $this->user->email ?>" >
    </script>
</form>

com_swa /控制器/ ticketpurchase.php:

public function http_post() {

    JLog::add( "http_post called", JLog::INFO, 'com_swa' );

    $token = $this->input->getString('stripeToken');
    $email = $this->input->getString('stripeEmail');
    $ticketId = $this->input->getString('ticketId');

    $model = $this->getModel('ticketpurchase');
    $tickets = $model->getItems();
    $member = $model->getMember();

    $ticket = null;
    foreach ($tickets as $t) {
        if ($t->id == $ticketId) {
            $ticket = $t;
            break;
        }
    }

    if ($ticket != null) {
        try {
            $charge = \Stripe\Charge::create(array(
                'description' => $ticket->event_name . ' - ' . $ticket->ticket_name,
                'amount' => $ticket->price * 100,
                'currency' => 'GBP',
                'receipt_email' => $email,
                'source' => $token,
                'metadata' => array(
                    'ticket_id' => $ticket->id,
                    'member_id' => $member->id
                    )
            ));
            var_dump("Charge: " . $charge);
            JLog::add('Charge: ' . $charge, JLog::INFO, 'com_swa');

        } catch (\Stripe\Error\Base $e) {
            var_dump($e);
        }
    } else {
        // can't find ticketId in items.
    }
    die();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM