/** * Actualy saves a customer token to the database. * * @param WC_Payment_Token $customer_token Payment Token * @param string $cart_token CC Token * @param array $customer_info 'email', 'name' */ public function save_token($customer_token, $cart_token, $customer_info) { if (!is_null($customer_token)) { $customer = Simplify_Customer::findCustomer($customer_token->get_token()); $updates = array('token' => $cart_token); $customer->setAll($updates); $customer->updateCustomer(); $customer = Simplify_Customer::findCustomer($customer_token->get_token()); // get updated customer with new set card $token = $customer_token; } else { $customer = Simplify_Customer::createCustomer(array('token' => $cart_token, 'email' => $customer_info['email'], 'name' => $customer_info['name'])); $token = new WC_Payment_Token_CC(); $token->set_token($customer->id); } // If we were able to create an save our card, save the data on our side too if (is_object($customer) && '' != $customer->id) { $customer_properties = $customer->getProperties(); $card = $customer_properties['card']; $token->set_gateway_id($this->id); $token->set_card_type(strtolower($card->type)); $token->set_last4($card->last4); $expiry_month = 1 === strlen($card->expMonth) ? '0' . $card->expMonth : $card->expMonth; $token->set_expiry_month($expiry_month); $token->set_expiry_year('20' . $card->expYear); if (is_user_logged_in()) { $token->set_user_id(get_current_user_id()); } $token->save(); return $token; } return null; }
/** * Process the pre-order. * * @param WC_Order $order * @param string $cart_token * @uses Simplify_ApiException * @uses Simplify_BadRequestException * @return array */ protected function process_pre_order($order, $cart_token = '') { if (WC_Pre_Orders_Order::order_requires_payment_tokenization($order->id)) { try { if ($order->order_total * 100 < 50) { $error_msg = __('Sorry, the minimum allowed order total is 0.50 to use this payment method.', 'woocommerce'); throw new Simplify_ApiException($error_msg); } if (empty($cart_token)) { $error_msg = __('Please make sure your card details have been entered correctly and that your browser supports JavaScript.', 'woocommerce'); if ('yes' == $this->sandbox) { $error_msg .= ' ' . __('Developers: Please make sure that you\'re including jQuery and there are no JavaScript errors on the page.', 'woocommerce'); } throw new Simplify_ApiException($error_msg); } // Create customer $customer = Simplify_Customer::createCustomer(array('token' => $cart_token, 'email' => $order->billing_email, 'name' => trim($order->get_formatted_billing_full_name()), 'reference' => $order->id)); if (is_object($customer) && '' != $customer->id) { $customer_id = wc_clean($customer->id); // Store the customer ID in the order update_post_meta($order->id, '_simplify_customer_id', $customer_id); } else { $error_msg = __('Error creating user in Simplify Commerce.', 'woocommerce'); throw new Simplify_ApiException($error_msg); } // Reduce stock levels $order->reduce_order_stock(); // Remove cart WC()->cart->empty_cart(); // Is pre ordered! WC_Pre_Orders_Order::mark_order_as_pre_ordered($order); // Return thank you page redirect return array('result' => 'success', 'redirect' => $this->get_return_url($order)); } catch (Simplify_ApiException $e) { if ($e instanceof Simplify_BadRequestException && $e->hasFieldErrors() && $e->getFieldErrors()) { foreach ($e->getFieldErrors() as $error) { wc_add_notice($error->getFieldName() . ': "' . $error->getMessage() . '" (' . $error->getErrorCode() . ')', 'error'); } } else { wc_add_notice($e->getMessage(), 'error'); } return array('result' => 'fail', 'redirect' => ''); } } else { return parent::process_standard_payments($order, $cart_token); } }
<?php require_once "./lib/Simplify.php"; Simplify::$publicKey = 'sbpb_YmFhN2JmZTMtZDBkZi00MzA5LWI5M2EtYTBjNjlkNTE3ZTVm'; Simplify::$privateKey = 'Eu/MTPwWMsL97YuJ5XCI8oIW0Sl7uGskdUbY4VXsWsx5YFFQL0ODSXAOkNtXTToq'; $plan = Simplify_Plan::createPlan(array('amount' => '1100', 'renewalReminderLeadDays' => '7', 'name' => 'TESTING', 'billingCycle' => 'FIXED', 'frequency' => 'WEEKLY', 'billingCycleLimit' => '4', 'frequencyPeriod' => '1')); $customer = Simplify_Customer::createCustomer(array('subscriptions' => array(array('plan' => $plan->id)), 'email' => '*****@*****.**', 'name' => 'Testing Testing', 'card' => array('expMonth' => '11', 'expYear' => '19', 'cvc' => '123', 'number' => '5555555555554444'), 'reference' => 'Testing 1')); print_r($customer);
<?php require_once "./lib/Simplify.php"; Simplify::$publicKey = 'sbpb_YmFhN2JmZTMtZDBkZi00MzA5LWI5M2EtYTBjNjlkNTE3ZTVm'; Simplify::$privateKey = 'Eu/MTPwWMsL97YuJ5XCI8oIW0Sl7uGskdUbY4VXsWsx5YFFQL0ODSXAOkNtXTToq'; $customer = Simplify_Customer::createCustomer(array('subscriptions' => array(array('plan' => '[PLAN ID]')), 'email' => '*****@*****.**', 'name' => 'Customer Customer', 'card' => array('expMonth' => '11', 'expYear' => '19', 'cvc' => '123', 'number' => '5555555555554444'), 'reference' => 'Ref1')); print_r($customer);
$state = $_REQUEST['state']; $zip = $_REQUEST['zip']; //Generate payment description $description = ""; foreach ($orders as $productId => $quantity) { $description .= $merchant->products[$productId]->name . ":\$" . number_format($merchant->products[$productId]->price / 100, 2) . "X" . $quantity . ","; } $description .= $address . " " . $city . " " . $state . " " . $zip; session_destroy(); try { Simplify::$publicKey = $simplifyPublicKey; Simplify::$privateKey = $simplifyPrivateKey; // if the save card details flag is set if ($_REQUEST['saveCardDetails'] == true && isset($customerName) == true && isset($customerEmail) == true) { // create a customer $customer = Simplify_Customer::createCustomer(array('token' => $simplifyToken, 'email' => $customerEmail, 'name' => $customerName, 'reference' => 'Simplify Cake customer')); // make a payment with the customer $payment = Simplify_Payment::createPayment(array('amount' => $totalAmount, 'description' => $description, 'currency' => 'USD', 'customer' => $customer->id)); } else { // make a payment with a card token $payment = Simplify_Payment::createPayment(array('amount' => $totalAmount, 'token' => $simplifyToken, 'description' => $description, 'currency' => 'USD')); } } catch (Exception $e) { //Something wrong //Error handling needed //echo $e; } ?> <!DOCTYPE html> <html lang="en">