2013-08-30 6 views
1

나는 웹 서비스를 통해 PrestaShop 버전에 API 연결을 만들려고 해요PrestaShop 버전의 웹 서비스 생성하기 위해

나는 Custommers, 주소를 만들 수 있습니다

, 카트 성공적으로 (이 예상 작품으로 고객 CRUD, 에 대한 가능한 잘 알려진 순수 문서가있다)

나는 새로운 주문을 완료 할 수 없습니다 해요 :

소스 코드 조각

require_once('config.php'); // PS_SHOP_PATH etc. 
require_once('PSWebServiceLibrary.php'); 

try 
{ 
$webService = new PrestaShopWebservice(PS_SHOP_PATH, PS_WS_AUTH_KEY, DEBUG); 
$opt = array('resource' => 'orders'); 
$xml = $webService->get(array('url' => PS_SHOP_PATH.'/api/orders?schema=blank')); 

$xml->children()->children()->id_address_delivery = 1; 
$xml->children()->children()->id_address_invoice = 1; 
$xml->children()->children()->id_cart = 25; 
$xml->children()->children()->id_currency = 1; 
$xml->children()->children()->current_state = 1; 
$xml->children()->children()->id_lang = 1; 
$xml->children()->children()->id_customer = 1; 
$xml->children()->children()->id_carrier = 0; 
$xml->children()->children()->total_paid = '56973'; 
$xml->children()->children()->total_paid_real = '56973'; 
$xml->children()->children()->total_paid_tax_excl = '56973'; 
$xml->children()->children()->total_paid_tax_incl = '56977'; 
$xml->children()->children()->total_products = 1338; 
$xml->children()->children()->total_products_wt = 1337; 
$xml->children()->children()->conversion_rate = '1'; 
$xml->children()->children()->secure_key = md5('-1');; 
$xml->children()->children()->valid = 1; 
$xml->children()->children()->module = 'Bankwire'; 
$xml->children()->children()->payment = 'bankwire'; 
$xml->children()->children()->current_state = 1; 

unset($xml->children()->children()->id); 
unset($xml->children()->children()->date_add); 
unset($xml->children()->children()->date_upd); 
unset($xml->children()->children()->associations); 
unset($xml->children()->children()->delivery_date); 
unset($xml->children()->children()->invoice_date); 
unset($xml->children()->children()->total_discounts_tax_incl); 
unset($xml->children()->children()->total_discounts_tax_excl); 


$xml = $webService->add(array('resource' => 'orders', 
'postXml' => $xml->asXML() 
)); 

$resources = $xml->children()->children(); 
echo "Successfully added order.".$resources->id; 

} 
catch (PrestaShopWebserviceException $ex) 
{ 
    // Here we are dealing with errors 
    $trace = $ex->getTrace(); 
    if ($trace[0]['args'][0] == 404) echo 'Bad ID'; 
    else if ($trace[0]['args'][0] == 401) echo 'Bad auth key'; 
    else echo 'Other error<br />'.$ex->getMessage(); 
} 
있다

그리고 일부가 있습니다. 피들러

 XML SENT 

    xml=<?xml version="1.0" encoding="UTF-8"?> 
    <prestashop xmlns:xlink="http://www.w3.org/1999/xlink"> 
    <order> 

    <id_address_delivery>1</id_address_delivery> 
    <id_address_invoice>1</id_address_invoice> 
    <id_cart>25</id_cart> 
    <id_currency>1</id_currency> 
    <id_lang>1</id_lang> 
    <id_customer>1</id_customer> 
    <id_carrier>0</id_carrier> 
    <current_state>1</current_state> 
    <module>Bankwire</module> 
    <invoice_number/> 

    <delivery_number/> 

    <valid>1</valid> 


    <id_shop_group/> 
    <id_shop/> 
    <secure_key>6bb61e3b7bce0931da574d19d1d82c88</secure_key> 
    <payment>bankwire</payment> 
    <recyclable/> 
    <gift/> 
    <gift_message/> 
    <mobile_theme/> 
    <total_discounts/> 


    <total_paid>56973</total_paid> 
    <total_paid_tax_incl>56977</total_paid_tax_incl> 
    <total_paid_tax_excl>56973</total_paid_tax_excl> 
    <total_paid_real>56973</total_paid_real> 
    <total_products>1338</total_products> 
    <total_products_wt>1337</total_products_wt> 
    <total_shipping/> 
    <total_shipping_tax_incl/> 
    <total_shipping_tax_excl/> 
    <carrier_tax_rate/> 
    <total_wrapping/> 
    <total_wrapping_tax_incl/> 
    <total_wrapping_tax_excl/> 
    <shipping_number/> 
    <conversion_rate>1</conversion_rate> 
    <reference/> 

    </order> 
    </prestashop> 

반환 HTTP의 BODY 치명적인 오류 다른 오류

HTTP XML response is not parsable : array (0 => LibXMLError::__set_state(array( 'level' => 3, 'code' => 4, 'column' => 1, 'message' => 'Start tag expected, \'<\' not found ',  'file' => '', 'line' => 1,)),) 

"기타 오류"에서 웹보기 로그이에서 온다 :

else echo 'Other error<br />'.$ex->getMessage(); 

PSWebServiceLibrary는

/** @var array compatible versions of PrestaShop Webservice */ 
const psCompatibleVersionsMin = '1.4.0.17'; 
const psCompatibleVersionsMax = '1.5.4.1'; 
을 포함

PrestaShop은 1.5.4.0입니다.

어떤 조언이 필요합니까?

답변

5

문제가 해결되었습니다.

1) 생성)

4)이 정말 좋다(). 주소를 만들 수)). (

3) 검사 제품의 가능시기를 (옵트을

2를 선택 하를 고객을 만들 ... order_rows와 제품 ID의 및 수량

5) 모든 경우에이

에 주문을 만들 카트에 필요한 태그해야 F로 illed-은/API/객체를 참조? 스키마 = 개요

간단히 카트 전에 순서를 만들 빈 안, 단계 intearctive 프로세스에 의해 단계와 동일한 순서의 소리 논리 이 배치 "에서 수행해야 "웹 서비스를 통한 처리.

+1

5)이 id_cart에 주문을 만들 수는 ... – noh

+0

문제는 1.5.4.0 – noh

+0

1.5.2.0 추가 장바구니에 대한 해결 - 상태 OK, 꽃 봉오리 만 첫 번째 제품이 장바구니를 만들 – noh

0

다음과 같은 오류가 장바구니에서 누락 어디에서이 오류에 직면 한 이유, 그건 때문에 id_address_delivery 내 경우 장바구니 또는 주문

HTTP XML response is not parsable : array (0 => LibXMLError::__set_state(array( 'level' => 3, 'code' => 4, 'column' => 1, 'message' => 'Start tag expected, \'<\' not found ',  'file' => '', 'line' => 1,)),) 

& id_address_invoice을 필요한 값 누락이다.

당신이 다음 장소와 같은 순서 ps_cart_cart_rule 테이블의 항목을 카트 테이블과 할인을 배달 옵션과 같은 쇼핑 카트에 대한 dB로 직접 몇 가지 항목을 확인해야합니다 추가 웹 서비스를 통해 주문을 들어 PrestaShop web service create order errors

1

에서 더 읽기 놓고 있었다. 1. 장바구니를 추가하십시오. 2. 카트와 관련된 할인 옵션을 추가하십시오. 3. 카트와 관련하여 배송 옵션을 추가하십시오. 4. 주문하기 동일한 카트 ID로 주문하십시오. 다음으로 코드 :

foreach ($raw_data['discounts'] as $discount) { 
foreach ($raw_data['discounts'] as $discount) { 
    $sql = "insert into ps_cart_cart_rule values('" . $id['cart'] . "','" . $discount['id_cart_rule'] . "')"; 
    $r = mysql_query($sql, $conn)or die(mysql_error($conn)); 
} 

$sql = "update ps_cart set `delivery_option`='a:1:{i:" . $id['address'] . ";s:3:\"" . $id['carrier'] . ",\";}', `id_carrier`='" . $id['carrier'] . "' where id_cart='" . $id['cart'] . "'"; 
$r = mysql_query($sql, $conn)or die(mysql_error($conn)); 


$xml = $webService->get(array('url' => PS_SHOP_PATH . '/api/orders?schema=blank')); 

$xml->order->id_customer = $id['customer']; 
$xml->order->id_address_delivery = $id['address']; 
$xml->order->id_address_invoice = $id['address']; 
$xml->order->id_cart = $id['cart']; 
$xml->order->id_currency = $id['currency']; 
$xml->order->id_lang = $id['lang']; 
$xml->order->id_carrier = $id['carrier']; 
$xml->order->current_state = "3"; 
$xml->order->valid = 0; 
$xml->order->total_shipping = $raw_data['total_shipping']; 
$xml->order->total_shipping_tax_incl = $raw_data['total_shipping']; 
$xml->order->total_shipping_tax_excl = $raw_data['total_shipping']; 
$xml->order->total_discounts = $raw_data['total_discounts']; 
$xml->order->total_discounts_tax_incl = $raw_data['total_discounts']; 
$xml->order->total_discounts_tax_excl = $raw_data['total_discounts']; 
$xml->order->payment = 'Cash on delivery'; 
$xml->order->module = 'cashondelivery'; 
$xml->order->total_products = $raw_data['total_products']; 
$xml->order->total_products_wt = $raw_data['total_products']; 
$xml->order->total_paid = $raw_data['total_paid']; 
$xml->order->total_paid_tax_incl = $raw_data['total_paid']; 
$xml->order->total_paid_tax_excl = $raw_data['total_paid']; 
$xml->order->total_paid_real = "0"; 
$xml->order->conversion_rate = '1'; 
$opt = array('resource' => 'orders'); 
$opt['postXml'] = $xml->asXML(); 
$xml = $webService->add($opt); 
$id['order'] = $xml->order->id; 
$id['secure_key'] = $xml->order->secure_key; 
관련 문제