Как получить справочный номер платежа из ответа paypal curl на php

#curl #paypal #reference #numbers #response

Вопрос:

Я хочу получить номер ссылки на платеж из paypal, ответ curl на php, но не получаю номер ссылки в ответе, следующий запрос, который я сделал :-

может ли кто-нибудь иметь представление о том , как я могу получить номер ссылки из ответа curl , или я где-то ошибаюсь в запросе curl ?

 $curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.sandbox.paypal.com/v1/payments/payment',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => $paymentJson,
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer ' . $accessToken,
'Content-Type: application/json',
'Cookie: cookie_check=yes; ui_experience=d_id=83f0753501654cbf94ee30789ad96f6c1610704307225; ts=vreXpYrS=1705312306&vteXpYrS=1610706106&vr=f6bc3f351760a4be4056d862fffa1217&vt=057541121770a78050dba8bfffa9d7eb&vtyp=return; ts_c=vr=f6bc3f351760a4be4056d862fffa1217&vt=057541121770a78050dba8bfffa9d7eb'
)
));
$response = curl_exec($curl);
curl_close($curl);
$result   = json_decode($response, TRUE);
 

получать $result как :-

 Array
(
[id] => PAYID-MFBR34I2D9383578Y5951435
[intent] => sale
[state] => created
[payer] => Array
(
[payment_method] => paypal
)
[transactions] => Array
(
[0] => Array
(
[amount] => Array
(
[total] => 1785.00
[currency] => EUR
[details] => Array
(
[subtotal] => 1350.00
[tax] => 285.00
[shipping] => 0.00
[insurance] => 0.00
[handling_fee] => 150.00
[shipping_discount] => 0.00
)
)
[description] => This is the payment transaction description.
[custom] => This is the payment transaction description.
[invoice_number] => 159916
[soft_descriptor] => This is the payment transaction description.
[item_list] => Array
(
[items] => Array
(
[0] => Array
(
[name] => Item 1
[sku] => 1
[description] => This is the payment transaction description.
[price] => 1350.00
[currency] => EUR
[quantity] => 1
)
)
)
[related_resources] => Array
(
)
)
)
[note_to_payer] => Vimtox
[create_time] => 2021-09-16T10:35:29Z
[links] => Array
(
[0] => Array
(
[href] => https://api.sandbox.paypal.com/v1/payments/payment/PAYID-MFBR34I2D9383578Y5951435
[rel] => self
[method] => GET
)
[1] => Array
(
[href] => https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkoutamp;token=EC-4R254380AW710703U
[rel] => approval_url
[method] => REDIRECT
)
[2] => Array
(
[href] => https://api.sandbox.paypal.com/v1/payments/payment/PAYID-MFBR34I2D9383578Y5951435/execute
[rel] => execute
[method] => POST
)
)
)
 

может ли у кого-нибудь быть решение для этого ?

Ответ №1:

Что такое «справочный номер» ? Откуда могло взяться такое количество? Пожалуйста, будьте конкретны в своем вопросе.

Если вы ищете идентификатор транзакции PayPal, это будет идентификатор продажи API v1/payments, который вы получите только после выполнения платежа. Это должно быть сделано после того, как покупатель одобрит его.


Однако, что еще более важно, API v1/payments устарел и не должен использоваться для каких-либо новых интеграций. Вместо этого используйте текущий API v2/checkout/orders….:

Создайте два маршрута на своем сервере, один для «Создания заказа» и один для «Заказа на захват», задокументированный здесь. Эти маршруты должны возвращать только данные JSON (без HTML или текста). Когда ответ на захват будет успешным, сохраните полученные в результате платежные данные в своей базе данных (в частности purchase_units[0].payments.captures[0].id , идентификатор транзакции PayPal) и выполните любую необходимую бизнес-логику (например, отправьте электронное письмо с подтверждением или зарезервируйте продукт) перед отправкой возвращаемого JSON.

Свяжите эти два маршрута со следующим потоком утверждения: https://developer.paypal.com/demo/checkout/#/pattern/server