我正在嘗試使用 MangoPay 注冊信用卡。
我已經安裝了mangopay/php-sdk-v2軟體包。
要注冊信用卡,需要三個步驟。
- 創建卡的令牌
- 明信片資訊(使用由令牌創建的 url)將呈現以開頭的字串
data= - 將注冊卡添加到MangoPay用戶
// ProfilController.php
/**
* @Route("/payment/{id}", name="payment")
* * @param int $id
*/
public function payment(Request $request, ApiUser $ApiUser, $id): Response
{
$returnUrl = "";
$user = $this->userRepository->findOneBy(['id' => $id]);
$userId = $user->getIdMangopay();
$registration = $ApiUser->Registration($userId);
if($request->request->count() > 0){
$payment = new PaymentMethod();
$payment->setName($request->request->get('name'));
$payment->setCardNumber($request->request->get('cardNumber'));
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($payment);
$entityManager->flush();
$registrationCard = $ApiUser->RegistrationCard($registration, $request);
$returnUrl = 'http' . (isset($_SERVER['HTTPS']) ? 's' : '') . '://' . $_SERVER['HTTP_HOST'];
$returnUrl .= '/profil';
}
return $this->render('home/payment.html.twig', [
'CardRegistrationUrl' => $registration->CardRegistrationURL,
'Data' => $registration->PreregistrationData,
'AccessKeyRef' => $registration->AccessKey,
'returnUrl' => $returnUrl,
]);
}
和Registration函式ResitrationCard來自ApiUser檔案:
// ApiUser.php
public function Registration($UserId)
{
$CardRegistration = new \MangoPay\CardRegistration();
$CardRegistration->UserId = $UserId;
$CardRegistration->Currency = "EUR";
$CardRegistration->CardType = "CB_VISA_MASTERCARD";
$Result = $this->mangoPayApi->CardRegistrations->Create($CardRegistration);
$this->registrationInfo = $Result;
$this->CardRegistrationUrl = $Result->CardRegistrationURL;
return $Result;
}
public function RegistrationCard($CardInfo)
{
$cardRegister = $this->mangoPayApi->CardRegistrations->Get($CardInfo->Id);
$cardRegister->RegistrationData = $_SERVER['QUERY'];
$updatedCardRegister = $this->mangoPayApi->CardRegistrations->Update($cardRegister);
return $Result;
}
我能夠創建卡的令牌并獲取data=字串,但問題是我無法完成最后一步。
似乎我無法進入if陳述句,所以它沒有在資料庫中注冊卡,我無法更新卡資訊(第 3 步)。
,returnUrl我可以簡單地將它放在if陳述句之外以使其作業,但我只想在表單有效時更改它。
我該如何修復該宣告?為什么不進入if?
uj5u.com熱心網友回復:
請嘗試使用 Symfony 的常規表單驗證程序,如果這有幫助,請告訴我。
為此,您需要為其自定義輸入名稱屬性以匹配支付 API 配置。
在您的型別類中:
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
// ...
->add('new-input-name-goes-here', TextType::class, [
'property_path' => '[data]'
]);
}
public function getBlockPrefix()
{
return '';
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/464032.html
