Интеграция Paymaya в PHP - PullRequest
       10

Интеграция Paymaya в PHP

0 голосов
/ 15 мая 2018

я пытаюсь создать клиента в паймайе, используя curl в php. я следую этой документации

но он не возвращает правильный ответ (ничего не возвращает)

<?php
require_once(DIR_VENDOR . 'PayMaya-PHP-SDK-master/sample/autoload.php');

Class Paymaya {

    public function paymayaInit(){
        PayMayaSDK::getInstance()->initCheckout("pk-nRO7clSfJrojuRmShqRbihKPLdGeCnb9wiIWF8meJE9", "sk-jZK0i8yZ30ph8xQSWlNsF9AMWfGOd3BaxJjQ2CDCCZb", "SANDBOX");
    }

    public function createCustomer(){
        $this->paymayaInit();

        // $ch = curl_init("https://pg-sandbox.paymaya.com/payments/v1/customers");
        $ch = curl_init();

        curl_setopt($ch, CURLOPT_URL, "https://pg-sandbox.paymaya.com/payments/v1/customers");
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json", "Authorization: Basic c2stOWxSbUZUVjhCSWR4b1hXbTVsaURBbEtGMHlMNGdaendtRFFBbW52eFdPRjo="));

        curl_setopt($ch, CURLOPT_FAILONERROR, TRUE);

        $body = array(
                  "firstName" => "Ysa",
                  "middleName" => "Cruz",
                  "lastName" => "Santos",
                  "birthday" => "1987-10-10",
                  "sex" => "F",
                  "contact" => array(
                                    "phone" => "+63(2)1234567890",
                                    "email" => "ysadcsantos@gmail.com"
                                  ),
                  "billingAddress" => array(
                                    "line1" => "9F Robinsons Cybergate 3",
                                    "line2" => "Pioneer Street",
                                    "city" => "Mandaluyong City",
                                    "state" => "Metro Manila",
                                    "zipCode" => "12345",
                                    "countryCode" => "PH"
                                  ),
                  "metadata" => array()
                );

        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($body));
        $response = curl_exec($ch);
        curl_close($ch);

        // die(print_r($response));
        return json_decode($response);
    }

}

вот мой класс. кто-нибудь уже пробовал интегрировать паймайу в php? также я должен прокомментировать пространство имен в PayMayaSDK.php, чтобы иметь возможность использовать класс PayMayaSDK

1 Ответ

0 голосов
/ 15 мая 2018

Спасибо за ваши учетные данные, размещенные в вопросе Я сделал несколько запросов и обнаружил, что не так.

Прежде всего, я использовал curl_error($ch), чтобы выяснить, чтоошибка была.

Это The requested URL returned error: 400 Bad Request.

Проблема в том, что вы задали для Content-Type значение json, но отправляете запрос в кодировке URL.

Измените http_build_query на json_encode

<code>$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://pg-sandbox.paymaya.com/payments/v1/customers");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json", "Authorization: Basic c2stOWxSbUZUVjhCSWR4b1hXbTVsaURBbEtGMHlMNGdaendtRFFBbW52eFdPRjo="));

curl_setopt($ch, CURLOPT_FAILONERROR, TRUE);

$body = array(
    "firstName" => "Ysa",
    "middleName" => "Cruz",
    "lastName" => "Santos",
    "birthday" => "1987-10-10",
    "sex" => "F",
    "contact" => array(
        "phone" => "+63(2)1234567890",
        "email" => "ysadcsantos@gmail.com"
    ),
    "billingAddress" => array(
        "line1" => "9F Robinsons Cybergate 3",
        "line2" => "Pioneer Street",
        "city" => "Mandaluyong City",
        "state" => "Metro Manila",
        "zipCode" => "12345",
        "countryCode" => "PH"
    ),
    "metadata" => array()
);

curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($body));
$response = curl_exec($ch);
echo __FILE__."@".__LINE__."<pre>";
var_dump($response, curl_error($ch));
echo "
"; curl_close ($ ch);
...