প্রোগ্রামিয়ালি অজ্ঞাতপরিচয় ব্যবহারকারীদের অর্থ প্রদানের পৃষ্ঠায় পুনর্নির্দেশের জন্য ড্রুপাল কমার্সে একটি অর্ডার তৈরি করা


19

রায়ান এর কিছু দুর্দান্ত কোড রয়েছে যা আপনি প্রোগ্রামিয়ালি একটি অর্ডার তৈরি করতে পারেন

<?php
global $user;
$product_id = 1;
// Create the new order in checkout; you might also check first to
// see if your user already has an order to use instead of a new one.
$order = commerce_order_new($user->uid, 'checkout_checkout');

// Save the order to get its ID.
commerce_order_save($order);

// Load whatever product represents the item the customer will be
// paying for and create a line item for it.
$product = commerce_product_load($product_id);
$line_item = commerce_product_line_item_new($product, 1, $order->order_id);

// Save the line item to get its ID.
commerce_line_item_save($line_item);

// Add the line item to the order using fago's rockin' wrapper.
$order_wrapper = entity_metadata_wrapper('commerce_order', $order);
$order_wrapper->commerce_line_items[] = $line_item;

// Save the order again to update its line item reference field.
commerce_order_save($order);

// Redirect to the order's checkout form. Obviously, if this were a
// form submit handler, you'd just set $form_state['redirect'].
drupal_goto('checkout/' . $order->order_id);
?>

http://www.drupalcommerce.org/questions/3259/it-possible-drupal-commerce-work-without-cart-module

আমার একটি সাইট আছে যেখানে আমি বেনামে অনুদান নিতে চাই যাতে আমার দুটি সমস্যা হয়।

  1. কোনও ব্যবহারকারী যদি সাইটে লগইন না করে থাকে তবে তারা একটি অ্যাক্সেস প্রত্যাখাত বার্তা পায়
  2. চেকআউট প্রক্রিয়া নাম, ঠিকানা ইত্যাদি জিজ্ঞাসা করে

আমি যা করতে চাই তাতে একটি পৃষ্ঠা রয়েছে যেখানে আপনি পরিমাণটি নিশ্চিত করেন তারপরে পেমেন্ট পৃষ্ঠায় নিয়ে যান। এই ক্ষেত্রে আমি পেপাল ডাব্লুপিএস ব্যবহার করছি তাই পুনর্নির্দেশ দুর্দান্ত হবে।

আপনি যে কোনও পরামর্শ দিতে পারেন তা প্রশংসিত হবে।


দুর্দান্ত, আপনি আমাকে প্রশ্ন জিজ্ঞাসা করতে এবং আমার সমস্যাটি মনোমুগ্ধকরভাবে সমাধান করতে বাধা দিতে পারেন :)
ইউসুফ

@ জিলিভেন মন্তব্য করার জন্য ধন্যবাদ আমি এই কাজ পেয়েছিলাম তাই কেবল উত্তরটি আমাকে মনে করিয়ে দেওয়া দরকার। আমি
এটিও

আমি এই কোডটি অন্য প্রকল্পে প্রয়োগ করেছি, তবে কখনই বা রুট ব্যবহারকারীরা এটি চালায় না, ফেরতের পৃষ্ঠাটি পাওয়া যায়নি !!!
ইউসুফ

অনুরোধ করা পৃষ্ঠা "/ ন্যাশারেস্ট / চেকআউট / 12" পাওয়া যায়নি।
ইউসুফ

উত্তর:


12

আপনি কমার্স ড্রাশ নামে একটি নতুন মডিউল পরীক্ষা করার চেষ্টা করতে পারেন যার নিম্নলিখিত বাক্য গঠন রয়েছে:

drush commerce-order-add 1
drush --user=admin commerce-order-add MY_SKU123

ম্যানুয়াল সমাধান

বাণিজ্য ক্ষেত্রে ক্রমক্রমে অর্ডার তৈরির জন্য, আপনি নিম্নলিখিত কোডটি ব্যবহার করতে পারেন (এটি ড্রাশের সাথেও কাজ করে, যেমন drush -vd -u "$1" scr order_code-7.php)। অনুগ্রহ করে নোট করুন যে commerce_payment_exampleমডিউল প্রয়োজনীয়।

<?php

  if (!function_exists('drush_print')) {
    function drush_print ($text) {
      print $text . "\n";
    }
  }

  $is_cli = php_sapi_name() === 'cli';

  global $user;

  // Add the product to the cart
  $product_id = 5;
  $quantity = 1;

  if ($is_cli) {
    drush_print('Creating new order for ' . $quantity . ' item(s) of product ' . $product_id . '...');
  }

  // Create the new order in checkout; you might also check first to
  // see if your user already has an order to use instead of a new one.
  $order = commerce_order_new($user->uid, 'checkout_checkout');

  // Save the order to get its ID.
  commerce_order_save($order);

  if ($is_cli) {
    drush_print('Order created. Commerce order id is now ' . $order->order_id);
    drush_print('Searching product ' . $product_id . ' in a Commerce system...');
  }

  // Load whatever product represents the item the customer will be
  // paying for and create a line item for it.
  $product = commerce_product_load((int)$product_id);

  if((empty($product->product_id)) || (!$product->status)){
    if ($is_cli) {
      drush_print('  Cannot match given product id with a Commerce product id.');
    }

    drupal_set_message(t('Invalid product id'));
    drupal_goto(); // frontpage
    return FALSE;
  }

  if ($is_cli) {
    drush_print('  Found a Commerce product ' . $product->product_id . '.');
  }

  // Create new line item based on selected product
  $line_item = commerce_product_line_item_new($product, 1, $order->order_id);

  if ($is_cli) {
    drush_print('  Added product to the cart.');
  }

  // Save the line item to get its ID.
  commerce_line_item_save($line_item);

  // Add the line item to the order using fago's rockin' wrapper.
  $order_wrapper = entity_metadata_wrapper('commerce_order', $order);
  $order_wrapper->commerce_line_items[] = $line_item;

  if ($is_cli) {
    drush_print('Saving order...');
  }

  // Save the order again to update its line item reference field.
  commerce_order_save($order);

  // Redirect to the order's checkout form. Obviously, if this were a
  // form submit handler, you'd just set $form_state['redirect'].

  if ($is_cli) {
    drush_print('Checking out the order...');
  }

  commerce_checkout_complete($order);

  if ($is_cli) {
    drush_print('Marking order as fully paid...');
  }

  $payment_method = commerce_payment_method_instance_load('commerce_payment_example|commerce_payment_commerce_payment_example');

  if (!$payment_method) {
    if ($is_cli) {
      drush_print("  No example payment method found, we can't mark order as fully paid. Please enable commerce_payment_example module to use this feature.");
    }
  }
  else {
    if ($is_cli) {
      drush_print("  Creating example transaction...");
    }

    // Creating new transaction via commerce_payment_example module.
    $charge      = $order->commerce_order_total['und'][0];

    $transaction = commerce_payment_transaction_new('commerce_payment_example', $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_SUCCESS;
    $transaction->message = 'Name: @name';
    $transaction->message_variables = array('@name' => 'Example payment');

    if ($is_cli) {
      drush_print("  Notifying Commerce about new transaction...");
    }

    commerce_payment_transaction_save($transaction);

    commerce_payment_commerce_payment_transaction_insert($transaction);
  }

  if ($is_cli) {
    drush_print("Marking order as completed...");
  }

  commerce_order_status_update($order, 'completed');

  if ($is_cli) {
    drush_print("\nDone.");
  }

দ্রষ্টব্য: মন্তব্যে যেমন পরামর্শ দেওয়া হয়েছে, অর্ডার সংরক্ষণের সময় পেমেন্ট পদ্ধতি সম্পর্কে যদি আপনার ত্রুটিটি অজানা থাকে তবে নিশ্চিত হয়ে নিন যে আপনি এটি নির্দিষ্ট করেছেন, উদাহরণস্বরূপ

$order->data['payment_method'] = 'commerce_payment_example|commerce_payment_commerce_payment_‌​example';
commerce_order_save($order); 

2
বাণিজ্য ড্রশ মডিউলটি একটি দুর্দান্ত সরঞ্জামের মতো শোনাচ্ছে।
ফ্রান্সিসকো লুজ

ম্যানুয়াল সমাধান অংশটি সম্পর্কে, অর্ডার ইমেল বিজ্ঞপ্তিতে একটি সমস্যা আছে। অর্থ প্রদানের পদ্ধতিটি "অজানা" আমি নিশ্চিত না কেন, আমি ইতিমধ্যে উদাহরণ প্রদানের পদ্ধতিটি ব্যবহার করে পরীক্ষা করেছি এবং এটি "অজানা"
fkaufusi

@fkaufusi আপনাকে কী নতুন অবস্থা চলছে তা যাচাই করতে হবে।
কেনরব

আমি এখন অর্ডার ইমেলের "অজানা" অর্থপ্রদানের পদ্ধতির সমাধান পেয়েছি। অর্ডারটি সংরক্ষণের আগে আমাকে অর্থ প্রদানের পদ্ধতিটি অর্ডারে যুক্ত করতে হবে। এটি টোকেন সিস্টেমটিকে অর্থপ্রদানের পদ্ধতিটি পিকআপ করতে এবং অর্ডার ইমেলটিতে ব্যবহারের অনুমতি দেবে। $ অর্ডার-> ডেটা ['pay_method'] = 'কমার্স_পেমেন্ট_এক্সেম্পল | বাণিজ্য_পরিচালনা_কমার্স_পেমেন্ট_এক্সেমেল'; commerce_order_save ($ অর্ডার);
fkaufusi

5

এই পরিবর্তিত স্ক্রিপ্টটি বেনামে ব্যবহারকারীদের জন্যও কাজ করে:

<?php
global $user;

$product_id = 2;
// Create the new order in checkout; you might also check first to
// see if your user already has an order to use instead of a new one.
$order = commerce_order_new($user->uid, 'checkout_checkout');
// Save the order to get its ID.
commerce_order_save($order);

// Link anonymous user session to the cart
if (!$user->uid) {
    commerce_cart_order_session_save($order->order_id);
}

// Load whatever product represents the item the customer will be
// paying for and create a line item for it.
$product = commerce_product_load($product_id);
$line_item = commerce_product_line_item_new($product, 1, $order->order_id);

// Save the line item to get its ID.
commerce_line_item_save($line_item);

// Add the line item to the order using fago's rockin' wrapper.
$order_wrapper = entity_metadata_wrapper('commerce_order', $order);
$order_wrapper->commerce_line_items[] = $line_item;

// Save the order again to update its line item reference field.
commerce_order_save($order);

// Redirect to the order's checkout form. Obviously, if this were a
// form submit handler, you'd just set $form_state['redirect'].
drupal_goto('checkout/' . $order->order_id);


-1

১. কোনও ব্যবহারকারী যদি সাইটে লগইন না করে থাকে তবে তারা একটি অ্যাক্সেস প্রত্যাখাত বার্তা পায়

আমি কিছু কাজ পেয়েছিলাম কিন্তু আমি অত্যন্ত সন্দেহ যে এটি সেরা অনুশীলন।

শেষ পর্যন্ত প্রতারণা করেছি। আমার ফর্মটিতে যেখানে আপনি ইমেল ঠিকানা সহ আপনার বিশদটি রেখেছেন আমি ফ্লাইতে একটি ব্যবহারকারী অ্যাকাউন্ট তৈরি করি এবং তারপরে ব্যবহারকারীকে লগ ইন করি an অ্যাডমিন ইমেল ঠিকানা)।

যেহেতু আমার সাইটে কেবল অনুদানের ফর্ম পৃষ্ঠা রয়েছে যখন আপনি সেই পৃষ্ঠাটি হিট করেন তা নিশ্চিত করে যে আপনি লগ আউট হয়েছেন (যদি আপনি প্রশাসক না হন)। একটি সফল লেনদেনের সময় এটি আপনাকে লগ আউট করে। আমি অর্ডার ইতিহাস বন্ধ করেছি / জায়গায় পুনর্নির্দেশগুলি রেখেছি যাতে আপনি লগ ইন করার সময় আমার জানা পৃষ্ঠাগুলিতে যেতে পারেন No কোনও ব্যক্তিগত বিবরণ সংরক্ষণ করা হয় না এবং অতীত দানগুলি দেখতে না পারে

আমার পরিস্থিতিতে আমি কীভাবে এটি কাজ করে তাতে খুশি। এটি আদর্শ নয় এবং এটি কয়েকটি ক্ষেত্রেই কাজ করবে।

২. চেকআউট প্রক্রিয়া নাম, ঠিকানা ইত্যাদি জিজ্ঞাসা করে

আমি গিয়েছিলাম

/ অ্যাডমিন / বাণিজ্য / কনফিগ / চেকআউট

এবং অক্ষম

  • হিসাবের তথ্য
  • বিল সংক্রান্ত তথ্য
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.