从JavaScript传递PowerShell参数值

从JavaScript传递PowerShell参数值,javascript,powershell,Javascript,Powershell,基本上,我需要将结果从JavaScript传递到PowerShell 我有一个powershell脚本,可以打开IE,填写所有数据并提交表单。JavaScript返回正确的值,现在我需要将结果传递回PowerShell PowerShell脚本(调用\u cardtoken.ps1): $ie = New-Object -ComObject 'internetExplorer.Application' $ie.Visible= $true # Make it visible $cardname=

基本上,我需要将结果从JavaScript传递到PowerShell

我有一个powershell脚本,可以打开IE,填写所有数据并提交表单。JavaScript返回正确的值,现在我需要将结果传递回PowerShell

PowerShell脚本(调用\u cardtoken.ps1):

$ie = New-Object -ComObject 'internetExplorer.Application'
$ie.Visible= $true # Make it visible
$cardname="Carlos"
$cardnumber="5555555555554444"
$cardsecuritycode="123"
$cardexmonth="12"
$cardexyear="2020"
$ie.Navigate("file:///C:/Users/Admin/invoke_cardtoken.html")
While ($ie.Busy -eq $true) {Start-Sleep -Seconds 1
}
$cardnamefield = $ie.document.getElementByID('namein')
$cardnamefield.value = "$cardname"
$cardnumberfield = $ie.document.getElementByID('numberin')
$cardnumberfield.value = "$cardnumber"
$cardsecuritycodefield = $ie.document.getElementByID('cvcin')
$cardsecuritycodefield.value = "$cardsecuritycode"
$cardexmonthfield = $ie.document.getElementByID('exmonthin')
$cardexmonthfield.value = "$cardexmonth"
$cardexyearfield = $ie.document.getElementByID('exyearin')
$cardexyearfield.value = "$cardexyear"
$Link = $ie.document.getElementByID('submitin')
$Link.click()

<!-- saved from url=(0014)about:internet -->
<!DOCTYPE html>
<html>
   <head>
      <title></title>
      <meta charset="UTF-8" />
      <script src="https://cdn.worldpay.com/v1/worldpay.js"></script>
   </head>
   <body>
      <form id="paymentForm" method="post">
         <span id="paymentErrors"></span>
         <div class="form-row">
            <label>Name on Card</label>
            <input data-worldpay="name" name="name" type="text" id="namein"/>
         </div>
         <div class="form-row">
            <label>Card Number</label>
            <input data-worldpay="number" size="20" type="text" id="numberin"/>
         </div>
         <div class="form-row">
            <label>Expiration (MM/YYYY)</label>
            <input data-worldpay="exp-month" size="2" type="text" id="exmonthin"/>
            <label> / </label>
            <input data-worldpay="exp-year" size="4" type="text" id="exyearin" />
         </div>
         <div class="form-row">
            <label>CVC</label>
            <input data-worldpay="cvc" size="4" type="text" id="cvcin" />
         </div>
         <input type="submit" value="Place Order" id="submitin"  onclick='pipePass()'/>
      </form>
      <script type="text/javascript">
         var form = document.getElementById('paymentForm');
         Worldpay.useOwnForm({
           'clientKey': 'xxxx',
           'form': form,
           'reusable': false,
           'callback': function(status, response) {
             document.getElementById('paymentErrors').innerHTML = '';
             if (response.error) {               Worldpay.handleError(form, document.getElementById('paymentErrors'), response.error); 
             } else {
               var token = response.token;
         alert(token);
               Worldpay.formBuilder(form, 'input', 'hidden', 'token', token);
               form.submit();
             }
           }
         });
      </script>`enter code here`
   </body>
</html>
HTML和JavaScript(invoke\u cardtoken.HTML):

$ie = New-Object -ComObject 'internetExplorer.Application'
$ie.Visible= $true # Make it visible
$cardname="Carlos"
$cardnumber="5555555555554444"
$cardsecuritycode="123"
$cardexmonth="12"
$cardexyear="2020"
$ie.Navigate("file:///C:/Users/Admin/invoke_cardtoken.html")
While ($ie.Busy -eq $true) {Start-Sleep -Seconds 1
}
$cardnamefield = $ie.document.getElementByID('namein')
$cardnamefield.value = "$cardname"
$cardnumberfield = $ie.document.getElementByID('numberin')
$cardnumberfield.value = "$cardnumber"
$cardsecuritycodefield = $ie.document.getElementByID('cvcin')
$cardsecuritycodefield.value = "$cardsecuritycode"
$cardexmonthfield = $ie.document.getElementByID('exmonthin')
$cardexmonthfield.value = "$cardexmonth"
$cardexyearfield = $ie.document.getElementByID('exyearin')
$cardexyearfield.value = "$cardexyear"
$Link = $ie.document.getElementByID('submitin')
$Link.click()

<!-- saved from url=(0014)about:internet -->
<!DOCTYPE html>
<html>
   <head>
      <title></title>
      <meta charset="UTF-8" />
      <script src="https://cdn.worldpay.com/v1/worldpay.js"></script>
   </head>
   <body>
      <form id="paymentForm" method="post">
         <span id="paymentErrors"></span>
         <div class="form-row">
            <label>Name on Card</label>
            <input data-worldpay="name" name="name" type="text" id="namein"/>
         </div>
         <div class="form-row">
            <label>Card Number</label>
            <input data-worldpay="number" size="20" type="text" id="numberin"/>
         </div>
         <div class="form-row">
            <label>Expiration (MM/YYYY)</label>
            <input data-worldpay="exp-month" size="2" type="text" id="exmonthin"/>
            <label> / </label>
            <input data-worldpay="exp-year" size="4" type="text" id="exyearin" />
         </div>
         <div class="form-row">
            <label>CVC</label>
            <input data-worldpay="cvc" size="4" type="text" id="cvcin" />
         </div>
         <input type="submit" value="Place Order" id="submitin"  onclick='pipePass()'/>
      </form>
      <script type="text/javascript">
         var form = document.getElementById('paymentForm');
         Worldpay.useOwnForm({
           'clientKey': 'xxxx',
           'form': form,
           'reusable': false,
           'callback': function(status, response) {
             document.getElementById('paymentErrors').innerHTML = '';
             if (response.error) {               Worldpay.handleError(form, document.getElementById('paymentErrors'), response.error); 
             } else {
               var token = response.token;
         alert(token);
               Worldpay.formBuilder(form, 'input', 'hidden', 'token', token);
               form.submit();
             }
           }
         });
      </script>`enter code here`
   </body>
</html>

卡片上的名字
卡号
有效期(年月日)
/ 
CVC
var form=document.getElementById('paymentForm');
Worldpay.useOwnForm({
“clientKey”:“xxxx”,
“形式”:形式,
“可重用”:错误,
“回调”:函数(状态、响应){
document.getElementById('paymentErrors')。innerHTML='';
if(response.error){Worldpay.handleError(form,document.getElementById('paymentErrors'),response.error);
}否则{
var-token=response.token;
警报(令牌);
formBuilder(表单“输入”、“隐藏”、“令牌”、“令牌”);
表单提交();
}
}
});
`在这里输入代码`

我认为使用Powershell直接调用支付处理服务的API更容易、更干净,可以使用
调用Webrequest
调用RestMethod
。使用
convertfromjson
从响应中获取令牌,然后在Powershell中继续操作。

我认为使用
Invoke Webrequest
Invoke RestMethod
直接使用Powershell调用支付处理服务的API更容易、更简洁。使用
convertfromjson
从响应中获取令牌,然后在Powershell中继续