通过 API 在网站上创建的方形订单不会显示在仪表板上

Square orders create via API on website don't show on dashboard

我目前正在使用 square/connect-php-sdk createOrder 创建方形订单。

$api_config = new SquareConnect\Configuration();
$api_config->setAccessToken($access_token);
$api_config->setHost($host);
$api_client = new SquareConnect\ApiClient($api_config);
$apiInstance = new SquareConnect\Api\OrdersApi($api_client);
$orderRequest = new SquareConnect\Model\CreateOrderRequest();
$orderRequest->setIdempotencyKey(uniqid());
$order = new SquareConnect\Model\Order();
$money = new SquareConnect\Model\Money();
$money->setAmount(intval(500))
    ->setCurrency("USD");
$line_item = new SquareConnect\Model\OrderLineItem();
$line_item->setCatalogObjectId(<square item id>)
    ->setQuantity("1")
    ->setBasePriceMoney($money);
$line_items[] = $line_item;
$order->setLineItems($line_items);
$orderRequest->setOrder($order);
$result = $apiInstance->createOrder($location_id, $orderRequest);

这是我在本地存储的 returns 订单 ID(以及其他订单数据)。 然后我使用 Square Payment Form 处理信用卡:https://developer.squareup.com/docs/payment-form/payment-form-walkthrough

这给了我一个随机数,然后我将其与订单 ID 和价格一起发送。

$apiInstance = new SquareConnect\Api\PaymentsApi($api_client);
$paymentRequest = new SquareConnect\Model\CreatePaymentRequest();
$paymentRequest->setIdempotencyKey(uniqid());
$paymentRequest->setLocationId($location_id);
$money = new SquareConnect\Model\Money();
$money->setAmount(intval($total_cost))
    ->setCurrency("USD");
$paymentRequest->setAmountMoney($money);
$paymentRequest->setOrderId($sq_order_id);
$paymentRequest->setSourceId($nonce);
$result = $apiInstance->createPayment($paymentRequest);

这为我提供了一个付款 ID(以及其他付款数据)。 在 Square 控制面板上,我可以在交易部分看到交易,但控制面板的订单部分是空的。

我的问题是如何让它显示在“订单”部分?

为了让订单显示在您的控制面板中,您需要做两件事: 1. 支付订单(这部分好像是你做的) 2. 在 CreateOrder 请求中包含一个 fulfillments 参数:https://developer.squareup.com/docs/orders-api/order-ahead-usecase#add-fulfillment-information-to-make-a-pickup-order