0
私は現在、新しい支払いゲートウェイ用のOpenCart支払い拡張機能を構築しています。今、私は正常に支払いを行い、商店街にリダイレクトすることができますが、注文ステータスを更新するようにコードを書く方法はわかりません。OpenCartの注文状況を更新するには
私のすべての注文は今、注文の不足で表示されていると私はそれのためだと思う。私はコールバック関数を持っていないと私はそれについて行く方法を知らない。支払いが成功した場合に完了した注文ステータスを更新できるようにコードを更新したい場合や、支払いが失敗した場合でもチェックアウトにリダイレクトされますが、依然として注文ステータスが更新されます。
これは、以下の私のコードです:
<?php
class ControllerExtensionPaymentSCPAY extends Controller {
public function index() {
$this->load->language('extension/payment/sc_pay');
$data['button_confirm'] = $this->language->get('button_confirm');
$data['testmode'] = $this->config->get('sc_pay_test');
$order_info = $this->model_checkout_order->getOrder($this->session->data['order_id']);
$total = $order_info['total'];
$newbutton = str_replace("50", $total, $this->config->get('sc_pay_button_link'));
$newbutton = $newbutton . "&redirect_url=" .$this->url->link('checkout/success');
if (!$this->config->get('sc_pay_test')) {
$data['action'] = $newbutton;
}
else {
$data['action'] = '';
}
$this->load->model('checkout/order');
$order_info = $this->model_checkout_order->getOrder($this->session->data['order_id']);
if ($order_info) {
$data['business'] = $this->config->get('sc_pay_email');
$data['item_name'] = html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8');
$data['products'] = array();
foreach ($this->cart->getProducts() as $product) {
$option_data = array();
foreach ($product['option'] as $option) {
if ($option['type'] != 'file') {
$value = $option['value'];
}
else {
$upload_info = $this->model_tool_upload->getUploadByCode($option['value']);
if ($upload_info) {
$value = $upload_info['name'];
}
else {
$value = '';
}
}
$option_data[] = array(
'name' => $option['name'],
'value' => (utf8_strlen($value) > 20 ? utf8_substr($value, 0, 20) . '..' : $value)
);
}
$data['products'][] = array(
'name' => htmlspecialchars($product['name']),
'model' => htmlspecialchars($product['model']),
'price' => $this->currency->format($product['price'], $order_info['currency_code'], false, false),
'quantity' => $product['quantity'],
'option' => $option_data,
'weight' => $product['weight']
);
}
$data['discount_amount_cart'] = 0;
$total = $this->currency->format($order_info['total'] - $this->cart->getSubTotal(), $order_info['currency_code'], false, false);
if ($total > 0) {
$data['products'][] = array(
'name' => $this->language->get('text_total'),
'model' => '',
'price' => $total,
'quantity' => 1,
'option' => array(),
'weight' => 0
);
}
else {
$data['discount_amount_cart'] -= $total;
}
$data['currency_code'] = $order_info['currency_code'];
$data['first_name'] = html_entity_decode($order_info['payment_firstname'], ENT_QUOTES, 'UTF-8');
$data['last_name'] = html_entity_decode($order_info['payment_lastname'], ENT_QUOTES, 'UTF-8');
$data['address1'] = html_entity_decode($order_info['payment_address_1'], ENT_QUOTES, 'UTF-8');
$data['address2'] = html_entity_decode($order_info['payment_address_2'], ENT_QUOTES, 'UTF-8');
$data['city'] = html_entity_decode($order_info['payment_city'], ENT_QUOTES, 'UTF-8');
$data['zip'] = html_entity_decode($order_info['payment_postcode'], ENT_QUOTES, 'UTF-8');
$data['country'] = $order_info['payment_iso_code_2'];
$data['email'] = $order_info['email'];
$data['invoice'] = $this->session->data['order_id'] . ' - ' . html_entity_decode($order_info['payment_firstname'], ENT_QUOTES, 'UTF-8') . ' ' . html_entity_decode($order_info['payment_lastname'], ENT_QUOTES, 'UTF-8');
$data['lc'] = $this->session->data['language'];
$data['return'] = $this->url->link('checkout/success');
$data['notify_url'] = $this->url->link('extension/payment/sc_pay/callback', '', true);
$data['cancel_return'] = $this->url->link('checkout/checkout', '', true);
$data['custom'] = $this->session->data['order_id'];
return $this->load->view('extension/payment/sc_pay', $data);
}
}
enter code here
コードをどの欄に追加する必要がありますか?私はOpencartにとても新しいです – oriolowonancy
私はそれを試しましたが、私はまだ不足している注文を取得しています。あなたのコードはどのコールバック関数を参照していますか? @ rinkal – oriolowonancy
コールバック関数を作成し、他の支払いゲートウェイのコントローラファイルをチェックする必要があります、あなたは助けを得るでしょう。 –