【问题标题】:How to solve SyntaxError: Unexpected token < in JSON at position 0 in Paypal checkout in Laravel如何解决 SyntaxError: Unexpected token < in JSON at position 0 in Paypal checkout in Laravel
【发布时间】:2022-01-13 01:11:17
【问题描述】:

我正在 Laravel 中进行 Paypal 集成。我使用 composer require srmklive/paypal 在这个项目中安装 srmklive/paypal 包。当我按下 PayPal 按钮时,我收到如下图所示的错误:

这是我的代码:

刀片文件中的代码:

paypal.Buttons({
        createOrder: function(data, actions) {
            return fetch('api/paypal/order/create/', {
                method: 'post',
                body:JSON.stringify({
                  "value":100
                })
            }).then(function(res) {
                return res.json();
            }).then(function(orderData) {
                return orderData.id;
            });
        },

        onApprove: function(data, actions) {
            return fetch('/api/paypal/order/capture/', {
                method: 'post',
                body: JSON.stringify({
                  orderID: data.orderID
                })
            }).then(function(res) {
                return res.json();
            }).then(function(orderData) {
                var errorDetail = Array.isArray(orderData.details) && orderData.details[0];

                if (errorDetail && errorDetail.issue === 'INSTRUMENT_DECLINED') {
                    return actions.restart(); 
                }

                if (errorDetail) {
                    var msg = 'Sorry, your transaction could not be processed.';
                    return alert(msg); // Show a failure message (try to avoid alerts in production environments)
                }
            });
        }

    }).render('#paypal-button-container');

paymentController 的代码:

class PaymentController extends Controller
{
   public function create(Request $request){
       $data = json_decode($request->getContent(), true);
       $provider = \PayPal::setProvider();
       $provider->setApiCredentials(config('paypal'));
       $token = $provider->getAccessToken();
       $provider->setAccessToken($token);

       $price = Plan::getSubscriptionPrice($data['value']);
       $description = Plan::getSubscriptionDescription($data['value']);


       $order = $provider->createOrder([
           "intent" => "CAPTURE",
           "purchase_units" => [
               [
                   "amount" => [
                       "currency_code" => "USD",
                       "value" => $price
                   ],
                   "description" => $description
               ]
           ]
       ]);
       return response()->json($order);
   }

   public function capture(Request $request) {
        $data = json_decode($request->getContent(), true);
        $orderId = $data['orderID'];

        $provider = \PayPal::setProvider();
        $provider->setApiCredentials(config('paypal'));
        $token = $provider->getAccessToken();
        $provider->setAccessToken($token);

        $result = $provider->capturePaymentOrder($orderId);
        return response()->json($result);
   }
}

有谁知道如何解决这个错误?提前致谢

【问题讨论】:

  • 检查您的网络选项卡以查看返回的状态代码(404、500、403 等)。此错误通常发生在响应为 HTML 时,例如 &lt;html ...&gt;Unexpected token &lt;&lt;html&gt; 标记的开头),例如错误屏幕或重定向等。
  • 感谢您的回复,网络标签返回404

标签: laravel paypal


【解决方案1】:

路由 api/paypal/order/create/ 正在返回/输出非 JSON 文本,例如 HTML 错误页面或以 HTML 标记开头的其他内容。

路由只能输出 JSON,并且必须包含来自 PayPal API 的有效id

【讨论】:

  • 感谢您的回复。我可以知道该怎么做吗?
  • 搜索适合您环境的编程指南和教程
猜你喜欢
  • 2018-04-28
  • 1970-01-01
  • 2017-12-15
  • 1970-01-01
  • 2021-09-30
  • 2021-03-02
  • 2022-01-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多