У меня есть таблица mySQL, загруженная 50 строками. Каждая строка содержит необходимую информацию для обработки кредитной карты. Когда пользователь нажимает «Обработать кредитные карты», запрашивайте таблицу и отображайте каждую строку на странице с помощью html. Как только данные будут отображены на странице, скрипт начнет обрабатывать каждую строку через учетную запись продавца и сделает соответствующую строку либо красной для отклонения, либо зеленым для одобрения, не обновляя страницу после каждой транзакции. Я думаю, что мне нужно использовать AJAX или jQuery, чтобы это произошло, но я не уверен, что иду в правильном направлении. Вот скрипт для обработки транзакций:

<?php
$request = new GatewayRequest();
$response = new GatewayResponse();
$service = new GatewayService();


$request->Set(GatewayRequest::MERCHANT_ID(), "111111111111111");
$request->Set(GatewayRequest::MERCHANT_PASSWORD(), "xxxxxxxxxxxx");


$time = time();
$request->Set(GatewayRequest::MERCHANT_CUSTOMER_ID(), $time . '.PHPTest');
$request->Set(GatewayRequest::MERCHANT_INVOICE_ID(), $time . '.SaleTest');



$request->Set(GatewayRequest::AMOUNT(), "9.99");
$request->Set(GatewayRequest::CARDNO(), "4111111111111111");
$request->Set(GatewayRequest::EXPIRE_MONTH(), "02");
$request->Set(GatewayRequest::EXPIRE_YEAR(), "2010");
$request->Set(GatewayRequest::CVV2(), "999");


$request->Set(GatewayRequest::CUSTOMER_FIRSTNAME(), "Joe");
$request->Set(GatewayRequest::CUSTOMER_LASTNAME(), "PHPTester");
$request->Set(GatewayRequest::EMAIL(), "phptest@fakedomain.com");
$request->Set(GatewayRequest::IPADDRESS(), $_SERVER['REMOTE_ADDR']);


$request->Set(GatewayRequest::BILLING_ADDRESS(), "123 Main St");
$request->Set(GatewayRequest::BILLING_CITY(), "Las Vegas");
$request->Set(GatewayRequest::BILLING_STATE(), "NV");
$request->Set(GatewayRequest::BILLING_ZIPCODE(), "89141");
$request->Set(GatewayRequest::BILLING_COUNTRY(), "US");




$request->Set(GatewayRequest::SCRUB(), "IGNORE");
$request->Set(GatewayRequest::CVV2_CHECK(), "IGNORE");
$request->Set(GatewayRequest::AVS_CHECK(), "IGNORE");

$service->SetTestMode(TRUE);

if ($service->PerformPurchase($request, $response)) {
  print "Purchase succeeded\n";
  print "Response Code: " .
    $response->Get(GatewayResponse::RESPONSE_CODE()) . "\n";
  print "Reasone Code: " .
    $response->Get(GatewayResponse::REASON_CODE()) . "\n";
  print "Auth No: " . $response->Get(GatewayResponse::AUTH_NO()) . "\n";
  print "AVS: " . $response->Get(GatewayResponse::AVS_RESPONSE()) . "\n";
  print "CVV2: " . $response->Get(GatewayResponse::CVV2_CODE()) . "\n";
  print "GUID: " . $response->Get(GatewayResponse::TRANSACT_ID()) . "\n";
  print "Account: " .
    $response->Get(GatewayResponse::MERCHANT_ACCOUNT()) . "\n";
  print "Scrub: " .
    $response->Get(GatewayResponse::SCRUB_RESULTS()) . "\n";
} else {
  print "Purchase failed\n";
  print "GUID: " . $response->Get(GatewayResponse::TRANSACT_ID()) . "\n";
  print "Response Code: " .
    $response->Get(GatewayResponse::RESPONSE_CODE()) . "\n";
  print "Reasone Code: " .
    $response->Get(GatewayResponse::REASON_CODE()) . "\n";
  print "Exception: " .
    $response->Get(GatewayResponse::EXCEPTION()) . "\n";
  print "Scrub: " .
    $response->Get(GatewayResponse::SCRUB_RESULTS()) . "\n";
}

?>

Будет ли этот тип кода работать с AJAX или jQuery без перезаписи? Любая помощь будет оценена по достоинству.

0
Kevin Jackson 12 Апр 2011 в 20:40

1 ответ

Все можно заставить работать без переписывания, но вы создали себе много головной боли. Вам, вероятно, повезет больше (и вы сэкономите массу времени), если отформатируете все эти операторы печати в массив и закодируете их в формате JSON. Очевидно, javascript любит JSON.

0
daviddripps 12 Апр 2011 в 21:09
Как мне отформатировать этот код в AJAX, который использует Javascript? У меня есть все необходимые части, кроме как использовать приведенный выше код в функции Javascript с помощью httpObject.open?
 – 
Kevin Jackson
12 Апр 2011 в 23:42
Здесь есть отличное руководство по использованию httpObject.open: ссылка. Если вы кодируете свой ответ JSON, то httpObject.responseText будет объектом javascript. Вероятно, проще всего в этот момент просто получить доступ к свойствам объекта, используя точечную нотацию. (т.е. httpObject.responseText.[ваш параметр])
 – 
daviddripps
14 Апр 2011 в 01:00