Поместите ответ REST-API в переменную Windows Batch File - PullRequest
0 голосов
/ 23 октября 2018

Я новичок в сценариях пакетных файлов Windows.Может ли кто-нибудь объяснить мне, как я могу извлечь одно значение ответа REST API в переменную?

я сделал этот вызов:

    curl https://api.stripe.com/v1/customers -u sk_live_1qwnCoXXXXXXXXXXXXX: -d card[number]=494XXXXXXX9 -d card[exp_month]=10 -d card[exp_year]=2022 -d card[cvc]=081 -d email=XXXXXXXXXXXX
{
  "id": "**cus_DqXXXXXXXXXXTu**",
  "object": "customer",
  "account_balance": 0,
  "created": 1540311116,
  "currency": null,
  "default_source": "card_1DOXXXXXXMf",
  "delinquent": false,
  "description": null,
  "discount": null,
  "email": "XXXXXXXXXX",
  "invoice_prefix": "69C53EF",
  "livemode": true,
  "metadata": {
  },
  "shipping": null,
  "sources": {
    "object": "list",
    "data": [
      {
        "id": "card_1DOXXXXXXXXXXf",
        "object": "card",
        "address_city": null,
        "address_country": null,
        "address_line1": null,
        "address_line1_check": null,
        "address_line2": null,
        "address_state": null,
        "address_zip": null,
        "address_zip_check": null,
        "brand": "Visa",
        "country": "DE",
        "customer": "**cus_DXXXXXXXTu**",
        "cvc_check": "pass",
        "dynamic_last4": null,
        "exp_month": 10,
        "exp_year": 2022,
        "fingerprint": "1WXXXXXXXXXX5",
        "funding": "prepaid",
        "last4": "XXXX",
        "metadata": {
        },
        "name": null,
        "tokenization_method": null
      }
    ],
    "has_more": false,
    "total_count": 1,
    "url": "/v1/customers/cus_Dq8XXXXXXXTu/sources"
  },
  "subscriptions": {
    "object": "list",
    "data": [

    ],
    "has_more": false,
    "total_count": 0,
    "url": "/v1/customers/cus_Dq8XXXXXXXTu/subscriptions"
  },
  "tax_info": null,
  "tax_info_verification": null
}

Я должен извлечь идентификатор, начинающийся с "cus_"в первой строке ответа и этот идентификатор в разделе источников, начинающемся с "card _"

У меня есть поиск в Google, но, возможно, я не вижу правильного ответа.

Нужен этот скрипт для автоматизациивыставление счетов в нашей системе управления запасами.

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

спасибо за эту рекомендацию.Я попытался использовать это и реализовал параметры GET, чтобы дать правильные значения для сценария.Но у меня есть новая проблема, может быть, вы могли бы следить за ней.Значения, которые я даю функции shell_exec, пусты.

        <?php
        //GET PARAMETERS
        $firstname = $_GET['firstname'];
        $name = $_GET['name'];
        $cardnumber = $_GET['cardnumber'];
        $cardcvc = $_GET['cardcvc'];
        $cardexpiremonth = $_GET['cardexpiremonth'];
        $cardexpireyear = $_GET['cardexpireyear'];
        $email = $_GET['email'];
        $order = $_GET['order'];
        $amount = $_GET['amount'];

        //Clean Amount (betrag)
        function removeUglyChars($phrase) {

          // characters to remove
          $remove = array('*', '+', '!',  ',', '#', '@', '.');

          // remove to ugly chars
          $phrase = str_replace($remove, " ", $phrase);

          // remove all double white-spaces
          while (strpos($phrase, "  ") !== false) $phrase = str_replace("  ", " ", $phrase);

          return trim($phrase);

        }
        $amount_fixed = removeUglyChars($amount); // Write cleaned amount in new variable

        //Adding Source (Card) to Stripe
        $json=trim(shell_exec('curl https://api.stripe.com/v1/customers -u sk_test_oznXXX9olIs: -d card[number]="'.$cardnumber.'" -d card[exp_month]="'.$cardexpiremonth.'" -d card[exp_year]="'.$cardexpireyear.'" -d card[cvc]="'.$cardcvc.'" -d email="'.$email.'"'));
        $data=json_decode($json,true);
        $customer=$data['id'];
        $source=$data['sources']['data'][0]['id'];
        //Charge Source and Customer
        shell_exec('curl https://api.stripe.com/v1/charges -u sk_test_oznXXXolIs: -d amount="'.$amount_fixed.'" -d currency=eur -d description="'.$order.'" -d source="'.$source.'"');
?>

спасибо за вашу поддержку

0 голосов
/ 23 октября 2018

хотя и не совсем невозможно, синтаксический анализ json на далеко более продвинут, чем то, что люди должны делать со сценариями MS.bat, которые являются довольно простым языком.если вы можете, пожалуйста, переключитесь на лучший язык сценариев, это будет тривиально в чем-то вроде PHP, Python или Perl.например, с php-cli, который вы можете получить здесь , это будет:

<?php
$json=trim(shell_exec('curl https://api.stripe.com/v1/customers -u sk_live_1qwnCoXXXXXXXXXXXXX: -d card[number]=494XXXXXXX9 -d card[exp_month]=10 -d card[exp_year]=2022 -d card[cvc]=081 -d email=XXXXXXXXXXXX'));
$data=json_decode($json,true);
$id=$data['id'];
$id2=$data['sources']['data'][0]['id'];
echo "first id: {$id} - data id: {$id2}";

и если вы установите php.exe php-cli в качестве обработчика по умолчанию для.PHP-файлы, вы можете запустить свой PHP-скрипт прямо из командной строки, например:

enter image description here

...