====== Bezahlt ====== ^ Aufgabe ^ Aktion ^ Ziel ^ Text ^ Extra ^ | Buchen | :?:1 add | db:users | Daten in Order-Objekt | FIXME->verify | | | add | db:ms_payments | | | | | add | db:ms_core_order_history | | | | Freigeben | add | db:ms_memberships | | | | | add | db:user_role | | | | Provision | task | Autor :!:2 | | | | | task | Partner :!:2 | | | :?:1: wenn Benutzer nicht angemeldet war \\ :!:2: siehe Seite 'Provision' \\ ---- Paypal sendet Nachricht an **paypal/backend** \\ Funktion: (ms_paypal_wps.module) **ms_paypal_wps_ipn()** Args: txn_id (transaction), mc_gross (Betrag) * $ipn = ms_paypal_wps_ipn_handler($_POST); * **(?)**: $ipn ok * watchdog: 'Successfully Received an IPN from PayPal....' * $order = ms_core_order_load($ipn['custom']) * **(?)**: $order ok: ms_paypal_wps_process_ipn($ipn, $order, 'ms_paypal_wps') * Insert the Payment to the order: * $payment = ms_core_new_payment($order->oid, $gateway, $payment_type); * $payment Daten: transaction, name, amount, recurring_id, data=$ipn, ... * $payment->type=='cart': * Unterschiede nach $ipn['payment_status']: \\ //Completed, Processed, Canceled_Reversal, Denied, Failed, Voided, \\ Expired, Reversed, Refunded, Pending// * ms_core_add_history_item - table {ms_core_order_history} * ms_core_enter_payment($payment, $check_valid); * $payment->save(); - table {ms_payments} * Order aktualisieren nach Payment: name, adressen, ... * Status: ms_core_set_order_status_from_payment($order, $payment); * switch ($type) * rec_signup: ms_core_create_recurring_schedule() * rec_payment: ms_core_increment_recurring_schedule() * rec_cancel: ms_core_cancel_recurring_schedule() * rec_failed: next_payment date in 3 days * rec_modify: ???$new_product??? * rec_eot: ms_core_change_recurring_schedule_status * (?) $notify * (!$order->uid): **hook**_ms_order_assign_user * **hook**_ms_order_payment_total * (each: $order->products): **hook**_ms_order_payment * Implementation **ms_products_ms_order_payment** * $type==cart, ...else: * ms_products_insert_purchase - INSERT INTO {ms_product_purchases}, hook_ * mail, * **hook**_ms_products_signup * . * $type==rec_signup, $type==rec_payment, $type==rec_failed, ... * Implementation **ms_membership_ms_order_payment** * $type==cart * ms_membership_change_roles * new: $membership = ms_membership_insert_membership(...) * ms_membership_prepare_mail, ms_membership_notify_admins * **hook**_ms_membership_signup * Implementation easybill_ms_membership_signup() * Function: _grant_comission_collection_author(): \\ //siehe Tab 'Partner'// * * $type==rec_payment * ... ms_membership_increment_payment, ... ms_membership_change_membership_expiration * **hook**_ms_membership_payment * Implementation easybill_ms_membership_payment() * Function: _grant_comission_collection_author(): \\ //siehe Tab 'Partner'// * * ms_core_add_history_item() * sonst: ms_core_log_error(Error...) ----