首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Symfony 5-使用MangoPay注册信用卡的表单有问题

Symfony 5-使用MangoPay注册信用卡的表单有问题
EN

Stack Overflow用户
提问于 2022-04-21 09:59:50
回答 1查看 114关注 0票数 1

我正试着在MangoPay注册信用卡。

我已经安装了mangopay/php-sdk-v2软件包。

要注册信用卡,需要三个步骤。

data=

  • Add

  • 创建卡片

  • 明信片信息的令牌(使用令牌创建的url ),它将呈现一个以MangoPay用户

开头的字符串--注册卡

代码语言:javascript
复制
// 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,
            ]);
    }

RegistrationResitrationCard函数来自ApiUser文件:

代码语言:javascript
复制
// 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语句,因此它不会在数据库中注册卡片,也无法更新卡片信息(第三步)。

returnUrl,我可以简单地将它放在if语句之外以使其工作,但我只想在表单有效的情况下更改它。

我怎样才能修正这份声明?为什么它不进入if

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-22 22:02:24

请尝试使用Symfony的常规表单验证过程,并让我知道这是否有帮助。

要做到这一点,您需要为其自定义输入name属性以匹配payment配置。

在你的类型类中:

代码语言:javascript
复制
public function buildForm(FormBuilderInterface $builder, array $options): void
{
    $builder
        // ...
        ->add('new-input-name-goes-here', TextType::class, [
            'property_path' => '[data]'
        ]);
}
    
public function getBlockPrefix()
{
    return '';
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71952536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档