예제 #1
0
 /**
  * Creates an Simplify_Customer object
  * @param     array $hash a map of parameters; valid keys are:<dl style="padding-left:10px;">
  *     <dt><tt>card.addressCity</tt></dt>    <dd>City of the cardholder. </dd>
  *     <dt><tt>card.addressCountry</tt></dt>    <dd>Country code (ISO-3166-1-alpha-2 code) of residence of the cardholder. </dd>
  *     <dt><tt>card.addressLine1</tt></dt>    <dd>Address of the cardholder </dd>
  *     <dt><tt>card.addressLine2</tt></dt>    <dd>Address of the cardholder if needed. </dd>
  *     <dt><tt>card.addressState</tt></dt>    <dd>State code (USPS code) of residence of the cardholder. </dd>
  *     <dt><tt>card.addressZip</tt></dt>    <dd>Postal code of the cardholder. </dd>
  *     <dt><tt>card.cvc</tt></dt>    <dd>CVC security code of the card. This is the code on the back of the card. Example: 123 </dd>
  *     <dt><tt>card.expMonth</tt></dt>    <dd>Expiration month of the card. Format is MM. Example: January = 01 <strong>required </strong></dd>
  *     <dt><tt>card.expYear</tt></dt>    <dd>Expiration year of the card. Format is YY. Example: 2013 = 13 <strong>required </strong></dd>
  *     <dt><tt>card.name</tt></dt>    <dd>Name as appears on the card. </dd>
  *     <dt><tt>card.number</tt></dt>    <dd>Card number as it appears on the card. <strong>required </strong></dd>
  *     <dt><tt>email</tt></dt>    <dd>Email address of the customer <strong>required </strong></dd>
  *     <dt><tt>name</tt></dt>    <dd>Customer name <strong>required </strong></dd>
  *     <dt><tt>reference</tt></dt>    <dd>Reference field for external applications use. </dd>
  *     <dt><tt>subscriptions.amount</tt></dt>    <dd>Amount of payment in minor units. Example: 1000 = 10.00 </dd>
  *     <dt><tt>subscriptions.coupon</tt></dt>    <dd>Coupon associated with the subscription for the customer. </dd>
  *     <dt><tt>subscriptions.currency</tt></dt>    <dd>Currency code (ISO-4217). Must match the currency associated with your account. <strong>default:USD</strong></dd>
  *     <dt><tt>subscriptions.customer</tt></dt>    <dd>The customer ID to create the subscription for. Do not supply this when creating a customer. </dd>
  *     <dt><tt>subscriptions.frequency</tt></dt>    <dd>Frequency of payment for the plan. Example: Monthly </dd>
  *     <dt><tt>subscriptions.name</tt></dt>    <dd>Name describing subscription </dd>
  *     <dt><tt>subscriptions.plan</tt></dt>    <dd>The plan ID that the subscription should be created from. </dd>
  *     <dt><tt>subscriptions.quantity</tt></dt>    <dd>Quantity of the plan for the subscription. </dd></dl>
  * @param     string publicKey Public key. If null, the value of static Simplify::$publicKey will be used
  * @param     string privateKey Private key. If null, the value of static Simplify::$privateKey will be used
  * @return    Customer a Customer object.
  */
 public static function createCustomer($hash, $publicKey = null, $privateKey = null)
 {
     $instance = new Simplify_Customer();
     $instance->setAll($hash);
     $object = Simplify_PaymentsApi::createObject($instance, $publicKey, $privateKey);
     return $object;
 }
 /**
  * Creates an Simplify_Customer object
  * @param     array $hash a map of parameters; valid keys are:<dl style="padding-left:10px;">
  *     <dt><tt>card.addressCity</tt></dt>    <dd>City of the cardholder. <strong>required </strong></dd>
  *     <dt><tt>card.addressCountry</tt></dt>    <dd>Country code (ISO-3166-1-alpha-2 code) of residence of the cardholder. <strong>required </strong></dd>
  *     <dt><tt>card.addressLine1</tt></dt>    <dd>Address of the cardholder <strong>required </strong></dd>
  *     <dt><tt>card.addressLine2</tt></dt>    <dd>Address of the cardholder if needed. <strong>required </strong></dd>
  *     <dt><tt>card.addressState</tt></dt>    <dd>State code (USPS code) of residence of the cardholder. <strong>required </strong></dd>
  *     <dt><tt>card.addressZip</tt></dt>    <dd>Postal code of the cardholder. The postal code size is between 5 and 9 in length and only contain numbers or letters. <strong>required </strong></dd>
  *     <dt><tt>card.cvc</tt></dt>    <dd>CVC security code of the card. This is the code on the back of the card. Example: 123 <strong>required </strong></dd>
  *     <dt><tt>card.expMonth</tt></dt>    <dd>Expiration month of the card. Format is MM. Example: January = 01 <strong>required </strong></dd>
  *     <dt><tt>card.expYear</tt></dt>    <dd>Expiration year of the card. Format is YY. Example: 2013 = 13 <strong>required </strong></dd>
  *     <dt><tt>card.id</tt></dt>    <dd>ID of card. Unused during customer create. </dd>
  *     <dt><tt>card.name</tt></dt>    <dd>Name as appears on the card. <strong>required </strong></dd>
  *     <dt><tt>card.number</tt></dt>    <dd>Card number as it appears on the card. [max length: 19, min length: 13] </dd>
  *     <dt><tt>email</tt></dt>    <dd>Email address of the customer <strong>required </strong></dd>
  *     <dt><tt>name</tt></dt>    <dd>Customer name [min length: 2] <strong>required </strong></dd>
  *     <dt><tt>reference</tt></dt>    <dd>Reference field for external applications use. </dd>
  *     <dt><tt>subscriptions.amount</tt></dt>    <dd>Amount of payment in the smallest unit of your currency. Example: 100 = $1.00USD </dd>
  *     <dt><tt>subscriptions.billingCycle</tt></dt>    <dd>How the plan is billed to the customer. Values must be AUTO (indefinitely until the customer cancels) or FIXED (a fixed number of billing cycles). [default: AUTO] </dd>
  *     <dt><tt>subscriptions.billingCycleLimit</tt></dt>    <dd>The number of fixed billing cycles for a plan. Only used if the billingCycle parameter is set to FIXED. Example: 4 </dd>
  *     <dt><tt>subscriptions.coupon</tt></dt>    <dd>Coupon associated with the subscription for the customer. </dd>
  *     <dt><tt>subscriptions.currency</tt></dt>    <dd>Currency code (ISO-4217). Must match the currency associated with your account. [default: USD] </dd>
  *     <dt><tt>subscriptions.customer</tt></dt>    <dd>The customer ID to create the subscription for. Do not supply this when creating a customer. </dd>
  *     <dt><tt>subscriptions.frequency</tt></dt>    <dd>Frequency of payment for the plan. Used in conjunction with frequencyPeriod. Valid values are "DAILY", "WEEKLY", "MONTHLY" and "YEARLY". </dd>
  *     <dt><tt>subscriptions.frequencyPeriod</tt></dt>    <dd>Period of frequency of payment for the plan. Example: if the frequency is weekly, and periodFrequency is 2, then the subscription is billed bi-weekly. </dd>
  *     <dt><tt>subscriptions.name</tt></dt>    <dd>Name describing subscription </dd>
  *     <dt><tt>subscriptions.plan</tt></dt>    <dd>The plan ID that the subscription should be created from. </dd>
  *     <dt><tt>subscriptions.quantity</tt></dt>    <dd>Quantity of the plan for the subscription. [min value: 1] </dd>
  *     <dt><tt>subscriptions.renewalReminderLeadDays</tt></dt>    <dd>If set, how many days before the next billing cycle that a renewal reminder is sent to the customer. If null, then no emails are sent. Minimum value is 7 if set. </dd>
  *     <dt><tt>token</tt></dt>    <dd>If specified, card associated with card token will be used </dd></dl>
  * @param     $authentication -  information used for the API call.  If no value is passed the global keys Simplify::public_key and Simplify::private_key are used.  <i>For backwards compatibility the public and private keys may be passed instead of the authentication object.<i/>
  * @return    Customer a Customer object.
  */
 public static function createCustomer($hash, $authentication = null)
 {
     $args = func_get_args();
     $authentication = Simplify_PaymentsApi::buildAuthenticationObject($authentication, $args, 2);
     $instance = new Simplify_Customer();
     $instance->setAll($hash);
     $object = Simplify_PaymentsApi::createObject($instance, $authentication);
     return $object;
 }
 /**
  * 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);
     }
 }
예제 #5
0
<?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);
예제 #6
0
<?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);
예제 #7
0
$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">