【问题标题】:How to set payment details with store-api in shopware 6如何在 shopware 6 中使用 store-api 设置付款详情
【发布时间】:2021-12-02 04:16:42
【问题描述】:

我想将商店用品用作带有条纹支付提供商的无头商店。付款可以在商店用品中正常使用。

现在我只使用 api 测试订单步骤。最后一步是通过提供商处理付款(在这种情况下为条纹)。 在shopware documentation 中,它通过api 调用/store-api/handle-payment 处理。 有效载荷如下所示:

{
    "orderId": "string",
    "finishUrl": "string",
    "errorUrl": "string"
}

现在当我请求 api 时,我收到 500 错误消息:

未选择信用卡

我的问题是,如何通过这个 api 发送信用卡数据,以便 Stripe 可以处理付款。有没有人能解决这个问题?

【问题讨论】:

  • > 支付流程的详细信息可能因支付集成而异,并且可能需要调用其他操作或设置 webhook。不幸的是,文档 (docs.google.com/document/d/…) 或模块并未涵盖 API。您是否尝试联系他们的支持以获取更多信息?
  • 嘿@Alex,谢谢您的评论。我没有联系支持,但我发现了错误。也许条纹忘记了一小块。 Stripe 没有关注 api 密钥 paymentDetails 以及为什么它不起作用。当我确定完全解决了这个问题时,我想写一个完整的解决方案。
  • 嘿@DanielRichter,您找到可以解释的解决方案了吗?我也不知道要发送什么付款详情。
  • 嘿@Juju。是的,我找到了解决方案。请稍等几分钟。我想为这个问题创建一个答案。

标签: stripe-payments shopware


【解决方案1】:

在 Alex 的建议下,我找到了以下解决方案:

  1. 查找错误credit card not selected:仅当您尝试按 api 请求付款时才会发生这种情况。我发现的原因是,Stripe 将付款详细信息(信用卡 ID)保存在会话对象中。每个 api 您默认无权访问它,这就是为什么您会收到消息 credit card not selected

  2. 查看条带插件,尤其是在您的 PaymentMethods/Card/CardPaymentConfigurator 中。 我将以下内容放在配置方法中 46-62号线

    $requestDataBag = $stripePaymentContext;
    $paymentDetails = $requestDataBag->requestDataBag->get('paymentDetails');
    if(!null == $paymentDetails) {
         $card = $paymentDetails->get('creditCardId');
    } else {
         $card = null;
    }
    $selectedCard = $this->stripePaymentMethodSettings->getSelectedCard();
    if ($selectedCard || isset($selectedCard['id'])) {
        $selectedCard = $selectedCard['id'];
    } elseif ($card) {
         $selectedCard = $card;
    } else {
         throw PaymentIntentPaymentConfiguratorException::noCreditCardSelected();
    }
    
  3. 根据处理支付请求发送支付数据:

    let payload = {
         "orderId": event,
         "finishUrl": "https://www.myfinishurl.de",
         "errorUrl": "https://www.myurl.de/order/error",
         "paymentDetails": {
             "creditCardId": "creditcardid"
         }
    

现在为您需要的所有方法执行此操作。有用。也许 Stripe 可以在未来实现这一点。

【讨论】:

    【解决方案2】:

    您有以下选择:

    • 查看本地 API 文档 - 它可能比公共文档包含更多信息,因为它支持已安装的模块(请参阅 https://stackoverflow.com/a/67649883/288568

    • 请联系他们的支持人员以获取更多信息,因为 API 文档中未涵盖这些信息

    • 通过普通店面进行测试付款,并查看在浏览器开发工具的网络面板中发出的请求

    【讨论】:

      猜你喜欢
      • 2017-08-02
      • 2023-03-10
      • 2022-10-23
      • 2011-02-10
      • 2014-10-31
      • 2023-02-08
      • 2012-07-07
      • 2012-07-12
      • 1970-01-01
      相关资源
      最近更新 更多