From 6b818da4018d64b2da732e083510c619a2e23369 Mon Sep 17 00:00:00 2001 From: Matt Date: Sat, 18 Feb 2017 18:58:28 -0600 Subject: [PATCH] Include item titles and SKUs in Stripe metadata https://www.drupal.org/node/2840526 --- uc_stripe.module | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/uc_stripe.module b/uc_stripe.module index 0548850..1005926 100644 --- a/uc_stripe.module +++ b/uc_stripe.module @@ -323,6 +323,20 @@ function uc_stripe_settings_form() { '#default_value' => variable_get('uc_stripe_poweredby', FALSE), ); + $form['uc_stripe_settings']['uc_stripe_metadata_titles'] = array( + '#type' => 'checkbox', + '#title' => t('Metadata: Title'), + '#description' => t('Include order item title(s) in Stripe metadata.'), + '#default_value' => variable_get('uc_stripe_metadata_titles', FALSE), + ); + + $form['uc_stripe_settings']['uc_stripe_metadata_models'] = array( + '#type' => 'checkbox', + '#title' => t('Metadata: Model'), + '#description' => t('Include item model(s) (SKU(s)) in Stripe metadata.'), + '#default_value' => variable_get('uc_stripe_metadata_models', FALSE), + ); + return $form; } @@ -539,7 +553,6 @@ function uc_stripe_charge($order_id, $amount, $data) { return $result; } - // Charge the customer try { @@ -548,11 +561,32 @@ function uc_stripe_charge($order_id, $amount, $data) { throw new Exception('No customer ID found'); } + // Set up titles and SKUs + $titles = array(); + $models = array(); + foreach($order->products as $item){ + $titles[] = $item->title; + $models[] = $item->model; + } + + if (variable_get('uc_stripe_metadata_titles',FALSE)==1 && variable_get('uc_stripe_metadata_models',FALSE)==1) { + $metadata = array("titles" => implode(";", $titles),"models" => implode(";", $models)); + } elseif (variable_get('uc_stripe_metadata_titles',FALSE)==1 && variable_get('uc_stripe_metadata_models',FALSE)==0) { + $metadata = array("titles" => implode(";", $titles)); + } elseif (variable_get('uc_stripe_metadata_titles',FALSE)==0 && variable_get('uc_stripe_metadata_models',FALSE)==1) { + $metadata = array("models" => implode(";", $models)); + } + +dpm($metadata,$name="metadata"); +dpm($titles,$name="titles"); +dpm($models,$name="models"); + $params = array( "amount" => $amount, "currency" => strtolower($order->currency), "customer" => $stripe_customer_id, "description" => t("Order #@order_id", array("@order_id" => $order_id)), + "metadata" => $metadata, ); if (!empty($shipping_info)) { $params['shipping'] = $shipping_info;