Square API - недопустимый символ 'C', ищущий начало значения - PullRequest
0 голосов
/ 27 июня 2018

Я использую API-интерфейс Square Charge, и ниже приводится объект запроса для тестовой карты -

enter image description here

Я использую предоставленный Square клиент PHP для подключения к API. И я получаю следующий ответ для конечной точки "Charge" -

[HTTP/1.1 400 Bad Request] {"errors":[{"category":"INVALID_REQUEST_ERROR","code":"BAD_REQUEST","detail":"invalid character 'C' looking for beginning of value (line 1, character 1)"}]}

Ниже приведен мой код в PHP -

public function chargeCustomerCard($userId, $custId, $cardId, $note, $billingAddres, $amount, $idempotencyKey){
        $billingAddrRequest = array("address_line_1" => $billingAddres->addr1, "address_line_2" => $billingAddres->addr2, "locality" => $billingAddres->city, "administrative_district_level_1" => $billingAddres->state, "postal_code" => $billingAddres->zip, "country" => $billingAddres->country);
        $billingAddressReq = new \SquareConnect\Model\Address($billingAddrRequest);
        $moneyRequest = array("amount" => $amount, "currency" => "USD");
        $money = new \SquareConnect\Model\Money($moneyRequest);
        $request = array("idempotency_key" => $idempotencyKey, "customer_id" => $custId, "customer_card_id" => $cardId, "delay_capture" => false, "amount_money" => $money, "billing_address" => $billingAddressReq, "note" => $note, "reference_id" => $userId);
        $charge = new \SquareConnect\Model\ChargeRequest($request);
        $response = null;

        try{
            $charge_api = new \SquareConnect\Api\TransactionsApi();
            $response = $charge_api->charge($this->authtoken, $this->locationId, $charge);
            if($response != null && count($response->getErrors()) == 0){
                $transaction = $response->getTransaction();
                $data = array();
                $data['transactionId'] = $transaction->getId();
                $data['created'] = $transaction->getCreatedAt();
                $data['referenceId'] = $transaction->getReferenceId();  //this should be equal to userid
                $tender = $transaction->getTenders()[0];    
                $data['tenderId'] = $tender->getId();
                $data['note'] = $tender->getNote();
                $data['amount'] = ($tender->getAmountMoney()->getAmount())/100;
                $data['currency'] = $tender->getAmountMoney()->getCurrency();
                $processingFee = $tender->getProcessingFeeMoney();
                if(isset($processingFee) && !empty($processingFee)){
                    $data['processingFee'] = $tender->getProcessingFeeMoney()->getAmount();
                }else{
                    $data['processingFee'] = 0;
                }
                $data['tendertype'] = $tender->getType();
                $data['cardStatus'] = $tender->getCardDetails()->getStatus();
                $data['cardBrand'] = $tender->getCardDetails()->getCard()->getCardBrand();
                $data['cardLast4'] = $tender->getCardDetails()->getCard()->getLast4();
                $data['idempotencyKey'] = $idempotencyKey;
                $data['customerPayId'] = $custId;
                $data['customerCardId'] = $cardId;
                return $this->generateReturnData(PAY_API_SUCCESS, '', $data);
            }else{
                return $this->generateReturnData(PAY_API_FAIL, '', $response->getErrors());
            }
        }catch(Exception  $e) {
            return $e->getMessage();
        }
    }

Может кто-нибудь, пожалуйста, укажите мне, что я здесь делаю неправильно. Я действительно застрял здесь. Другие конечные точки API работают нормально, такие как Создание клиента, Создание конечных точек API карты клиента, используя тот же подход и тот же PHP-клиент, предоставленный квадратом.

PS - это в песочнице

...