本文整理汇总了PHP中edd_empty_cart函数的典型用法代码示例。如果您正苦于以下问题:PHP edd_empty_cart函数的具体用法?PHP edd_empty_cart怎么用?PHP edd_empty_cart使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了edd_empty_cart函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: edd_process_paytm_gateway_ipn
function edd_process_paytm_gateway_ipn()
{
global $edd_options;
if (isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] != 'POST') {
return;
}
$payment_id = $_GET['payment_id'];
if (empty($payment_id)) {
edd_send_back_to_checkout('?payment-mode=paytm_gateway');
}
// Fallback just in case post_max_size is lower than needed
if (isset($_POST['ORDERID']) && isset($_POST['RESPCODE'])) {
$order_sent = $_POST['ORDERID'];
$responseDescription = $_POST['RESPMSG'];
if ($_POST['RESPCODE'] == '01') {
// success
$order_sent = $_POST['ORDERID'];
$res_code = $_POST['RESPCODE'];
$responseDescription = $_POST['RESPMSG'];
$checksum_recv = $_POST['CHECKSUMHASH'];
$paramList = $_POST;
$order_amount = $_POST['TXNAMOUNT'];
// code by paytm team
$bool = "FALSE";
$secret_key = $edd_options['paytm_mer_access_key'];
$bool = verifychecksum_e($paramList, $secret_key, $checksum_recv);
if ($bool == "TRUE") {
$payment_meta = edd_get_payment_meta($payment_id);
edd_insert_payment_note($payment_id, sprintf(__('Thank you for your order . Your transaction has been successful. Paytm Transaction ID: %s', 'edd'), $_REQUEST['TXNID']));
edd_set_payment_transaction_id($payment_id, $_REQUEST['TXNID']);
edd_update_payment_status($payment_id, 'complete');
edd_empty_cart();
edd_send_to_success_page();
} else {
edd_record_gateway_error(__('Paytm Error', 'edd'), sprintf(__('Transaction Failed Invalid Checksum', 'edd'), ''), $payment_id);
edd_update_payment_status($payment_id, 'failed');
edd_insert_payment_note($payment_id, sprintf(__('Transaction Failed Invalid Checksum', 'edd'), ''));
wp_redirect('?page_id=6&payment-mode=paytm_gateway');
//edd_send_back_to_checkout( '?payment-mode=paytm_gateway' );
}
} else {
edd_record_gateway_error(__('Paytm Error', 'edd'), sprintf(__('Transaction Failed. %s', 'edd'), $responseDescription), $payment_id);
edd_update_payment_status($payment_id, 'failed');
edd_insert_payment_note($payment_id, sprintf(__('Transaction Failed. %s', 'edd'), $responseDescription));
wp_redirect('?page_id=6&payment-mode=paytm_gateway');
}
} else {
edd_record_gateway_error(__('Paytm Error', 'edd'), sprintf(__('Transaction Failed, No Response ', 'edd'), ''), $payment_id);
edd_update_payment_status($payment_id, 'failed');
edd_insert_payment_note($payment_id, sprintf(__('Transaction Failed, No Response ', 'edd'), ''));
wp_redirect('?page_id=6&payment-mode=paytm_gateway');
}
exit;
}
示例2: edd_manual_payment
/**
* Manual Payment
*
* @access private
* @since 1.0
* @return void
*/
function edd_manual_payment($purchase_data)
{
global $edd_options;
/*
* purchase data comes in like this
*
$purchase_data = array(
'downloads' => array of download IDs,
'price' => total price of cart contents,
'purchase_key' => // random key
'user_email' => $user_email,
'date' => date('Y-m-d H:i:s'),
'user_id' => $user_id,
'post_data' => $_POST,
'user_info' => array of user's information and used discount code
'cart_details' => array of cart details,
);
*/
$payment = array('price' => $purchase_data['price'], 'date' => $purchase_data['date'], 'user_email' => $purchase_data['user_email'], 'purchase_key' => $purchase_data['purchase_key'], 'currency' => $edd_options['currency'], 'downloads' => $purchase_data['downloads'], 'user_info' => $purchase_data['user_info'], 'cart_details' => $purchase_data['cart_details'], 'status' => 'pending');
// record the pending payment
$payment = edd_insert_payment($payment);
if ($payment) {
edd_update_payment_status($payment, 'publish');
// empty the shopping cart
edd_empty_cart();
edd_send_to_success_page();
} else {
// if errors are present, send the user back to the purchase page so they can be corrected
edd_send_back_to_checkout('?payment-mode=' . $purchase_data['post_data']['edd-gateway']);
}
}
示例3: edd_manual_payment
/**
* Processes the purchase data and uses the Manual Payment gateway to record
* the transaction in the Purchase History
*
* @since 1.0
* @param array $purchase_data Purchase Data
* @return void
*/
function edd_manual_payment($purchase_data)
{
if (!wp_verify_nonce($purchase_data['gateway_nonce'], 'edd-gateway')) {
wp_die(__('Nonce verification has failed', 'edd'), __('Error', 'edd'), array('response' => 403));
}
/*
* Purchase data comes in like this
*
$purchase_data = array(
'downloads' => array of download IDs,
'price' => total price of cart contents,
'purchase_key' => // Random key
'user_email' => $user_email,
'date' => date('Y-m-d H:i:s'),
'user_id' => $user_id,
'post_data' => $_POST,
'user_info' => array of user's information and used discount code
'cart_details' => array of cart details,
);
*/
$payment_data = array('price' => $purchase_data['price'], 'date' => $purchase_data['date'], 'user_email' => $purchase_data['user_email'], 'purchase_key' => $purchase_data['purchase_key'], 'currency' => edd_get_currency(), 'downloads' => $purchase_data['downloads'], 'user_info' => $purchase_data['user_info'], 'cart_details' => $purchase_data['cart_details'], 'status' => 'pending');
// Record the pending payment
$payment = edd_insert_payment($payment_data);
if ($payment) {
edd_update_payment_status($payment, 'publish');
// Empty the shopping cart
edd_empty_cart();
edd_send_to_success_page();
} else {
edd_record_gateway_error(__('Payment Error', 'edd'), sprintf(__('Payment creation failed while processing a manual (free or test) purchase. Payment data: %s', 'edd'), json_encode($payment_data)), $payment);
// If errors are present, send the user back to the purchase page so they can be corrected
edd_send_back_to_checkout('?payment-mode=' . $purchase_data['post_data']['edd-gateway']);
}
}
示例4: edd_process_paymentwall_purchase
function edd_process_paymentwall_purchase($purchase_data)
{
global $edd_options;
// Collect payment data
$payment_data = array('price' => $purchase_data['price'], 'date' => $purchase_data['date'], 'user_email' => $purchase_data['user_email'], 'purchase_key' => $purchase_data['purchase_key'], 'currency' => edd_get_currency(), 'downloads' => $purchase_data['downloads'], 'user_info' => $purchase_data['user_info'], 'cart_details' => $purchase_data['cart_details'], 'gateway' => 'paymentwall', 'status' => 'pending');
// Record the pending payment
$payment = edd_insert_payment($payment_data);
// Check payment
if (!$payment) {
// Record the error
edd_record_gateway_error(__('Payment Error', 'edd'), sprintf(__('Payment creation failed before sending buyer to Paymentwall. Payment data: %s', 'edd'), json_encode($payment_data)), $payment);
// Problems? send back
edd_send_back_to_checkout('?payment-mode=' . $purchase_data['post_data']['edd-gateway']);
} else {
edd_initialize_paymentwall_lib();
$widget = new Paymentwall_Widget($purchase_data['user_email'], $edd_options['paymentwall_widget_code'], array(new Paymentwall_Product($payment, $purchase_data['price'], edd_get_currency(), stripslashes(html_entity_decode(wp_strip_all_tags(edd_get_purchase_summary($purchase_data, false)), ENT_COMPAT, 'UTF-8')))), array('success_url' => add_query_arg('payment-confirmation', 'paymentwall', get_permalink($edd_options['success_page'])), 'email' => $purchase_data['user_email'], 'sign_version' => Paymentwall_Signature_Abstract::VERSION_THREE, 'integration_module' => 'easy_digital_downloads'));
// Get rid of cart contents
edd_empty_cart();
if (!empty($edd_options['paymentwall_widget_mode']) && $edd_options['paymentwall_widget_mode'] == 'iframe') {
echo $htmlCode = $widget->getHtmlCode(array('width' => '100%', 'allowtransparency' => 'true'));
} else {
wp_redirect($widget->getUrl());
}
exit;
}
}
示例5: edd_process_paypal_purchase
/**
* Process PayPal Purchase
*
* @since 1.0
* @global $edd_options Array of all the EDD Options
* @param array $purchase_data Purchase Data
* @return void
*/
function edd_process_paypal_purchase($purchase_data)
{
global $edd_options;
// Check there is a gateway name
if (!isset($purchase_data['post_data']['edd-gateway'])) {
return;
}
/*
Purchase data comes in like this:
$purchase_data = array(
'downloads' => array of download IDs,
'tax' => taxed amount on shopping cart
'subtotal' => total price before tax
'price' => total price of cart contents after taxes,
'purchase_key' => // Random key
'user_email' => $user_email,
'date' => date( 'Y-m-d H:i:s' ),
'user_id' => $user_id,
'post_data' => $_POST,
'user_info' => array of user's information and used discount code
'cart_details' => array of cart details,
);
*/
// Collect payment data
$payment_data = array('price' => $purchase_data['price'], 'date' => $purchase_data['date'], 'user_email' => $purchase_data['user_email'], 'purchase_key' => $purchase_data['purchase_key'], 'currency' => edd_get_currency(), 'downloads' => $purchase_data['downloads'], 'user_info' => $purchase_data['user_info'], 'cart_details' => $purchase_data['cart_details'], 'status' => 'pending');
// Record the pending payment
$payment = edd_insert_payment($payment_data);
// Check payment
if (!$payment) {
// Record the error
edd_record_gateway_error(__('Payment Error', 'edd'), sprintf(__('Payment creation failed before sending buyer to PayPal. Payment data: %s', 'edd'), json_encode($payment_data)), $payment);
// Problems? send back
edd_send_back_to_checkout('?payment-mode=' . $purchase_data['post_data']['edd-gateway']);
} else {
// Only send to PayPal if the pending payment is created successfully
$listener_url = trailingslashit(home_url()) . '?edd-listener=IPN';
// Get the success url
$return_url = add_query_arg('payment-confirmation', 'paypal', get_permalink($edd_options['success_page']));
// Get the complete cart cart_summary
$summary = edd_get_purchase_summary($purchase_data, false);
// Get the PayPal redirect uri
$paypal_redirect = trailingslashit(edd_get_paypal_redirect()) . '?';
// Setup PayPal arguments
$paypal_args = array('cmd' => '_xclick', 'amount' => round($purchase_data['price'] - $purchase_data['tax'], 2), 'business' => $edd_options['paypal_email'], 'item_name' => stripslashes_deep(html_entity_decode(wp_strip_all_tags($summary), ENT_COMPAT, 'UTF-8')), 'email' => $purchase_data['user_email'], 'no_shipping' => '1', 'shipping' => '0', 'no_note' => '1', 'currency_code' => edd_get_currency(), 'item_number' => $purchase_data['purchase_key'], 'charset' => get_bloginfo('charset'), 'custom' => $payment, 'rm' => '2', 'return' => $return_url, 'cancel_return' => edd_get_failed_transaction_uri(), 'notify_url' => $listener_url, 'page_style' => edd_get_paypal_page_style());
if (edd_use_taxes()) {
$paypal_args['tax'] = $purchase_data['tax'];
}
$paypal_args = apply_filters('edd_paypal_redirect_args', $paypal_args, $purchase_data);
// Build query
$paypal_redirect .= http_build_query($paypal_args);
// Get rid of cart contents
edd_empty_cart();
// Redirect to PayPal
wp_redirect($paypal_redirect);
exit;
}
}
示例6: process_empty_cart
public function process_empty_cart()
{
if (isset($_GET['empty_cart'])) {
if ($_GET['empty_cart'] == '1') {
edd_empty_cart();
wp_redirect(remove_query_arg('empty_cart'));
exit;
}
}
}
示例7: edd_process_paypal_purchase
/**
* Process PayPal Purchase
*
* @access private
* @since 1.0
* @return void
*/
function edd_process_paypal_purchase($purchase_data)
{
global $edd_options;
// check there is a gateway name
if (!isset($purchase_data['post_data']['edd-gateway'])) {
return;
}
/*
Purchase data comes in like this:
////////////////////////////////
$purchase_data = array(
'downloads' => array of download IDs,
'price' => total price of cart contents,
'purchase_key' => // random key
'user_email' => $user_email,
'date' => date( 'Y-m-d H:i:s' ),
'user_id' => $user_id,
'post_data' => $_POST,
'user_info' => array of user's information and used discount code
'cart_details' => array of cart details,
);
*/
// collect payment data
$payment_data = array('price' => $purchase_data['price'], 'date' => $purchase_data['date'], 'user_email' => $purchase_data['user_email'], 'purchase_key' => $purchase_data['purchase_key'], 'currency' => $edd_options['currency'], 'downloads' => $purchase_data['downloads'], 'user_info' => $purchase_data['user_info'], 'cart_details' => $purchase_data['cart_details'], 'status' => 'pending');
// record the pending payment
$payment = edd_insert_payment($payment_data);
// check payment
if (!$payment) {
// problems? send back
edd_send_back_to_checkout('?payment-mode=' . $purchase_data['post_data']['edd-gateway']);
} else {
// only send to PayPal if the pending payment is created successfully
$listener_url = trailingslashit(home_url()) . '?edd-listener=IPN';
// get the success url
$return_url = add_query_arg('payment-confirmation', 'paypal', get_permalink($edd_options['success_page']));
// get the complete cart summary
$cart_summary = edd_get_purchase_summary($purchase_data, false);
// get the PayPal redirect uri
$paypal_redirect = trailingslashit(edd_get_paypal_redirect()) . '?';
// setup PayPal arguments
$paypal_args = array('cmd' => '_xclick', 'amount' => $purchase_data['price'], 'business' => $edd_options['paypal_email'], 'item_name' => stripslashes_deep(html_entity_decode($cart_summary, ENT_COMPAT, 'UTF-8')), 'email' => $purchase_data['user_email'], 'no_shipping' => '1', 'shipping' => '0', 'no_note' => '1', 'currency_code' => $edd_options['currency'], 'item_number' => $purchase_data['purchase_key'], 'charset' => get_bloginfo('charset'), 'custom' => $payment, 'rm' => '2', 'return' => $return_url, 'notify_url' => $listener_url);
// build query
$paypal_redirect .= http_build_query(apply_filters('edd_paypal_redirect_args', $paypal_args, $purchase_data));
// get rid of cart contents
edd_empty_cart();
// Redirect to PayPal
wp_redirect($paypal_redirect);
exit;
}
}
示例8: edd_process_paypal_purchase
/**
* Process PayPal Purchase
*
* @access private
* @since 1.0
* @return void
*/
function edd_process_paypal_purchase($purchase_data)
{
global $edd_options;
/*
* purchase data comes in like this
*
$purchase_data = array(
'downloads' => array of download IDs,
'price' => total price of cart contents,
'purchase_key' => // random key
'user_email' => $user_email,
'date' => date('Y-m-d H:i:s'),
'user_id' => $user_id,
'post_data' => $_POST,
'user_info' => array of user's information and used discount code
'cart_details' => array of cart details,
);
*/
$payment_data = array('price' => $purchase_data['price'], 'date' => $purchase_data['date'], 'user_email' => $purchase_data['user_email'], 'purchase_key' => $purchase_data['purchase_key'], 'currency' => $edd_options['currency'], 'downloads' => $purchase_data['downloads'], 'user_info' => $purchase_data['user_info'], 'cart_details' => $purchase_data['cart_details'], 'status' => 'pending');
// record the pending payment
$payment = edd_insert_payment($payment_data);
if ($payment) {
// only send to paypal if the pending payment is created successfully
$listener_url = trailingslashit(home_url()) . '?edd-listener=IPN';
$return_url = add_query_arg('payment-confirmation', 'paypal', get_permalink($edd_options['success_page']));
$cart_summary = edd_get_purchase_summary($purchase_data, false);
// one time payment
if (edd_is_test_mode()) {
$paypal_redirect = 'https://www.sandbox.paypal.com/cgi-bin/webscr/?';
} else {
$paypal_redirect = 'https://www.paypal.com/cgi-bin/webscr/?';
}
$paypal_args = array('cmd' => '_xclick', 'amount' => $purchase_data['price'], 'business' => $edd_options['paypal_email'], 'item_name' => $cart_summary, 'email' => $purchase_data['user_email'], 'no_shipping' => '1', 'no_note' => '1', 'currency_code' => $edd_options['currency'], 'item_number' => $purchase_data['purchase_key'], 'charset' => 'UTF-8', 'custom' => $payment, 'rm' => '2', 'return' => $return_url, 'notify_url' => $listener_url);
//var_dump(http_build_query($paypal_args)); exit;
$paypal_redirect .= http_build_query($paypal_args);
//var_dump(urldecode($paypal_redirect)); exit;
// get rid of cart contents
edd_empty_cart();
// Redirect to paypal
wp_redirect($paypal_redirect);
exit;
} else {
// if errors are present, send the user back to the purchase page so they can be corrected
edd_send_back_to_checkout('?payment-mode=' . $purchase_data['post_data']['edd-gateway']);
}
}
示例9: sofort_process_payment
function sofort_process_payment($purchase_data)
{
global $edd_options;
// check there is a gateway name
if (!isset($purchase_data['post_data']['edd-gateway'])) {
return;
}
// collect payment data
$payment_data = array('price' => $purchase_data['price'], 'date' => $purchase_data['date'], 'user_email' => $purchase_data['user_email'], 'purchase_key' => $purchase_data['purchase_key'], 'currency' => $edd_options['currency'], 'downloads' => $purchase_data['downloads'], 'user_info' => $purchase_data['user_info'], 'cart_details' => $purchase_data['cart_details'], 'status' => 'pending');
$errors = edd_get_errors();
if ($errors) {
// problems? send back
edd_send_back_to_checkout('?payment-mode=' . $purchase_data['post_data']['edd-gateway']);
} else {
$payment = edd_insert_payment($payment_data);
// check payment
if (!$payment) {
edd_send_back_to_checkout('?payment-mode=' . $purchase_data['post_data']['edd-gateway']);
} else {
if (!class_exists('SofortLib')) {
require_once 'library/sofortLib.php';
}
$return_url = add_query_arg('payment-confirmation', 'paypal', get_permalink($edd_options['success_page']));
$Sofort = new SofortLib_Multipay(trim($edd_options['sofort_config_id']));
$Sofort->setSofortueberweisung();
$Sofort->setAmount($purchase_data['price']);
$Sofort->setReason('CartId ' . $payment, $purchase_data['post_data']['edd_first'] . ' ' . $purchase_data['post_data']['edd_last']);
$Sofort->addUserVariable($payment);
$Sofort->setSuccessUrl($return_url);
$Sofort->setAbortUrl(edd_get_failed_transaction_uri());
$Sofort->setTimeoutUrl(edd_get_failed_transaction_uri());
$Sofort->setNotificationUrl(home_url('/?sofort=ipn'));
$Sofort->sendRequest();
if ($Sofort->isError()) {
//PNAG-API didn't accept the data
wp_die($Sofort->getError(), 'Error');
} else {
//buyer must be redirected to $paymentUrl else payment cannot be successfully completed!
$paymentUrl = $Sofort->getPaymentUrl();
edd_empty_cart();
wp_redirect($paymentUrl);
exit;
}
}
}
}
示例10: edd_complete_purchase
/**
* Complete a purchase
*
* Performs all necessary actions to complete a purchase.
* Triggered by the edd_update_payment_status() function.
*
* @since 1.0.8.3
* @param int $payment_id the ID number of the payment
* @param string $new_status the status of the payment, probably "publish"
* @param string $old_status the status of the payment prior to being marked as "complete", probably "pending"
* @return void
*/
function edd_complete_purchase($payment_id, $new_status, $old_status)
{
if ($old_status == 'publish' || $old_status == 'complete') {
return;
}
// Make sure that payments are only completed once
// Make sure the payment completion is only processed when new status is complete
if ($new_status != 'publish' && $new_status != 'complete') {
return;
}
if (edd_is_test_mode() && !apply_filters('edd_log_test_payment_stats', false)) {
return;
}
$payment_data = edd_get_payment_meta($payment_id);
$downloads = maybe_unserialize($payment_data['downloads']);
$user_info = maybe_unserialize($payment_data['user_info']);
$cart_details = maybe_unserialize($payment_data['cart_details']);
if (is_array($downloads)) {
// Increase purchase count and earnings
foreach ($downloads as $download) {
edd_record_sale_in_log($download['id'], $payment_id, $user_info);
edd_increase_purchase_count($download['id']);
$amount = null;
if (is_array($cart_details)) {
foreach ($cart_details as $key => $item) {
if (array_search($download['id'], $item)) {
$cart_item_id = $key;
}
}
$amount = isset($cart_details[$cart_item_id]['price']) ? $cart_details[$cart_item_id]['price'] : null;
}
$amount = edd_get_download_final_price($download['id'], $user_info, $amount);
edd_increase_earnings($download['id'], $amount);
}
// Clear the total earnings cache
delete_transient('edd_earnings_total');
}
if (isset($user_info['discount']) && $user_info['discount'] != 'none') {
edd_increase_discount_usage($user_info['discount']);
}
// Empty the shopping cart
edd_empty_cart();
}
示例11: process_payment
/**
* Process the purchase data and send to Payeezy
*
* @since 1.0
* @return void
*/
public function process_payment($purchase_data)
{
global $edd_options;
$url = edd_is_test_mode() ? 'https://api-cert.payeezy.com/v1/transactions' : 'https://api.payeezy.com/v1/transactions';
$payeezy = new Payeezy();
$payeezy::setApiKey(edd_get_option('payeezy_api_key'));
$payeezy::setApiSecret(edd_get_option('payeezy_api_secret'));
$payeezy::setMerchantToken(edd_get_option('payeezy_token'));
$payeezy::setUrl($url);
$month = $purchase_data['card_info']['card_exp_month'];
$month = $month > 9 ? $month : '0' . $month;
// Payeezy requires two digits
$year = substr($purchase_data['card_info']['card_exp_year'], -2);
$card_type = edd_detect_cc_type($purchase_data['card_info']['card_number']);
switch ($card_type) {
case 'amex':
$card_type = 'American Express';
break;
}
$response = json_decode($payeezy->purchase(array('amount' => $purchase_data['price'], 'card_number' => $purchase_data['card_info']['card_number'], 'card_type' => $card_type, 'card_holder_name' => $purchase_data['card_info']['card_name'], 'card_cvv' => $purchase_data['card_info']['card_cvc'], 'card_expiry' => $month . $year, 'currency_code' => 'USD')));
if ('failed' === $response->validation_status) {
foreach ($response->Error->messages as $error) {
edd_set_error($error->code, $error->description);
}
edd_send_back_to_checkout('?payment-mode=payeezy');
} elseif ('success' === $response->validation_status) {
if ('approved' === $response->transaction_status) {
$payment_data = array('price' => $purchase_data['price'], 'date' => $purchase_data['date'], 'user_email' => $purchase_data['post_data']['edd_email'], 'purchase_key' => $purchase_data['purchase_key'], 'currency' => edd_get_currency(), 'downloads' => $purchase_data['downloads'], 'cart_details' => $purchase_data['cart_details'], 'user_info' => $purchase_data['user_info'], 'status' => 'pending');
// record the pending payment
$payment_id = edd_insert_payment($payment_data);
edd_update_payment_status($payment_id, 'publish');
edd_set_payment_transaction_id($payment_id, $response->transaction_id);
// Empty the shopping cart
edd_empty_cart();
edd_send_to_success_page();
} else {
edd_set_error('payeezy_error', sprintf(__('Transaction not approved. Status: %s', 'edd-payeezy'), $response->transaction_status));
edd_send_back_to_checkout('?payment-mode=payeezy');
}
}
}
示例12: edd_wallet_process_deposit
/**
* Process deposit
*
* @since 1.0.0
* @return void
*/
function edd_wallet_process_deposit()
{
// Verify the nonce
if (!wp_verify_nonce($_REQUEST['_wpnonce'], 'edd-wallet-deposit-nonce')) {
wp_die(__('Nonce verification failed', 'edd-wallet'), __('Error', 'edd-wallet'), array('response' => 403));
}
// Make sure the cart is empty
edd_empty_cart();
$value = $_POST['edd_wallet_deposit_amount'];
if ($value == 'custom') {
$value = $_POST['edd_wallet_custom_deposit'];
}
// Setup the fee label
$label = edd_get_option('edd_wallet_deposit_description', __('Deposit to wallet', 'edd-wallet'));
$label = str_replace('{val}', edd_currency_filter(edd_format_amount($value)), $label);
// Setup the fee (product) for the deposit
$fee = array('amount' => $value, 'label' => $label, 'type' => 'item', 'no_tax' => true, 'id' => 'edd-wallet-deposit');
EDD()->fees->add_fee($fee);
// Redirect to checkout
wp_redirect(edd_get_checkout_uri(), 303);
edd_die();
}
示例13: edd_complete_purchase
/**
* Complete a purchase
*
* Performs all necessary actions to complete a purchase.
* Triggered by the edd_update_payment_status() function.
*
* @param int $payment_id the ID number of the payment
* @param string $new_status the status of the payment, probably "publish"
* @param string $old_status the status of the payment prior to being marked as "complete", probably "pending"
* @access private
* @since 1.0.8.3
* @return void
*/
function edd_complete_purchase($payment_id, $new_status, $old_status)
{
if ($old_status == 'publish' || $old_status == 'complete') {
return;
}
// make sure that payments are only completed once
if (!edd_is_test_mode()) {
$payment_data = edd_get_payment_meta($payment_id);
$downloads = maybe_unserialize($payment_data['downloads']);
$user_info = maybe_unserialize($payment_data['user_info']);
$cart_details = maybe_unserialize($payment_data['cart_details']);
if (is_array($downloads)) {
// increase purchase count and earnings
foreach ($downloads as $download) {
edd_record_sale_in_log($download['id'], $payment_id, $user_info, $payment_data['date']);
edd_increase_purchase_count($download['id']);
$amount = null;
if (is_array($cart_details)) {
foreach ($cart_details as $key => $item) {
if (array_search($download['id'], $item)) {
$cart_item_id = $key;
}
}
$amount = isset($cart_details[$cart_item_id]['price']) ? $cart_details[$cart_item_id]['price'] : null;
}
$amount = edd_get_download_final_price($download['id'], $user_info, $amount);
edd_increase_earnings($download['id'], $amount);
}
}
if (isset($user_info['discount'])) {
edd_increase_discount_usage($user_info['discount']);
}
}
// empty the shopping cart
edd_empty_cart();
}
示例14: process_payment
/**
* Process Payment
*
* Process payments trough the PagSeguro gateway.
*
* @return void
* @since 1.0
*/
function process_payment($purchase_data)
{
global $edd_options;
// check there is a gateway name
if (!isset($purchase_data['post_data']['edd-gateway'])) {
return;
}
// get credentials
$credentials = $this->get_credentials();
// check credentials have been set
if (is_null($credentials['email']) || is_null($credentials['token'])) {
edd_set_error(0, __('Please enter your PagSeguro Client Email and Token in settings', 'edd-pagseguro-gateway'));
edd_send_back_to_checkout('?payment-mode=' . $purchase_data['post_data']['edd-gateway']);
}
// get payment
$payment_data = array('price' => $purchase_data['price'], 'date' => $purchase_data['date'], 'user_email' => $purchase_data['user_email'], 'purchase_key' => $purchase_data['purchase_key'], 'currency' => edd_get_option('currency', 'BRL'), 'downloads' => $purchase_data['downloads'], 'user_info' => $purchase_data['user_info'], 'cart_details' => $purchase_data['cart_details'], 'status' => 'pending');
// insert pending payment
$payment = edd_insert_payment($payment_data);
if (!$payment) {
// problems? send back
edd_send_back_to_checkout('?payment-mode=' . $purchase_data['post_data']['edd-gateway']);
} else {
// require PagSeguro files
$this->load_pagseguro_sdk();
// verify classes exists
if (!class_exists('PagSeguroPaymentRequest')) {
edd_send_back_to_checkout('?payment-mode=' . $purchase_data['post_data']['edd-gateway']);
}
// create payment request
$paymentRequest = new PagSeguroPaymentRequest();
// sets the currency
$paymentRequest->setCurrency('BRL');
// cart summary
$cart_summary = edd_get_purchase_summary($purchase_data, false);
// format total price
$total_price = number_format($purchase_data['price'], 2, '.', '');
// payment request details
$paymentRequest->addItem('01', sanitize_text_field(substr($cart_summary, 0, 95)), '1', strval($total_price));
// sets the reference code for this request
$paymentRequest->setReference($payment);
// sets customer information
$paymentRequest->setSender(sanitize_text_field($purchase_data['user_info']['first_name'] . ' ' . $purchase_data['user_info']['last_name']), $purchase_data['user_email']);
// redirect url
$paymentRequest->setRedirectUrl(add_query_arg('payment-confirmation', 'pagseguro', edd_get_success_page_uri()));
// IPN URL
$paymentRequest->addParameter('notificationURL', get_site_url());
/* TRY CHECKOUT */
try {
// generate credentials
$credentials = new PagSeguroAccountCredentials($credentials['email'], $credentials['token']);
// register this payment request in PagSeguro, to obtain the payment URL for redirect your customer
$checkout_uri = $paymentRequest->register($credentials);
if (gettype($checkout_uri) != 'string') {
throw new exception($checkout_uri);
}
// empty cart
edd_empty_cart();
// send the user to PagSeguro
wp_redirect($checkout_uri);
die;
} catch (Exception $e) {
//catch exception
wp_mail(get_bloginfo('admin_email'), __('PagSeguro Checkout Error', 'edd-pagseguro-gateway'), $e->getMessage());
edd_set_error('pagseguro_exception', $e->getMessage());
edd_send_back_to_checkout('?payment-mode=' . $purchase_data['post_data']['edd-gateway']);
}
}
}
示例15: process_payment
/**
* Process payment submission
*
* @access public
* @since 1.0.0
* @param array $purchase_data The data for a specific purchase
* @return void
*/
public function process_payment($purchase_data)
{
if (!wp_verify_nonce($purchase_data['gateway_nonce'], 'edd-gateway')) {
wp_die(__('Nonce verification has failed', 'edd-wallet'), __('Error', 'edd-wallet'), array('response' => 403));
}
$error = false;
// Double check that we can afford this item
$value = edd_wallet()->wallet->balance($purchase_data['user_email']);
if ($value < $purchase_data['price']) {
edd_record_gateway_error(__('Wallet Gateway Error', 'edd-wallet'), __('User wallet has insufficient funds.', 'edd-wallet'), 0);
edd_set_error('wallet_error', __('Insufficient funds.', 'edd-wallet'));
edd_send_back_to_checkout('?payment-mode=' . $purchase_data['post_data']['edd-gateway']);
}
$payment_data = array('price' => $purchase_data['price'], 'date' => $purchase_data['date'], 'user_email' => $purchase_data['user_email'], 'purchase_key' => $purchase_data['purchase_key'], 'currency' => edd_get_currency(), 'downloads' => $purchase_data['downloads'], 'user_info' => $purchase_data['user_info'], 'cart_details' => $purchase_data['cart_details'], 'status' => 'pending');
// Record the pending payment
$payment = edd_insert_payment($payment_data);
if ($payment) {
// Update payment status
edd_update_payment_status($payment, 'publish');
// Withdraw the funds
edd_wallet()->wallet->withdraw($purchase_data['user_info']['id'], $payment_data['price'], 'withdrawal', $payment);
edd_empty_cart();
edd_send_to_success_page();
} else {
edd_record_gateway_error(__('Wallet Gateway Error', 'edd-wallet'), sprintf(__('Payment creation failed while processing a Wallet purchase. Payment data: %s', 'edd-wallet'), json_encode($payment_data)), $payment);
edd_send_back_to_checkout('?payment-mode=' . $purchase_data['post_data']['edd-gateway']);
}
}