[英]how to set POST or GET value to filter in joomla 3.x custom component
[英]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的內容重定向到不同的視圖。
任何有關這方面的幫助將不勝感激!
所以我得到了一些睡眠,回到了這個新面孔,並意識到我做錯了一些事情。 我會把它們列在這里,因為其他人都會遇到同樣的問題。
option
和task
。 這是我的代碼現在的樣子:
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.