PHP 中的 Paymaya 集成

Paymaya integration in PHP

我正在尝试在 php 中使用 curl 在 paymaya 中创建客户。 我正在关注此文档 http://developers.paymaya.com.payment-vault.s3-website-ap-southeast-1.amazonaws.com/#card-vault-customers-post

但它没有返回正确的响应(它 returns 什么都没有)

<?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);
    }

}

这是我的class。 有没有人已经尝试过将 paymaya 集成到 php 中? 我还必须在 PayMayaSDK.php 中评论命名空间才能使用 PayMayaSDK class

感谢您在问题中发布的凭据我提出了一些请求并发现了错误。

首先,我使用 curl_error($ch) 找出错误所在。

The requested URL returned error: 400 Bad Request

问题是您将 Content-Type 设置为 json,但发送 URL 编码查询。

http_build_query更改为json_encode

$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 "</pre>";
curl_close($ch);