Вы здесь

Рендер и обработка mypaymentmethod_redirect_form () со страницы, сформированной Views

1

Добрый день.
Пытаюсь делать магазинчик. Задумка такая: для каждого заказа при оформлении заказа формируется url вида myshop.com/order/uaqfui8af6j. Ключ uaqfui8af6j хранится в простом текстовом поле в order. Эта ссылка отправляется заказчику после подтверждения менеджером и по ней заказчик попадает на страницу с деталями заказа, сформированную с помощью Views. Собственно на этой странице и должна быть форма mypaymentmethod_redirect_form(). Подскажите способ это реализовать.

Версия Drupal: 
7.x
Категория: 
Form API
Связанные проекты: 
Drupal Commerce
Вопрос задан 29.05.2015 - 13:40

Расскажу подробнее о ТЗ:
1. Регистрация в магазине не предусмотрена.
2. Подключить платежную систему (в моем случае Payonline) и дать возможность покупателям оплачивать свои заказы.
Для формирования страницы я воспользовался большей частью этим способом. Добавил к сущности commerce_order текстовое поле anonimous_url, который генерируется на стадии commerce_checkout_complete

function mymodule_commerce_checkout_complete($order) {
     $order_wrapper = entity_metadata_wrapper('commerce_order', $order);
    if(empty($order->field_anonymous_url)){
        $order_wrapper->field_anonymous_url=drupal_random_key(10);
    }
    commerce_order_save($order);
}

Метод оплаты создается стандартным способом. Но для пропуска стадии оплаты я добавил функцию

function payonline_submit_form_submit($payment_method, $pane_form, $pane_values, $order, $charge){
    payonline_transaction($payment_method, $order, $charge);

}

//создание транзакции
function payonline_transaction($payment_method, $order, $charge){
    $transaction = commerce_payment_transaction_new('payonline', $order->order_id);
    $transaction->instance_id = $payment_method['instance_id'];
    $transaction->amount = $charge['amount'];
    $transaction->currency_code = $charge['currency_code'];
    $transaction->status = COMMERCE_PAYMENT_STATUS_PENDING;

    $transaction->message = t("Transaction @method_name created");
    $transaction->message_variables = array(
        '@method_name' => $payment_method['title'],
    );

    commerce_payment_transaction_save($transaction);
    return $transaction;
}

Теперь после завершения оформления заказа покупатель сразу переходит к checkout/%/complete, а в админке появляется заказ, который подтверждается менеджером. После подтверждения покупателю отправляется ссылка на вьюху.

Комментарий оставлен 31.05.2015 - 13:08

Ответы