コード例 #1
0
 /**
  * Update lead status of the specified payment
  *
  * @param string $payment
  */
 public static function status_update(Pronamic_Pay_Payment $payment, $can_redirect = false)
 {
     if (self::SLUG === $payment->get_source()) {
         $id = $payment->get_source_id();
         $order = appthemes_get_order($id);
         $data = new Pronamic_WP_Pay_Extensions_AppThemes_PaymentData($order);
         $url = $data->get_normal_return_url();
         switch ($payment->status) {
             case Pronamic_WP_Pay_Statuses::CANCELLED:
                 $order->failed();
                 $url = $data->get_cancel_url();
                 break;
             case Pronamic_WP_Pay_Statuses::EXPIRED:
                 $order->failed();
                 $url = $data->get_error_url();
                 break;
             case Pronamic_WP_Pay_Statuses::FAILURE:
                 $order->failed();
                 $url = $data->get_error_url();
                 break;
             case Pronamic_WP_Pay_Statuses::SUCCESS:
                 $order->complete();
                 $url = $data->get_success_url();
                 break;
             case Pronamic_WP_Pay_Statuses::OPEN:
                 $order->pending();
                 break;
             default:
                 $order->pending();
                 break;
         }
         if ($can_redirect) {
             wp_redirect($url);
             exit;
         }
     }
 }
コード例 #2
0
ファイル: Gateway.php プロジェクト: wp-pay-gateways/mollie
 /**
  * Start
  *
  * @see Pronamic_WP_Pay_Gateway::start()
  */
 public function start(Pronamic_Pay_Payment $payment)
 {
     $request = new Pronamic_WP_Pay_Gateways_Mollie_PaymentRequest();
     $payment_method = $payment->get_method();
     $request->amount = $payment->get_amount();
     $request->description = $payment->get_description();
     $request->redirect_url = $payment->get_return_url();
     $request->webhook_url = $this->get_webhook_url();
     $request->locale = Pronamic_WP_Pay_Mollie_LocaleHelper::transform($payment->get_language());
     $request->method = Pronamic_WP_Pay_Mollie_Methods::transform($payment_method);
     if (empty($request->method) && !empty($payment_method)) {
         // Leap of faith if the WordPress payment method could not transform to a Mollie method?
         $request->method = $payment_method;
     }
     // Customer ID
     $user_id = $payment->post->post_author;
     $customer_id = $this->get_customer_id_by_wp_user_id($user_id);
     if (empty($customer_id)) {
         $customer_id = $this->client->create_customer($payment->get_email(), $payment->get_customer_name());
         if ($customer_id) {
             $this->update_wp_user_customer_id($user_id, $customer_id);
         }
     }
     $payment->set_meta('mollie_customer_id', $customer_id);
     // Subscriptions
     $subscription = $payment->get_subscription();
     $subscription_methods = array(Pronamic_WP_Pay_PaymentMethods::CREDIT_CARD, Pronamic_WP_Pay_PaymentMethods::DIRECT_DEBIT_IDEAL);
     if ($subscription && in_array($payment_method, $subscription_methods, true)) {
         if (is_object($this->client->get_error())) {
             // Set error if customer could not be created
             $this->error = $this->client->get_error();
             // Prevent subscription payment from being created without customer
             return;
         }
         $request->recurring_type = Pronamic_WP_Pay_Mollie_Recurring::RECURRING;
         $request->method = Pronamic_WP_Pay_Mollie_Methods::transform($payment_method);
         if (Pronamic_WP_Pay_PaymentMethods::DIRECT_DEBIT_IDEAL === $payment_method) {
             // Use direct debit for recurring payments with payment method `Direct Debit (mandate via iDEAL)`.
             $request->method = Pronamic_WP_Pay_Mollie_Methods::DIRECT_DEBIT;
         }
         if ($subscription->has_valid_payment() && !$customer_id) {
             // Get customer ID from first payment
             $first = $subscription->get_first_payment();
             $customer_id = $first->get_meta('mollie_customer_id');
             $payment->set_meta('mollie_customer_id', $customer_id);
         }
         $can_user_interact = in_array($payment->get_source(), array('gravityformsideal'), true);
         // Mandate payment method to check for.
         $mandate_method = $payment_method;
         if (Pronamic_WP_Pay_PaymentMethods::DIRECT_DEBIT_IDEAL === $mandate_method) {
             $mandate_method = Pronamic_WP_Pay_PaymentMethods::DIRECT_DEBIT;
         }
         if (!$this->client->has_valid_mandate($customer_id, $mandate_method) && (!$subscription->has_valid_payment() || $can_user_interact)) {
             // First payment or if user interaction is possible and no valid mandates are found
             $request->recurring_type = Pronamic_WP_Pay_Mollie_Recurring::FIRST;
             if (Pronamic_WP_Pay_PaymentMethods::DIRECT_DEBIT_IDEAL === $payment_method) {
                 // Use iDEAL for first payments with payment method `Direct Debit (mandate via iDEAL)`.
                 $request->method = Pronamic_WP_Pay_Mollie_Methods::IDEAL;
             }
         }
         if (Pronamic_WP_Pay_Mollie_Recurring::RECURRING === $request->recurring_type) {
             // Recurring payment
             $payment->set_action_url($payment->get_return_url());
             if ($subscription->has_valid_payment()) {
                 // Use subscription amount if this is not the initial payment.
                 $payment->amount = $subscription->get_amount();
             }
         }
     }
     if (Pronamic_WP_Pay_PaymentMethods::IDEAL === $payment_method) {
         // If payment method is iDEAL we set the user chosen issuer ID.
         $request->issuer = $payment->get_issuer();
     }
     $request->customer_id = $customer_id;
     $result = $this->client->create_payment($request);
     if (!$result) {
         $this->error = $this->client->get_error();
         return;
     }
     if ($subscription && Pronamic_WP_Pay_Mollie_Recurring::RECURRING === $request->recurring_type) {
         $subscription->set_status(Pronamic_WP_Pay_Mollie_Statuses::transform($result->status));
     }
     $payment->set_transaction_id($result->id);
     if ('' === $payment->get_action_url()) {
         $payment->set_action_url($result->links->paymentUrl);
     }
 }
コード例 #3
0
ファイル: Extension.php プロジェクト: daanbakker1995/vanteun
 /**
  * Update lead status of the specified advanced payment
  *
  * @param Pronamic_Pay_Payment $payment
  */
 public static function status_update(Pronamic_Pay_Payment $payment, $can_redirect = false)
 {
     if ($payment->get_source() == self::SLUG && self::is_shopp_supported()) {
         global $Shopp;
         $id = $payment->get_source_id();
         $purchase = new Purchase($id);
         $gateway = new Pronamic_WP_Pay_Extensions_Shopp_Gateway();
         $data = new Pronamic_WP_Pay_Extensions_Shopp_PaymentData($purchase, $gateway);
         if (!Pronamic_WP_Pay_Extensions_Shopp_Shopp::is_purchase_paid($purchase)) {
             $url = $data->get_normal_return_url();
             switch ($payment->status) {
                 case Pronamic_WP_Pay_Statuses::CANCELLED:
                     Pronamic_WP_Pay_Extensions_Shopp_Shopp::update_purchase_status($purchase, Pronamic_WP_Pay_Extensions_Shopp_Shopp::PAYMENT_STATUS_CANCELLED);
                     $url = $data->get_cancel_url();
                     break;
                 case Pronamic_WP_Pay_Statuses::EXPIRED:
                     Pronamic_WP_Pay_Extensions_Shopp_Shopp::update_purchase_status($purchase, Pronamic_WP_Pay_Extensions_Shopp_Shopp::PAYMENT_STATUS_EXPIRED);
                     break;
                 case Pronamic_WP_Pay_Statuses::FAILURE:
                     Pronamic_WP_Pay_Extensions_Shopp_Shopp::update_purchase_status($purchase, Pronamic_WP_Pay_Extensions_Shopp_Shopp::PAYMENT_STATUS_FAILURE);
                     $url = $data->get_error_url();
                     break;
                 case Pronamic_WP_Pay_Statuses::SUCCESS:
                     Pronamic_WP_Pay_Extensions_Shopp_Shopp::update_purchase_status($purchase, Pronamic_WP_Pay_Extensions_Shopp_Shopp::PAYMENT_STATUS_CAPTURED);
                     $url = $data->get_success_url();
                     Pronamic_WP_Pay_Extensions_Shopp_Shopp::resession();
                     break;
                 case Pronamic_WP_Pay_Statuses::OPEN:
                     Pronamic_WP_Pay_Extensions_Shopp_Shopp::update_purchase_status($purchase, Pronamic_WP_Pay_Extensions_Shopp_Shopp::PAYMENT_STATUS_OPEN);
                     break;
             }
             if ($url && $can_redirect) {
                 wp_redirect($url, 303);
                 exit;
             }
         }
     }
 }
コード例 #4
0
ファイル: Extension.php プロジェクト: daanbakker1995/vanteun
 /**
  * Update lead status of the specified payment
  *
  * @param string $payment
  */
 public static function update_status(Pronamic_Pay_Payment $payment, $can_redirect = false)
 {
     if (self::SLUG === $payment->get_source()) {
         $id = $payment->get_source_id();
         $order = Pronamic_WP_Pay_Extensions_ClassiPress_ClassiPress::get_order_by_id($id);
         $data = new Pronamic_WP_Pay_Extensions_ClassiPress_PaymentData($order);
         $url = $data->get_normal_return_url();
         switch ($payment->status) {
             case Pronamic_WP_Pay_Statuses::CANCELLED:
                 break;
             case Pronamic_WP_Pay_Statuses::EXPIRED:
                 break;
             case Pronamic_WP_Pay_Statuses::FAILURE:
                 break;
             case Pronamic_WP_Pay_Statuses::SUCCESS:
                 if (!Pronamic_WP_Pay_Extensions_ClassiPress_Order::is_completed($order)) {
                     Pronamic_WP_Pay_Extensions_ClassiPress_ClassiPress::process_ad_order($id);
                     Pronamic_WP_Pay_Extensions_ClassiPress_ClassiPress::process_membership_order($order);
                     Pronamic_WP_Pay_Extensions_ClassiPress_ClassiPress::update_payment_status_by_txn_id($id, Pronamic_WP_Pay_Extensions_ClassiPress_PaymentStatuses::COMPLETED);
                 }
                 $url = $data->get_success_url();
                 break;
             case Pronamic_WP_Pay_Statuses::OPEN:
                 break;
             default:
                 break;
         }
         if ($can_redirect) {
             wp_redirect($url, 303);
             exit;
         }
     }
 }