В настоящее время я работаю над API-интерфейсом отправки для OpenCart. Цель этого API - не для части веб-страницы OpenCart, а для нашего мобильного приложения для взаимодействия с OpenCart.Выполнение API-интерфейса Checkout API в OpenCart
Из моих исследований, как представляется, два способа представить заказ:
один метод:
На веб-странице OpenCart, когда вы хотите физически хотите подать заявку, вы идете через рабочий процесс:
товар в корзину через
checkout/cart/add
вход payment_address через
checkout/payment_address/validate
вход shipping_address через
checkout/shipping_address/validate
метод ввода судоходства через
checkout/shipping_method/validate
вход Способ оплаты через
checkout/payment_method/validate
Подтверждение/отправить заказ через (я не Не знаю, какой URL-адрес действительно запрашивается для отправки заказа).
Оказывается, преимущество этого метода является то, что, учитывая условие, что клиента регистрируются в, И вы есть API для добавления элементов в корзину, вам не нужно проходить через шаг вручную добавления продуктов в корзину по URL-адресу. Вы также можете использовать строку, такую как existing
в payment_address и shipping_address, чтобы обозначить существующий адрес (так что вам не нужно вручную вводить что-либо вообще в URL-адрес).
Способ второй:
Использование checkout/manual
.Этот метод, однако, требует полной настройки входов вручную для всего:
store_id
customer_id
customer_group_id
payment_country_id
payment_zone_id
payment_country_id
order_product []
order_voucher
SHIPPING_METHOD []
order_total [
contains keys such as code, title, text, value, and sort_order
]оплаты []
Может быть что-то пропустил ..
Использование проверки/руководство по-видимому, API, что для наших потребностей, и я особенно нравится, что он будет возвращать сообщения/предупреждения об ошибках, если запрос не удалось - однако, первый метод позволяет клиенту иметь интерфейс для добавления продуктов в корзину и доступа к существующим переменным, таким как shipping_address, payment_address и т. д., учитывая условие, что они вошли в систему (я знаю, что там это код, который делает cart->clear()
и customer->logout()
, если пользователь вошел в систему).
Мой вопрос: кто-нибудь когда-либо осуществлял проверку вручную раньше? Как вы его реализовали?
Update:
В настоящее время пишет сценарий, который будет POST некоторых фиктивных входов checkout/manual
:
public function submit()
{
# Our new data
$data = array(
"store_id" => 0,
"customer" => "My Name",
"customer_id" => 1,
"customer_group_id" => 1,
"payment_country_id" => 223,
"payment_zone_id" => 3663,
"order_product[0][product_id]" => 1791,
"order_product[0][quantity]" => 1,
"order_product[0][price]" => 5.01,
"order_total[0][code]" => "sub_total",
"order_total[0][title]" => "Sub-Total",
"order_total[0][text]" => "$5.01",
"order_total[0][value]" => 5.01,
"order_total[0][sort_order]" => 1,
"order_total[1][code]" => "total",
"order_total[1][title]" => "Total",
"order_total[1][text]" => "$5.01",
"order_total[1][value]" => 5.01,
"order_total[1][sort_order]" => 9,
"payment_firstname" => "My",
"payment_lastname" => "Name",
"payment_company" => "SomeCompany",
"payment_address_1" => "#123 1234 NameOf street",
"payment_address_2" => "",
"payment_postcode" => "12345",
"payment_city" => "New York",
"shipping_firstname" => "My",
"shipping_lastname" => "Name",
"shipping_company" => "SomeCompany",
"shipping_address_1" => "#123 1234 NameOf street",
"shipping_address_2" => "",
"shipping_postcode" => "12345",
"shipping_city" => "New York",
"shipping" => "free.free",
"shipping_method" => "Free Shipping",
"shipping_code" => "free.free",
"shipping_country_id" => 223,
"shipping_zone_id" => 3663,
"payment" => "cod",
"payment_method" => "Cash On Delivery",
"payment_code" => "cod",
"order_status_id" => 1
);
# Create a connection
$url = HTTP_SERVER . 'index.php?route=checkout/manual';
$ch = curl_init($url);
# Form data string
$postString = http_build_query($data, '', '&');
# Setting our options
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postString);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
# Get the response
$response = curl_exec($ch);
echo $response;
curl_close($ch);
}
Однако возвращение данные заключаются в следующем:
{"error":{"warning":"You do not have permission to access this page, please refer to your system administrator."}}
Обновление 2 :
ошибка была брошена, так как я не мог удовлетворить ни одно из этих условий, когда callling checkout/manual
: $this->user->isLogged() && $this->user->hasPermission('modify', 'sale/order')
я временно удален его на заменить его true
, так что я всегда могу вручную добавить заказ.
Используя мой входной Params, я получаю этот JSON:
"success":"Order totals has been successfully re-calculated!"
, однако, проверить список административных распоряжений, он не появляется новый порядок будет добавлен.
Update 3:
Несмотря на возможность создания заказа, я не знаю, как отправить заказ.
Единственная причина, по которой этот очень взломанный, неприятный метод сидит с другими файлами переднего плана, заключается в том, что он может более легко получить доступ к модулям итогов, которых нет в фоновом контенте. Это часть страницы редактирования правки администратора (в частности, для обновления итогов). Я бы настоятельно рекомендовал игнорировать его и создать свой собственный метод. – rjdown