/wp-content/plugins/quiz-maker/public/partials/paypal-transaction-complete.php

https://github.com/livinglab/openlab · PHP · 79 lines · 74 code · 5 blank · 0 comment · 10 complexity · 05c61f58312eff7fb66470f4e340b37f MD5 · raw file

  1. <?php
  2. require_once explode("wp-content", __FILE__)[0] . "wp-load.php";
  3. if(!session_id()) {
  4. session_start();
  5. }
  6. $request_body = file_get_contents('php://input');
  7. $primaryResponse = json_decode( $request_body, true );
  8. global $wpdb;
  9. $paypal_settings = (get_option( 'ays_quiz_integrations' ) == null || get_option( 'ays_quiz_integrations' ) == '') ? array() : json_decode( get_option( 'ays_quiz_integrations' ), true );
  10. $payment_terms = isset($paypal_settings['payment_terms']) ? $paypal_settings['payment_terms'] : 'lifetime';
  11. $user_id = get_current_user_id();
  12. $quiz_id = $primaryResponse['quizId'];
  13. $order_id = $primaryResponse['data']['orderID'];
  14. $payment_date = $primaryResponse['details']['create_time'];
  15. $order_full_name = $primaryResponse['details']['payer']['name']['given_name'] . " " . $primaryResponse['details']['payer']['name']['surname'];
  16. $order_email = $primaryResponse['details']['payer']['email_address'];
  17. $amount = $primaryResponse['details']['purchase_units'][0]['amount']['value'].$primaryResponse['details']['purchase_units'][0]['amount']['currency_code'];
  18. $options = array(
  19. 'paypal_data' => $primaryResponse['data'],
  20. 'paypal_details' => $primaryResponse['details'],
  21. );
  22. $order = array(
  23. 'type' => 'paypal',
  24. 'order_id' => $order_id,
  25. 'quiz_id' => $quiz_id,
  26. 'user_id' => $user_id,
  27. 'order_full_name' => $order_full_name,
  28. 'order_email' => $order_email,
  29. 'payment_date' => $payment_date,
  30. 'amount' => $amount,
  31. 'options' => json_encode( $options )
  32. );
  33. $result = $wpdb->insert(
  34. $wpdb->prefix . "aysquiz_orders",
  35. $order,
  36. array( '%s', '%s', '%d', '%d', '%s', '%s', '%s', '%s', '%s' )
  37. );
  38. if( $result >= 0 ) {
  39. switch($payment_terms){
  40. case "onetime":
  41. $_SESSION['ays_quiz_paypal_purchase'] = true;
  42. $user_meta = true;
  43. break;
  44. case "lifetime":
  45. $_SESSION['ays_quiz_paypal_purchase'] = true;
  46. $current_usermeta = get_user_meta($user_id, "quiz_paypal_purchase");
  47. if($current_usermeta !== false && !empty($current_usermeta)){
  48. foreach($current_usermeta as $key => $usermeta){
  49. if($quiz_id == json_decode($usermeta, true)['quizId']){
  50. $opts = json_encode(array(
  51. 'quizId' => $quiz_id,
  52. 'purchased' => true
  53. ));
  54. $user_meta = update_user_meta($user_id, 'quiz_paypal_purchase', $opts, $usermeta);
  55. break;
  56. }
  57. }
  58. }
  59. break;
  60. }
  61. }else{
  62. $user_meta = false;
  63. }
  64. if($user_meta){
  65. echo json_encode(array(
  66. 'status' => true,
  67. ));
  68. }else{
  69. echo json_encode(array(
  70. 'status' => false
  71. ));
  72. }
  73. die();
  74. ?>