Giter Club home page Giter Club logo

checkout-sdk-php's People

Contributors

a-ibarra avatar abdelrahman-iaaly-cko avatar alfie-loakes-cko avatar aquila-freitas-cko avatar armando-rodriguez-cko avatar armandojaleo avatar david-fiaty-cko avatar ioan-ghisoi avatar ioan-ghisoi-cko avatar jjclane avatar martinseco avatar miguel-estrada-cko avatar mruz avatar nicolas-maalouf-cko avatar parkhomenko-pp avatar rsaestrela avatar shiuh-yaw avatar syed-hasnain-cko avatar toooni avatar vitse avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

checkout-sdk-php's Issues

Untested broken code was merged

#57 was merged with some broken changes,

public function refund(Refund $refund, $mode = HttpHandler::MODE_EXECUTE)
    {
        $response = $this->requestAPI($refund->getEndpoint())
            ->setBody($refund->getValues());
            ->setBody($refund->getValues())
            ->setIdempotencyKey($payment->getIdempotencyKey());
        return $this->response($response, Refund::QUALIFIED_NAME, $mode, $refund->id);
    }

setIdempotencyKey is passed parameter $payments which is undefined, should be $refund, same errors in void() and capture() methods

Sdk Error

i got this while trying to use the refund code.

TypeError: Argument 1 passed to Checkout\Controllers\PaymentController::refund() must be an instance of Checkout\Models\Payments\Refund, string given, called in /var/www/html/app/Http/Controllers/Pay.php on line 108 in file /var/www/html/vendor/checkout/checkoutsdkphp/src/Controllers/PaymentController.php on line 82

this is my code

$secretKey = '***'; $checkout = new CheckoutApi($secretKey); $payment = new Refund($request->id); // Partial capture: $payment->amount = 999; $refund = $checkout->payments()->refund($request->id);

Exemple to set Phone and Shipping Address to a payment

Hi,
I try to set the Phone and The Shipping Address, but i'm doing wrong i suppose.
The API is not so amazing about this as well.

I did something like this for the phone but doesn't work

$customerPhone = new \Checkout\Models\Phone();
$customerPhone->number = $phone;
$payment->shipping = new \stdClass();
$payment->shipping->phone = $customerPhone;

And i have no idea for the address.

Thanks

Constructor Sandbox Parameter is misleading

The second argument of the CheckoutApi constructor is pretty misleading as PHP developers would generally expect -1 to be equivalent to false, or at least definitely not the same as true ;).

$api = new CheckoutApi('<secret_key>'); // sandbox mode
$api = new CheckoutApi('<secret_key>', true); // sandbox mode
$api = new CheckoutApi('<secret_key>', -1); // sandbox mode
$api = new CheckoutApi('<secret_key>', false); // production mode

finding issue to generate tokens by using test debit cards

$checkout = new CheckoutApi($secretKey);
$card = new Card('4543 4740 0224 9996', 10, 2025);
$card->cvv = 100;
$token = $checkout->tokens()->request($card);

Fatal error: Uncaught exception 'Checkout\Library\Exceptions\CheckoutHttpException' with message 'The endpoint did not accept the request. (Code: 401)' in /home/bmain/public_html/GameOfTrades_11284/checkout-lib/src/Library/HttpHandler.php:327

TokenSource() function issue

hello,
I have installed checkut-SDK in my Laravel application but I am stuck with the TokenSource. In my scenario, the User submits a request to book the home I have to save user card details and use them when the admin accepts the request. Please see the following line where I need to put CardToken, mostly this token is being created from JS, but in my case I can't use the JS. I want to fetch data from DB and send request from the controller. In simple words, I cannot use Frames here in my scenario.

$method = new TokenSource('tok_rn3njn7dnbrefbu23zhbqqjeay');

Anyone, please suggest the solution for that, I badly need this.

Unable to capture payments through code

Following the example here: https://github.com/checkout/checkout-sdk-php/wiki/2.-Payments

I tried below code but it fails with Response Code 404 The endpoint did not accept your request:


$additionalInformation = $payment->getAdditionalInformation();
            $invoiceId = $this->invoiceOrder->execute($orderId, false, $items, true);
            $invoice = $this->invoice->load($invoiceId);
            $storeCode = $this->storeManager->getStore($order->getStoreId())->getCode();
            $secretKey = $this->checkoutcomConfig->getValue('secret_key', null, $storeCode);

            $checkout = new CheckoutApi($secretKey);
            $payment = new \Checkout\Models\Payments\Capture($additionalInformation['transaction_info']['source']['id']);
            $payment->amount = $invoice->getGrandTotal();
            $capture = $checkout->payments()->capture($payment);

I also tried below which says invalid Request endpoint did not accept:

$data = [
                'methodId' => $paymentMethod,
                'cardBin' => $additionalInformation['transaction_info']['source']['bin'],
                'saveCard' => false,
                'source' => $paymentMethod,
                'cardToken' => $additionalInformation['transaction_info']['source']['fingerprint']
            ];

            $this->methodHandler
                ->get($paymentMethod)
                ->sendPaymentRequest(
                    $data,
                    $invoice->getGrandTotal(),
                    $order->getOrderCurrencyCode(),
                    $order->getIncrementId()
                );

Also tried below method which gives same error Endpoint did not accept request Error Code 400:

```

        $method = new \Checkout\Models\Payments\IdSource($additionalInformation['transaction_info']['source']['id']);
        $payment = new \Checkout\Models\Payments\Payment($method, $order->getOrderCurrencyCode());
        $payment->capture = true;
        $payment->amount = $invoice->getGrandTotal();
        $response = $checkout->payments()->request($payment);
Please let us know how we can capture partial payments programmatically. 

Capture and Refund doesn't return amount

Hi,

It's not a big deal, but I noticed that when I create a payment and later I capture it and refund, both objects doesn't contain information about amount. When I check actions informations about amount are present

object(Checkout\Models\Response)#412 (2) { ["list"]=> array(3) { [0]=> object(Checkout\Models\Payments\Action)#374 (7) { ["id"]=> string(30) "act_hv4ewmdkvqwendhxstriktubhq" ["type"]=> string(6) "Refund" ["processed_on"]=> string(20) "2019-07-04T13:06:52Z" ["amount"]=> int(12345) ["approved"]=> bool(true) ["response_code"]=> string(5) "10000" ["response_summary"]=> string(8) "Approved" } [1]=> object(Checkout\Models\Payments\Action)#827 (8) { ["id"]=> string(30) "act_hi525gy7wscuhamnhwn7lacx7i" ["type"]=> string(7) "Capture" ["processed_on"]=> string(20) "2019-07-04T13:06:50Z" ["amount"]=> int(12345) ["approved"]=> bool(true) ["response_code"]=> string(5) "10000" ["response_summary"]=> string(8) "Approved" ["processing"]=> array(2) { ["acquirer_transaction_id"]=> string(10) "8138434673" ["acquirer_reference_number"]=> string(12) "000111280834" } } [2]=> object(Checkout\Models\Payments\Action)#414 (9) { ["id"]=> string(30) "act_le7hsxg37boehpksrupde5geju" ["type"]=> string(13) "Authorization" ["processed_on"]=> string(20) "2019-07-04T13:06:48Z" ["amount"]=> int(12345) ["approved"]=> bool(true) ["auth_code"]=> string(6) "078839" ["response_code"]=> string(5) "10000" ["response_summary"]=> string(8) "Approved" ["processing"]=> array(2) { ["acquirer_transaction_id"]=> string(10) "8138434669" ["retrieval_reference_number"]=> string(12) "000078839029" } } } ["http_code"]=> int(200) }

Here is Refund
object(Checkout\Models\Payments\Refund)#793 (7) { ["id"]=> string(30) "pay_le7hsxg37boehpksrupde5geju" ["amount"]=> NULL ["reference"]=> string(0) "" ["metadata"]=> object(Checkout\Models\Payments\Metadata)#798 (0) { } ["action_id"]=> string(30) "act_hv4ewmdkvqwendhxstriktubhq" ["_links"]=> array(1) { ["payment"]=> array(1) { ["href"]=> string(72) "https://api.sandbox.checkout.com/payments/pay_le7hsxg37boehpksrupde5geju" } } ["http_code"]=> int(202) }

Here is Capture
`
object(Checkout\Models\Payments\Capture)#799 (7) {
["id"]=>
string(30) "pay_le7hsxg37boehpksrupde5geju"
["amount"]=>
NULL
["reference"]=>
string(0) ""
["metadata"]=>
object(Checkout\Models\Payments\Metadata)#453 (0) {
}
["action_id"]=>
string(30) "act_hi525gy7wscuhamnhwn7lacx7i"
["_links"]=>
array(1) {
["payment"]=>
array(1) {
["href"]=>
string(72) "https://api.sandbox.checkout.com/payments/pay_le7hsxg37boehpksrupde5geju"
}
}
["http_code"]=>
int(202)
}

`

Best regards,
Michal

How can i create customers and add payment meathods

Hi, I was just checking the PHP sdk and I'm unable to find the API for how can i create a customer while creating a payment and how can i add multiple payment source(i.e. multiple cards) to a single customer using this sdk.

Thanks

Notice: Undefined variable: paymentToken...

Hi there!

I'm facing an issue while trying to proccess the credit card payment. I made a vardump in my procces payment file and I got this error:

Notice: Undefined variable: paymentToken in /home/my_domain_name/process_checkout.php on line 8
NULL

The funny thing is that this code is working perfectly on the other domain but when I copied the code to another domain it gives me the error mentioned above. I've changed the API keys of course...

I'm using PHP SDK and the both domains are on sandbox still.

Could anyone help please?

Thanks!

chckout
chckout-token-edited

Error handling and validation

I have read all the wiki, but error handling and validation is not covered.
Currently I am using this snippet. I don't like it, because it contains two different catch blocks and a check after all of it. The biggest problem is that I can't tell to the user what is wrong with a form if $response->isSuccessful() is not successful, because $response->getErrors() is always empty.

$method = new \Checkout\Models\Payments\TokenSource($request->get('token'));
$payment = new \Checkout\Models\Payments\Payment($method, $order->product_currency);
$payment->amount = bcmul($order->product_price, 100);
$payment->reference = $order->id;
try {
     /** @var Payment $response */
     $response = $checkoutApi->payments()->request($payment);
} catch (CheckoutHttpException $e) {
            throw ValidationException::withMessages(['payment_method' => $e->getErrors() ?: [$e->getMessage()]]);
} catch (CheckoutModelException $e) {
            throw ValidationException::withMessages(['payment_method' => [$e->getMessage()]]);
}
if (!$response->isSuccessful()) {
            throw ValidationException::withMessages(['payment_method' => $response->getErrors() ?: ['Invalid card data']]);
}
$order->status = Order::STATUS_APPROVED;

Why is class CheckoutApi final?

Hi,
we want implement Reconciliation and use checkout api, but it is not possible right now, because CheckoutApi is final.
Please set methods final, not whole class.

Thanks

payment using stored card

Hi,

I'm unable to pay using a stored card due to a token_invalid error.

I'm storing the card by sending the customer details on the first transaction:

$checkout = new CheckoutApi(...);

$method = new TokenSource($token);
		
// Prepare the payment parameters
$payment = new Payment($method, 'GBP');
$payment->amount = 100;
		
$customer = new CustomerSource($email);
		
$response = $checkout->payments()->request($payment);

The initial payment works and I can see the email associated in the hub. I'm storing the resulting card source token e.g.:

$stored_token = $response ->source['scheme']; // src_...

The second cardholder initiated transaction is as follows:

$checkout = new CheckoutApi(...);

$method = new TokenSource($stored_token);
$method->source = 'stored'; // I'm assuming this is correct after reading the docs
		
// Prepare the payment parameters
$payment = new Payment($method, 'GBP');
$payment->amount = 100;
		
$customer = new CustomerSource($email);
		
$response = $checkout->payments()->request($payment); // fails with token_invalid error

Warning: Invalid argument supplied for foreach()

Hi,

I'm working on integration of Checkout.com in our project. While trying to fetch a list of events I noticed this bug

`In Event.php line 88:

[Symfony\Component\Debug\Exception\ContextErrorException]
Warning: Invalid argument supplied for foreach()

Exception trace:
() at /home/michal/projects/somtel-api/vendor/checkout/checkout-sdk-php/src/Models/Events/Event.php:88
Checkout\Models\Events\Event::create() at /home/michal/projects/somtel-api/vendor/checkout/checkout-sdk-php/src/Library/Model.php:95
Checkout\Library\Model::arrayToModel() at /home/michal/projects/somtel-api/vendor/checkout/checkout-sdk-php/src/Models/Events/Event.php:108
Checkout\Models\Events\Event::arrayToModel() at /home/michal/projects/somtel-api/vendor/checkout/checkout-sdk-php/src/Library/Model.php:84
Checkout\Library\Model::load() at /home/michal/projects/somtel-api/vendor/checkout/checkout-sdk-php/src/Library/Controller.php:93
Checkout\Library\Controller->response() at /home/michal/projects/somtel-api/vendor/checkout/checkout-sdk-php/src/Controllers/EventController.php:94
Checkout\Controllers\EventController->retrieve() at /home/michal/projects/somtel-api/src/RemitBundle/Service/CheckoutComService.php:60
`

I guess it's related to a fact that we might not have any events yet.

Best regards,
Michal

Getting a "server_api_not_allowed" Error

Just starting to use this package in a Laravel project, used composer to install it, and added a payment function for it

$secretKey = 'sk_test_111';
$checkout = new CheckoutApi($secretKey);
$method = new CardSource('5436031030606378', 12, 2024);
$method->cvv = '257';
$payment = new CkPayment($method, 'GBP');
$payment->capture = false;
$payment->amount = 1000;
try {
    $checkout->payments()->request($payment);
} catch (CheckoutHttpException $e) {
    dd($e);
    return false;
}

I keep getting this error

Checkout\Library\Exceptions\CheckoutHttpException {#312 ▼
  #body: "{"request_id":"111","error_type":"processing_error","error_codes":["server_api_not_allowed"]}"
  #errors: array:1 [▶]
  #message: "The endpoint did not accept the request. (Code: 500)"
  #code: 500
  #file: "/home/vagrant/xyz/vendor/checkout/checkout-sdk-php/src/Library/HttpHandler.php"
  #line: 327
  trace: {▶}
}

Checkout_SDK

Environment

  • Checkout SDK version:
  • Platform and version:
  • Operating System and version:

Description

Proposed Solution

  • I may be able to implement this feature

Checkout classic Api support

Hi
I would like to know if this package supports checkout's classic api also or just support checkout's v2 apis

Thanks

CheckoutApi class cannot be extended

The CheckoutApi class is final, and therefor cannot be extended.

This is a problem for Unit Tests, because we need to mock this class.

If that is not a problem, I suggest to remove the final attribute from the CheckoutApi class.

isPending() usage in Details request

The isPending() function as defined in the Payment.php relies on the http status code to be 202

public function isPending()
{
return $this->getCode() === 202;
}

However this model is used in the response to the Details API here:

public function details($id, $mode = HttpHandler::MODE_EXECUTE)
{
$details = new Details($id);
$response = $this->requestAPI($details->getEndpoint());
return $this->response($response, Payment::QUALIFIED_NAME, $mode);
}

I had a case where a merchant was relying on that function and had some unexpected issues, considering the result of isPending() as an answer to if the payment status itself is Pending.

Would it be a good idea to do a different model to parse the Details API response?

Regarding Mada payments

Hey!
Just out of curiosity, should I manage Mada payments outside of this package?
In another words can this package implement Mada payments?

The only thing I see different from other payment methods is that Mada require the following:

  • A check against a fairly small list of BINs - the bank identification number (BIN) - using the first six digits of the card.
  • Enforce 3ds.enabled to true & metadata.udf1 to mada.
  • Lastly, capture or capture_on should be omitted from the request since mada only support purchases and refunds (no authorization or void).

I thought about adding a new payment within Models/Payments, but I have never used this package before nor have I checked the code deeply.
Therefore, the real question is does the payments that extend Models/Payments/Payment can customize or manipulate the request in anyway?

If so, I think I can integrate Mada after looking into the code a little more!
To be honest, I asked this because if it would require too much work I would prefer not to use the package and try to build a simple solution using Guzzle since that would integrate nicely with our code.

Is php 8 supported?

I notice that the composer.json requires php >=5.4.0, which implies that php 8 is supported.

Do we know how good the support is currently - particularly, do we run the test suites on php 8 and how good the code coverage are they?

How to get token?

Hi,

I am using checkout.com SDK in Laravel to charge the customer with their Credit Card. I am getting this error
token_invalid

May you please help me? How can I get this token?

I read the previous issues. And in those mention like $request->token but how the token will available? When I use $request->token it returns me null.

Thank You,

Readme update

The first line of the readme file states:
The Checkout SDK for PHP enables developers to easily work with Checkout.com APIs. It requires PHP 5.6.
This could be misleading for users looking for the PHP 7 series.

phpunit version in require-dev

Environment

  • Checkout SDK version: 2.0.0-beta3
  • Operating System and version: Debian

Description

The require-dev section of this SDK requires this version of phpunit :
"symfony/phpunit-bridge": "^6.0.0",

This is a problem for us because we use Symfony 5.4 and therefore we cannot install your SDK

Expected behavior

Could you try with this requirement :

"symfony/phpunit-bridge": "^5.4|^6.0.0",

Possible solution

  • I may be able to implement this bug fix

does SDK supports payment requests with source ids?

Hi,

I've got a question related to card source ids.

In https://docs.checkout.com/docs/use-an-existing-card there is an information that I can use a source id for transaction.

I'm trying to use 'src_ujfjtv6arh3evdccwa5co2nhby' as $tokenId

$method = new TokenSource($tokenId);
$payment = new Payment($method, $currency);

but payments()->request($payment);

returns 'The endpoint did not accept the request. (Code: 422)'.

Should I use a different class for method?

Best regards,
Michal

Get Instrument Details API endpoint

There is no api to get an Instrument By Id.
I need this API and this is the code:

Checkout\Controllers\InstrumentController:

    /**
     * Get details.
     *
     * @param  string   id
     * @param  integer  $mode
     * @return mixed
     */
    public function details($id, $mode = HttpHandler::MODE_EXECUTE)
    {
        $details = new Details($id);
        $response = $this->requestAPI($details->getEndpoint());

        return $this->response($response, Instrument::QUALIFIED_NAME, $mode);
    }

and add a new file Checkout\Models\Instruments\Details

<?php

/**
 * Checkout.com
 * Authorised and regulated as an electronic money institution
 * by the UK Financial Conduct Authority (FCA) under number 900816.
 *
 * PHP version 7
 *
 * @category  SDK
 * @package   Checkout.com
 * @author    Platforms Development Team <[email protected]>
 * @copyright 2010-2019 Checkout.com
 * @license   https://opensource.org/licenses/mit-license.html MIT License
 * @link      https://docs.checkout.com/
 */

namespace Checkout\Models\Instruments;

use Checkout\Library\HttpHandler;
use Checkout\Library\Model;

/**
 * Instrument Details model.
 *
 * @category SDK
 * @package  Checkout.com
 * @author   Platforms Development Team <[email protected]>
 * @license  https://opensource.org/licenses/mit-license.html MIT License
 * @link     https://docs.checkout.com/
 */
class Details extends Model
{

    /**
     * Qualified name of the class.
     *
     * @var string
     */
    const QUALIFIED_NAME = __CLASS__;

    /**
     * Name of the model.
     *
     * @var string
     */
    const MODEL_NAME = 'details';

    /**
     * API Request URL.
     *
     * @var string
     */
    const MODEL_REQUEST_URL = 'instruments/{id}';

    /**
     * API Request Method.
     *
     * @var string
     */
    const MODEL_REQUEST_METHOD = HttpHandler::METHOD_GET;


    /**
     * Magic Methods
     */

    /**
     * Initialise Details
     *
     * @param string $id
     */
    public function __construct($id)
    {
        $this->id = $id;
    }
}

I tested It .. if you please add this to the repo or give me an access to make a Pull Request

Include the support for subMerchant information

Environment

  • Checkout SDK version: checkout-sdk-php/1.0.13 + latest version

Description

Due to the recent compliance requirements in the region. Merchants would need to submit subMerchant information in the API request. Would you guys be able to add the support for object highlighted below in the PHP SDK? all the highlighted fields should be optional to allow other merchants to skip sending those parameters if not required in their region/agreement.
Here’s how the object should look like in a payment request:
{
“source”: {
“type”: “token”,
“token”: “tok_hgt678iuhGtyuioiHgyu89”
},
“amount”: 4500,
“currency”: “SAR”,
“reference”: “Fyugtr56t678Yhui67",

"processing": {
  "aggregator": {
    "sub_merchant_id": "9874587412",
    "sub_merchant_name": "Foodics - catering business",
    "sub_merchant_legal_name": "Foodics catering service LLC",
    "sub_merchant_street": "Kuwait Street 1",
    "sub_merchant_city": "Kuwait City",
    "sub_merchant_country": "KWT",
    "sub_merchant_postal_code": "60000",
    "sub_merchant_state": "Kuwait",
    "sub_merchant_email": "[[email protected]](mailto:[email protected])",
    "sub_merchant_phone": "[+965412478112](tel:+965412478112)",
    "sub_merchant_Industry_Code": "5411"
  }
}

}

The endpoint did not accept the request. (Code: 500)

Hi,

I'm trying to update a just created webhook and I'm getting
`
In HttpHandler.php line 327:

[Checkout\Library\Exceptions\CheckoutHttpException (500)]
The endpoint did not accept the request. (Code: 500)

Exception trace:
() at /home/michal/projects/somtel-api/vendor/checkout/checkout-sdk-php/src/Library/HttpHandler.php:327
Checkout\Library\HttpHandler->handleError() at /home/michal/projects/somtel-api/vendor/checkout/checkout-sdk-php/src/Library/HttpHandler.php:296
Checkout\Library\HttpHandler->execute() at /home/michal/projects/somtel-api/vendor/checkout/checkout-sdk-php/src/Library/Controller.php:93
Checkout\Library\Controller->response() at /home/michal/projects/somtel-api/vendor/checkout/checkout-sdk-php/src/Controllers/WebhookController.php:147
Checkout\Controllers\WebhookController->update() at /home/michal/projects/somtel-api/src/RemitBundle/Service/CheckoutComService.php:112

`

Here is a code that I use
`
public function webhooksUpdate(string $id, string $url): Webhook
{
$webhook = new Webhook($url, $id);

    return $this->checkoutApi->webhooks()->update($webhook);
}

`

Best regards,
Michal

Checkout token for a given Apple Pay token does not contains the "scheme" attribute

Hi!

I'm trying to get a checkout token for an Apple Pay token using this:

$applePayTokenHeader = new ApplePayHeader($transactionId', $publicKeyHash, $ephemeralPublicKey');
$applePayToken = new ApplePay($version, $signature, $data, $applePayTokenHeader);
$this->checkoutApi->tokens()->request($applePayToken);

But the token received does not contains the "scheme" attribute as specified in the main API:

{
  "type": "applepay",
  "token": "tok_xpn7bku43soenctdlqgw2zbpk4",
  "expires_on": "2021-12-24T13:46:27Z",
  "expiry_month": 12,
  "expiry_year": 2023,
  "last4": "6544",
  "bin": "492483",
  "token_format": "cryptogram_3ds",
  "http_code": 201
}

Anybody knows why? What I'm doing wrong?

Capture method only takes integer amounts. Incorrect amount reflecting in checkout.com dashboard

Hi,

I am trying to capture the amount from card programmatically. But it only seems to accept integer amounts. There will be instances where will need to charge amounts upto 2 decimal places. Which is also the default price format of magento. Also, the captured amount reflects incorrect in checkout.com dashboard. Here is the code:

 $additionalInformation = $payment->getAdditionalInformation();
        $invoiceId = $this->invoiceOrder->execute($orderId, false, $items, true);
        $invoice = $this->invoice->load($invoiceId);
        $storeCode = $this->storeManager->getStore($order->getStoreId())->getCode();
        $checkout = $this->checkoutcomService->init($storeCode);
        $payment = new \Checkout\Models\Payments\Capture($additionalInformation['transaction_info']['id']);
        $payment->amount = (int) $invoice->getGrandTotal();  //Output = 190
        $capture = $checkout->checkoutApi->payments()->capture($payment);
        return $invoiceId;

The class construct \Checkout\Models\Payments\Capture::__construct has typehint of amount as integer.
Checkout.com Dashboard shows captured amount as 1.90
and the response from checkout.com shows 190 as below:

{
    "id": "<<event_id>>",
    "type": "payment_captured",
    "created_on": "2019-08-07T16:18:15Z",
    "data": {
        "action_id": "<<Action_Id>>",
        "response_code": "10000",
        "response_summary": "Approved",
        "amount": 190,
        "metadata": {
            "methodId": "checkoutcom_card_payment",
            "quoteData": "{\"quote_id\":\"<<quote_id>>\",\"store_id\":1,\"customer_email\":null}"
        },
        "processing": {
            "acquirer_transaction_id": "<<acq_trans>>",
            "acquirer_reference_number": "<<acq_ref>>"
        },
        "id": "<<payment_id>>",
        "currency": "AED",
        "processed_on": "2019-08-07T16:18:15Z",
        "reference": "<<my_reference>>"
    },
    "_links": {
        "self": {
            "href": "https://api.sandbox.checkout.com/events/<<event_id>>"
        },
        "payment": {
            "href": "https://api.sandbox.checkout.com/payments/<<my_id>>"
        }
    }
}

Endpoint did not accept the request. (Code: 422)

Hello dear ,
I'm having an issue in the checkout-sdk-php when payments using apple pay
after pay using apple pay and Create a Apple Pay token then Create new payment method this error appear to me .

Checkout\Library\Exceptions\CheckoutHttpException: The endpoint did not accept the request. (Code: 422) in vendor/checkout/checkout-sdk-php/src/Library/HttpHandler.php:327

Any one can help me to fix this bug ??

Example to attach email address to payments

Hi,
I'm trying to use this SDK on a personal project, but when I charge a card, there's no obvious way to attach an email and in the sandbox console, I see emails like [email protected]. I read the wiki I could not find anything. Can someone update the wiki with a really basic example under the payments section?
Thanks.

PayPal payments

Your docs are REALLY slim when it comes to accepting PayPal payments. Is there any resource that describes how to implement PayPal payments with PHP in combination with checkout.com?

Do I need to use CURL, or can I use your PHP API? If the API, how?

Ability to use PSR Logger & HTTP Client

Hi!

Our team currently working on checkout.com integrations and there are some pitfalls caused by SDK.

  1. Logger
    We use PSR logger logger standard and extended decorators to support ELK stack and override sensitive data. I have look thought the source and found out no ability to use custom logger or implement custom message format.

2.HttpHandler
Here we have the same problems, we have decorated Guzzle to support critical for us request-response logging and mocking and also there is no way to override or decorate statically created HttpHandler.

Unfortunately we can't use SDK and obligated to create own fork or implementation.

So, do you have any ability to implement support of standard PSR-3 and PSR-18 interfaces or maybe open to accept PR?

Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.