Exemplo n.º 1
0
 } else {
     $_ph_a = substr($_phone, 0, 3);
     $_ph_b = substr($_phone, 3);
 }
 // US states
 if ($order_info['b_country'] == 'US') {
     $_b_state = $order_info['b_state'];
     // all other states
 } else {
     $_b_state = fn_get_state_name($order_info['b_state'], $order_info['b_country']);
 }
 $return_url = fn_url("payment_notification.return?payment=paypal&order_id={$order_id}", AREA, 'current');
 $cancel_url = fn_url("payment_notification.cancel?payment=paypal&order_id={$order_id}", AREA, 'current');
 $notify_url = fn_url("payment_notification.paypal_ipn", AREA, 'current');
 $post_data = array('charset' => 'utf-8', 'cmd' => '_cart', 'custom' => $order_id, 'invoice' => $paypal_order_id, 'redirect_cmd' => '_xclick', 'rm' => 2, 'email' => $order_info['email'], 'first_name' => $order_info['b_firstname'], 'last_name' => $order_info['b_lastname'], 'address1' => $order_info['b_address'], 'address2' => $order_info['b_address_2'], 'country' => $order_info['b_country'], 'city' => $order_info['b_city'], 'state' => $_b_state, 'zip' => $order_info['b_zipcode'], 'day_phone_a' => $_ph_a, 'day_phone_b' => $_ph_b, 'day_phone_c' => $_ph_c, 'night_phone_a' => $_ph_a, 'night_phone_b' => $_ph_b, 'night_phone_c' => $_ph_c, 'business' => $paypal_account, 'item_name' => $paypal_item_name, 'amount' => $paypal_total, 'upload' => '1', 'currency_code' => $paypal_currency, 'return' => $return_url, 'cancel_return' => $cancel_url, 'notify_url' => $notify_url, 'shipping_1' => $paypal_shipping, 'bn' => 'ST_ShoppingCart_Upload_US');
 list($products, $product_count) = fn_pp_standart_prepare_products($order_info, $paypal_currency);
 $post_data = array_merge($post_data, $products);
 if ($order_info['status'] == STATUS_INCOMPLETED_ORDER) {
     fn_change_order_status($order_id, 'O', '', false);
 }
 if (fn_allowed_for('MULTIVENDOR')) {
     if ($order_info['status'] == STATUS_PARENT_ORDER) {
         $child_orders = db_get_hash_single_array("SELECT order_id, status FROM ?:orders WHERE parent_order_id = ?i", array('order_id', 'status'), $order_id);
         foreach ($child_orders as $order_id => $order_status) {
             if ($order_status == STATUS_INCOMPLETED_ORDER) {
                 fn_change_order_status($order_id, 'O', '', false);
             }
         }
     }
 }
 fn_create_payment_form($paypal_url, $post_data, 'PayPal server', false);
Exemplo n.º 2
0
function fn_validate_paypal_order_info($data, $order_info)
{
    if (empty($data) || empty($order_info)) {
        return false;
    }
    $errors = array();
    if (!isset($data['num_cart_items']) || count($order_info['products']) != $data['num_cart_items']) {
        if (isset($order_info['payment_method']) && isset($order_info['payment_method']['processor_id']) && 'paypal.php' == db_get_field("SELECT processor_script FROM ?:payment_processors WHERE processor_id = ?i", $order_info['payment_method']['processor_id'])) {
            list(, $count) = fn_pp_standart_prepare_products($order_info);
            if ($count != $data['num_cart_items']) {
                $errors[] = __('pp_product_count_is_incorrect');
            }
        }
    }
    if (!isset($order_info['payment_method']['processor_params']) || !isset($order_info['payment_method']['processor_params']['currency']) || !isset($data['mc_currency']) || $data['mc_currency'] != $order_info['payment_method']['processor_params']['currency']) {
        //if cureency defined in paypal settings do not match currency in IPN
        $errors[] = __('pp_currency_is_incorrect');
    } elseif (!isset($data['mc_gross']) || !isset($order_info['total']) || (double) $data['mc_gross'] != (double) $order_info['total']) {
        //if currency is ok, check totals
        $errors[] = __('pp_total_is_incorrect');
    }
    if (!empty($errors)) {
        $pp_response['ipn_errors'] = implode('; ', $errors);
        fn_update_order_payment_info($order_info['order_id'], $pp_response);
        return false;
    }
    return true;
}