File "stripe.php"
Full path: /home/kosmetik/public_html/wp-content/plugins/contact-form-7/modules/stripe/stripe.php
File
size: 5.97 B
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor Back
<?php
include_once path_join(WPCF7_PLUGIN_MODULES_DIR, 'stripe/service.php');
include_once path_join(WPCF7_PLUGIN_MODULES_DIR, 'stripe/api.php');
add_action('wpcf7_init', 'wpcf7_stripe_register_service', 10, 0);
function wpcf7_stripe_register_service()
{
$integration = WPCF7_Integration::get_instance();
$integration->add_category('payments', __('Payments', 'contact-form-7'));
$integration->add_service('stripe', WPCF7_Stripe::get_instance());
}
add_action('wpcf7_enqueue_scripts', 'wpcf7_stripe_enqueue_scripts', 10, 0);
function wpcf7_stripe_enqueue_scripts()
{
$service = WPCF7_Stripe::get_instance();
if (!$service->is_active()) {
return;
}
wp_enqueue_style('wpcf7-stripe', wpcf7_plugin_url('modules/stripe/style.css'), array(), WPCF7_VERSION, 'all');
wp_enqueue_script('stripe', 'https://js.stripe.com/v3/', array(), null);
$assets = array();
$asset_file = wpcf7_plugin_path('modules/stripe/index.asset.php');
if (file_exists($asset_file)) {
$assets = (include $asset_file);
}
$assets = wp_parse_args($assets, array('src' => wpcf7_plugin_url('modules/stripe/index.js'), 'dependencies' => array('wp-polyfill'), 'version' => WPCF7_VERSION));
wp_enqueue_script('wpcf7-stripe', $assets['src'], array_merge(array('contact-form-7', 'stripe'), $assets['dependencies']), $assets['version'], true);
$api_keys = $service->get_api_keys();
if ($api_keys['publishable']) {
wp_localize_script('wpcf7-stripe', 'wpcf7_stripe', array('publishable_key' => $api_keys['publishable']));
}
}
add_filter('wpcf7_skip_spam_check', 'wpcf7_stripe_skip_spam_check', 10, 2);
function wpcf7_stripe_skip_spam_check($skip_spam_check, $submission)
{
$service = WPCF7_Stripe::get_instance();
if (!$service->is_active()) {
return $skip_spam_check;
}
if (!empty($_POST['_wpcf7_stripe_payment_intent'])) {
$pi_id = trim($_POST['_wpcf7_stripe_payment_intent']);
$payment_intent = $service->api()->retrieve_payment_intent($pi_id);
if (isset($payment_intent['status']) and 'succeeded' === $payment_intent['status']) {
$submission->payment_intent = $pi_id;
}
}
if (!empty($submission->payment_intent) and $submission->verify_posted_data_hash()) {
$skip_spam_check = true;
}
return $skip_spam_check;
}
add_action('wpcf7_before_send_mail', 'wpcf7_stripe_before_send_mail', 10, 3);
function wpcf7_stripe_before_send_mail($contact_form, &$abort, $submission)
{
$service = WPCF7_Stripe::get_instance();
if (!$service->is_active()) {
return;
}
$tags = $contact_form->scan_form_tags(array('type' => 'stripe'));
if (!$tags) {
return;
}
if (!empty($submission->payment_intent)) {
return;
}
$tag = $tags[0];
$amount = $tag->get_option('amount', 'int', true);
$currency = $tag->get_option('currency', '[a-zA-Z]{3}', true);
$payment_intent_params = apply_filters('wpcf7_stripe_payment_intent_parameters', array('amount' => $amount ? absint($amount) : null, 'currency' => $currency ? strtolower($currency) : null, 'receipt_email' => $submission->get_posted_data('your-email')));
$payment_intent = $service->api()->create_payment_intent($payment_intent_params);
if ($payment_intent) {
$submission->add_result_props(array('stripe' => array('payment_intent' => array('id' => $payment_intent['id'], 'client_secret' => $payment_intent['client_secret']))));
$submission->set_status('payment_required');
$submission->set_response(__("Payment is required. Please pay by credit card.", 'contact-form-7'));
}
$abort = true;
}
function wpcf7_stripe_get_payment_link($pi_id)
{
return sprintf('https://dashboard.stripe.com/payments/%s', urlencode($pi_id));
}
add_filter('wpcf7_special_mail_tags', 'wpcf7_stripe_smt', 10, 4);
function wpcf7_stripe_smt($output, $tag_name, $html, $mail_tag)
{
if ('_stripe_payment_link' === $tag_name) {
$submission = WPCF7_Submission::get_instance();
if (!empty($submission->payment_intent)) {
$output = wpcf7_stripe_get_payment_link($submission->payment_intent);
}
}
return $output;
}
add_filter('wpcf7_flamingo_inbound_message_parameters', 'wpcf7_stripe_add_flamingo_inbound_message_params', 10, 1);
function wpcf7_stripe_add_flamingo_inbound_message_params($args)
{
$submission = WPCF7_Submission::get_instance();
if (empty($submission->payment_intent)) {
return $args;
}
$pi_link = wpcf7_stripe_get_payment_link($submission->payment_intent);
$meta = (array) $args['meta'];
$meta['stripe_payment_link'] = $pi_link;
$args['meta'] = $meta;
return $args;
}
add_action('wpcf7_init', 'wpcf7_add_form_tag_stripe', 10, 0);
function wpcf7_add_form_tag_stripe()
{
wpcf7_add_form_tag('stripe', 'wpcf7_stripe_form_tag_handler', array('display-block' => true, 'singular' => true));
}
function wpcf7_stripe_form_tag_handler($tag)
{
$card_element = sprintf('<div %s></div>', wpcf7_format_atts(array('class' => 'card-element wpcf7-form-control', 'aria-invalid' => 'false')));
$card_element = sprintf('<div class="wpcf7-form-control-wrap hidden">%s</div>', $card_element);
$button_1_label = __('Proceed to checkout', 'contact-form-7');
if (isset($tag->values[0])) {
$button_1_label = trim($tag->values[0]);
}
$button_1 = sprintf('<button %1$s>%2$s</button>', wpcf7_format_atts(array('type' => 'submit', 'class' => 'first')), esc_html($button_1_label));
$button_2_label = __('Complete payment', 'contact-form-7');
if (isset($tag->values[1])) {
$button_2_label = trim($tag->values[1]);
}
$button_2 = sprintf('<button %1$s>%2$s</button>', wpcf7_format_atts(array('type' => 'button', 'class' => 'second hidden')), esc_html($button_2_label));
$buttons = sprintf('<span class="buttons has-spinner">%1$s %2$s</span>', $button_1, $button_2);
return sprintf('<div class="wpcf7-stripe">%1$s %2$s %3$s</div>', $card_element, $buttons, '<input type="hidden" name="_wpcf7_stripe_payment_intent" value="" />');
}