====== 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...)
----