• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak zaimplementować curl api rest do php?

Object Storage Arubacloud
0 głosów
976 wizyt
pytanie zadane 25 kwietnia 2019 w PHP przez sensor Użytkownik (680 p.)

W wielu serwisach płatniczych i nie tylko używa się rest api,
nigdy wcześniej tego nie robiłem.
Dlatego bardzo proszę o pomoc w tym temacie.

curl -X POST https://secure.snd.payu.com/api/v2_1/orders \
-H "Content-Type: application/json" \
-H "Authorization: Bearer d9a4536e-62ba-4f60-8017-6053211d3f47" \
-d '{
    "notifyUrl": "https://your.eshop.com/notify",
    "customerIp": "127.0.0.1",
    "merchantPosId": "300746",
    "description": "RTV market",
    "currencyCode": "PLN",
    "totalAmount": "21000",
    "buyer": {
        "email": "john.doe@example.com",
        "phone": "654111654",
        "firstName": "John",
        "lastName": "Doe",
        "language": "pl"
    },
    "settings":{
        "invoiceDisabled":"true"
    },
    "products": [
        {
            "name": "Wireless Mouse for Laptop",
            "unitPrice": "15000",
            "quantity": "1"
        },
        {
            "name": "HDMI cable",
            "unitPrice": "6000",
            "quantity": "1"
        }
    ]
}'

Jak teraz zaimplementować ten kod żeby działało wszystko w php?

1 odpowiedź

+1 głos
odpowiedź 25 kwietnia 2019 przez Ehlert Ekspert (212,670 p.)
  1. W php nie używa się bezpośrednio curla, bo to strata zdrowia, czasu, prądu i pieniędzy. Jest mnóstwo wrapperów/libek które czynią strzelanie z http przyjemniejszym:
    https://github.com/ziadoz/awesome-php#http
  2. Przed skorzystaniem z api serwisów warto zapoznać się z ich dokumentacjami, np tu jest do paypala:
    https://developer.paypal.com/docs/
  3. Dużo serwisów płatniczych w celu poszerzenia grona odbiorców tworzą autorskie sdk pozwalające w łatwy sposób się z nimi zintegrować:
    https://github.com/paypal/PayPal-PHP-SDK
komentarz 26 kwietnia 2019 przez sensor Użytkownik (680 p.)
byćmoże, ale ja właśnie chciałbym się tego nauczyć, mógłbyś napisać podstawowy kod
komentarz 26 kwietnia 2019 przez Ehlert Ekspert (212,670 p.)
Nie, nigdy tego nie robiłem, bo po co. Są gotowe narzędzia.
komentarz 27 kwietnia 2019 przez sensor Użytkownik (680 p.)

no dobra, zainstalowałem composer, pobrałem sdk i co dalej? test działa

<?php
/**
 * OpenPayU Examples
 *
 * @copyright  Copyright (c) 2011-2016 PayU
 * @license    http://opensource.org/licenses/LGPL-3.0  Open Software License (LGPL 3.0)
 * http://www.payu.com
 * http://developers.payu.com
 */
require_once realpath(dirname(__FILE__)) . '/PayU/vendor/openpayu/openpayu/lib/openpayu.php';
require_once realpath(dirname(__FILE__)) . '/PayU/vendor/openpayu/openpayu/examples/config.php';
$order = array();
$order['notifyUrl'] = 'https://test.com/PayU/vendor/openpayu/openpayu/examples/v2/order/OrderNotify.php';
$order['continueUrl'] = 'https://test.com/PayU/vendor/openpayu/openpayu/examples/layout/success.php';
$order['customerIp'] = '127.0.0.1';
$order['merchantPosId'] = OpenPayU_Configuration::getOauthClientId() ? OpenPayU_Configuration::getOauthClientId() : OpenPayU_Configuration::getMerchantPosId();
$order['description'] = 'New order';
$order['currencyCode'] = 'PLN';
$order['totalAmount'] = 3200;
$order['extOrderId'] = uniqid('', true);
$order['products'][0]['name'] = 'Product1';
$order['products'][0]['unitPrice'] = 1000;
$order['products'][0]['quantity'] = 1;
$order['products'][1]['name'] = 'Product2';
$order['products'][1]['unitPrice'] = 2200;
$order['products'][1]['quantity'] = 1;
$order['buyer']['email'] = 'test_buyer_email@payu.com';
$order['buyer']['phone'] = '123123123';
$order['buyer']['firstName'] = 'Jan';
$order['buyer']['lastName'] = 'Kowalski';
$order['buyer']['language'] = 'en';
/*~~~~~~~~ optional part DELIVERY data ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
//Add delivery informations
$order['buyer']['delivery']['recipientName'] = 'Robert Nowak';
$order['buyer']['delivery']['recipientEmail'] = 'test_buyer_email@payu.com';
$order['buyer']['delivery']['recipientPhone'] = '+48 456 123 789';
$order['buyer']['delivery']['street'] = 'Bar St. 155';
$order['buyer']['delivery']['postalBox'] = 'Warsaw';
$order['buyer']['delivery']['postalCode'] = '22-222';
$order['buyer']['delivery']['city'] = 'Warsaw';
$order['buyer']['delivery']['state'] = 'Masovian district';
$order['buyer']['delivery']['countryCode'] = 'PL';
?>
<!doctype html>
<html lang="en-US">
<head>
    <meta charset="UTF-8">
    <title>Create Order - OpenPayU v2</title>
    <link rel="stylesheet" href="../../layout/css/bootstrap.min.css">
    <link rel="stylesheet" href="../../layout/css/style.css">
</head>

<body>
<div class="container">
    <div class="page-header">
        <h1>Create Order - OpenPayU v2</h1>
    </div>
    <?php try {
        $response = OpenPayU_Order::create($order);
        $status_desc = OpenPayU_Util::statusDesc($response->getStatus());
        if ($response->getStatus() == 'SUCCESS') {
            echo '<div class="alert alert-success">SUCCESS: ' . $status_desc;
            echo '</div>';
        } else {
            echo '<div class="alert alert-warning">' . $response->getStatus() . ': ' . $status_desc;
            echo '</div>';
        }
    } catch (OpenPayU_Exception $e) {
        echo '<pre>';
        var_dump((string)$e);
        echo '</pre>';
    }
    ?>

    <h1>Request</h1>

    <div id="unregisteredCardData">
        <?php var_dump($order); ?>
    </div>

    <table class="table table-hover table-bordered">
        <thead>
        <tr>
            <th colspan="2">Important data from response</th>
        </tr>
        </thead>
        <tbody>
        <tr>
            <td>Order status</td>
            <td><?= $response->getStatus() ?></td>
        </tr>
        <?php if ($response->getStatus() == 'SUCCESS'): ?>
            <tr>
                <td>Order id</td>
                <td><?= $response->getResponse()->orderId ?></td>
            </tr>
            <tr>
                <td>Redirect Uri</td>
                <td><a href="<?= $response->getResponse()->redirectUri ?>"><?= $response->getResponse()->redirectUri ?></a>
                </td>
            </tr>
        <?php endif; ?>
        </tbody>
    </table>
    <h1>Response</h1>

    <div id="unregisteredCardData">
        <?php var_dump($response); ?>
    </div>
</div>
</html>

wprowadziłem to i otrzymuję to

Create Order - OpenPayU v2

SUCCESS: Request has been processed correctly.
Request

D:\wamp\www\test.com\payment-payu.php:78:
array (size=10)
  'notifyUrl' => string 'https://onecoingrants.com/PayU/vendor/openpayu/openpayu/examples/v2/order/OrderNotify.php' (length=89)
  'continueUrl' => string 'https://onecoingrants.com/PayU/vendor/openpayu/openpayu/examples/layout/success.php' (length=83)
  'customerIp' => string '127.0.0.1' (length=9)
  'merchantPosId' => string '145227' (length=6)
  'description' => string 'New order' (length=9)
  'currencyCode' => string 'PLN' (length=3)
  'totalAmount' => int 3200
  'extOrderId' => string '5cc3e202bcf703.49950936' (length=23)
  'products' => 
    array (size=2)
      0 => 
        array (size=3)
          'name' => string 'Product1' (length=8)
          'unitPrice' => int 1000
          'quantity' => int 1
      1 => 
        array (size=3)
          'name' => string 'Product2' (length=8)
          'unitPrice' => int 2200
          'quantity' => int 1
  'buyer' => 
    array (size=6)
      'email' => string 'test_buyer_email@payu.com' (length=25)
      'phone' => string '123123123' (length=9)
      'firstName' => string 'Jan' (length=3)
      'lastName' => string 'Kowalski' (length=8)
      'language' => string 'en' (length=2)
      'delivery' => 
        array (size=9)
          'recipientName' => string 'Robert Nowak' (length=12)
          'recipientEmail' => string 'test_buyer_email@payu.com' (length=25)
          'recipientPhone' => string '+48 456 123 789' (length=15)
          'street' => string 'Bar St. 155' (length=11)
          'postalBox' => string 'Warsaw' (length=6)
          'postalCode' => string '22-222' (length=6)
          'city' => string 'Warsaw' (length=6)
          'state' => string 'Masovian district' (length=17)
          'countryCode' => string 'PL' (length=2)
Important data from response
Order status	SUCCESS
Order id	KSWKDNMXMK190427GUEST000P01
Redirect Uri	https://secure.payu.com/pay/?orderId=KSWKDNMXMK190427GUEST000P01&token=eyJhbGciOiJIUzI1NiJ9.eyJvcmRlcklkIjoiS1NXS0ROTVhNSzE5MDQyN0dVRVNUMDAwUDAxIiwicG9zSWQiOiJ6RGVubjhoTiIsImF1dGhvcml0aWVzIjpbIlJPTEVfQ0xJRU5UIl0sInBheWVyRW1haWwiOiJ0ZXN0X2J1eWVyX2VtYWlsQHBheXUuY29tIiwiZXhwIjoxNTU2NDI3NjQ4LCJpc3MiOiJQQVlVIiwiYXVkIjoiYXBpLWdhdGV3YXkiLCJzdWIiOiJQYXlVIHN1YmplY3QiLCJqdGkiOiJmZGFmM2VjNS0zYjMxLTQ0ODEtODkzOC1iZTYzNzM2NWRmNDIifQ.MxkNSthFiXgziAEHkvdABe-t2vCSOu_cHzj3mFGgSEs
Response

D:\wamp\www\test.com\payment-payu.php:108:
object(OpenPayU_Result)[5]
  private 'status' => string 'SUCCESS' (length=7)
  private 'error' => string '' (length=0)
  private 'success' => int 0
  private 'request' => string '' (length=0)
  private 'response' => 
    object(stdClass)[3]
      public 'orderId' => string 'KSWKDNMXMK190427GUEST000P01' (length=27)
      public 'extOrderId' => string '5cc3e202bcf703.49950936' (length=23)
      public 'status' => 
        object(stdClass)[9]
          public 'statusCode' => string 'SUCCESS' (length=7)
      public 'redirectUri' => string 'https://secure.payu.com/pay/?orderId=KSWKDNMXMK190427GUEST000P01&token=eyJhbGciOiJIUzI1NiJ9.eyJvcmRlcklkIjoiS1NXS0ROTVhNSzE5MDQyN0dVRVNUMDAwUDAxIiwicG9zSWQiOiJ6RGVubjhoTiIsImF1dGhvcml0aWVzIjpbIlJPTEVfQ0xJRU5UIl0sInBheWVyRW1haWwiOiJ0ZXN0X2J1eWVyX2VtYWlsQHBheXUuY29tIiwiZXhwIjoxNTU2NDI3NjQ4LCJpc3MiOiJQQVlVIiwiYXVkIjoiYXBpLWdhdGV3YXkiLCJzdWIiOiJQYXlVIHN1YmplY3QiLCJqdGkiOiJmZGFmM2VjNS0zYjMxLTQ0ODEtODkzOC1iZTYzNzM2NWRmNDIifQ.MxkNSthFiXgziAEHkvdABe-t2vCSOu_cHzj3mFGgSEs' (length=466)
  private 'sessionId' => string '' (length=0)
  private 'message' => string '' (length=0)
  private 'countryCode' => string '' (length=0)
  private 'reqId' => string '' (length=0)

w którym pliku zmienić parametry api? bo w tym nie ma

komentarz 27 kwietnia 2019 przez Ehlert Ekspert (212,670 p.)
Dalej masz dokumentację sdk, nawet po polsku. Metody konfiguracji są w README. Jeśli to dla Ciebie za mało to stanowczo odradzam pisanie czegoś, co oferuje transakcje finansowe.

Podobne pytania

0 głosów
2 odpowiedzi 419 wizyt
pytanie zadane 22 kwietnia 2022 w Programowanie przez pserl Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 569 wizyt
pytanie zadane 22 listopada 2022 w PHP przez mat19 Obywatel (1,580 p.)
0 głosów
1 odpowiedź 523 wizyt
pytanie zadane 28 stycznia 2018 w PHP przez rafal.budzis Szeryf (85,260 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...