私はOctoberCMSコンポーネントで作業していますが、動作に問題があります。このコードを見てください:
class Payment extends ComponentBase
{
/**
* This hold the amount with PayPal fee and discount applied and pass back to template
* @var float
*/
public $amountToReload;
public function onAmountChange()
{
$amount = post('amount');
if (empty($amount)) {
throw new \Exception(sprintf('Por favor introduzca un valor.'));
}
$this->amountToReload = round($amount - ($amount * (float) Settings::get('ppal_fee') - (float) Settings::get('ppal_discount')), 2);
return ['#amountToReload' => $this->amountToReload];
}
public function onRun()
{
$step = $this->param('step');
$sandboxMode = Settings::get('sandbox_enabled');
switch ($step) {
case "step2":
echo $this->amountToReload;
$params = [
'username' => $sandboxMode ? Settings::get('ppal_api_username_sandbox') : Settings::get('ppal_api_username'),
'password' => $sandboxMode ? Settings::get('ppal_api_password_sandbox') : Settings::get('ppal_api_password'),
'signature' => $sandboxMode ? Settings::get('ppal_api_signature_sandbox') : Settings::get('ppal_api_signature'),
'testMode' => $sandboxMode,
'amount' => $this->amountToReload,
'cancelUrl' => 'www.xyz.com/returnUrl', // should point to returnUrl method on this class
'returnUrl' => 'www.xyz.com/cancelUrl', // should point to cancelUrl method on this class
'currency' => 'USD'
];
$response = Omnipay::purchase($params)->send();
if ($response->isSuccessful()) {
// payment was successful: update database
print_r($response);
} elseif ($response->isRedirect()) {
// redirect to offsite payment gateway
return $response->getRedirectResponse();
} else {
// payment failed: display message to customer
echo $response->getMessage();
}
break;
default:
break;
}
$this->page['step'] = $step;
}
public function cancelPayment()
{
// handle payment cancel
}
}
$amountToReload
クラスの上に public として宣言された var があり、その値をメソッドに設定した場合はどうonAmountChange()
なりますか? 次に、onRun()
メソッドでは、この変数は設定値を保持すべきではありませんか? NULL または値なしで到着するのはなぜですか? 私は Symfony から来た Laravel の初心者です。クラス全体で問題なく使用できるように var 値を保持する最良の方法は何ですか?
この投稿の 2 番目の部分として、cancelPayment()
メソッドの有効なルートを生成する必要があります。これは次の行に続きます。
'returnUrl' => 'www.xyz.com/cancelUrl', // should point to cancelUrl method on this class
Laravelで、おそらくパラメーターを使用して有効なURLを作成するにはどうすればよいですか? URL ヘルパーを使用していますか? ルートを使用していますか? どれ?