Paypal 结帐错误:“SSL 证书问题:无法获取本地颁发者证书”

我在前端(javascript)创建贝宝订单并获取 orderId 和 payerId:


createOrder: async (data, actions) => {

          const item = await this.fetchPaypalItem()

          return actions.order.create({

            purchase_units: [

              {

                description: item.description,

                amount: {

                  value: item.description,

                }

              }

            ]

          })

      },

我收到了我检查过的 orderId 和 payerId。在服务器端(Laravel),我正在使用官方库https://github.com/paypal/Checkout-PHP-SDK,当我尝试创建订单(来自 paypal 文档)时,出现错误,如下所示:


public function createOrder(Request $request){


        $request = new OrdersCreateRequest();

        $request->prefer('return=representation');

        $request->body = self::buildRequestBody();

       // 3. Call PayPal to set up a transaction

        $client = PayPalClient::client();

        $response = $client->execute($request);

        return response()->json($response);


}

我检查了一下,$client 对象是空对象。我正在检查我的凭据,但没有问题,因为它正在 javascript 上运行。


我更改了该官方库的 HttpClient 类中的一行: $curl->setOpt(CURLOPT_SSL_VERIFYPEER, true); => $curl->setOpt(CURLOPT_SSL_VERIFYPEER, false); 现在它正在工作,但我担心它不安全。有什么解决方案可以解决这个问题吗?这样安全吗?


ibeautiful
浏览 143回答 1
1回答

慕容森

这是curl_setopt($handle, CURLOPT_CAINFO, null) 的错误。它没有经过认证...在官方 sdk 中,我下载了 cacert.pem 文件并将其路径切换为 null,现在当 CURLOPT_SSL_VERIFYPEER 设置为 true 时可以正常工作。
打开App,查看更多内容
随时随地看视频慕课网APP