如何在PHP中处理PayPal Webhooks响应

时间:2018-07-31 10:28:57

标签: php json paypal webhooks

关于如何在我的PHP文件中捕获此webhooks响应,我完全空白。 我想获取状态并将其存储在数据库中。

{
"id": "WH-COC11055RA711503B-4YM959094A144403T",
"create_time": "2018-04-16T21:21:49.000Z",
"resource_type": "checkout-order",
"event_type": "CHECKOUT.ORDER.COMPLETED",
"summary": "Checkout Order Completed",
"resource": {
"update_time": "2018-04-01T21:20:49Z",
"create_time": "2018-04-01T21:18:49Z",
"purchase_units": [
  {
    "reference_id": "d9f80740-38f0-11e8-b467-0ed5f89f718b",
    "amount": {
      "currency_code": "USD",
      "value": "100.00"
    },
    "payee": {
      "email_address": "seller@example.com"
    },
    "shipping": {
      "method": "United States Postal Service",
      "address": {
        "address_line_1": "2211 N First Street",
        "address_line_2": "Building 17",
        "admin_area_2": "San Jose",
        "admin_area_1": "CA",
        "postal_code": "95131",
        "country_code": "US"
      }
    },
    "payments": {
      "captures": [
        {
          "id": "3C679366HH908993F",
          "status": "COMPLETED",
          "amount": {
            "currency_code": "USD",
            "value": "100.00"
          },
          "seller_protection": {
            "status": "ELIGIBLE",
            "dispute_categories": [
              "ITEM_NOT_RECEIVED",
              "UNAUTHORIZED_TRANSACTION"
            ]
          },
          "final_capture": true,
          "seller_receivable_breakdown": {
            "gross_amount": {
              "currency_code": "USD",
              "value": "100.00"
            },
            "paypal_fee": {
              "currency_code": "USD",
              "value": "3.00"
            },
            "net_amount": {
              "currency_code": "USD",
              "value": "97.00"
            }
          },
          "create_time": "2018-04-01T21:20:49Z",
          "update_time": "2018-04-01T21:20:49Z",
          "links": [
            {
              "href": "https://api.paypal.com/v2/payments/captures/3C679366HH908993F",
              "rel": "self",
              "method": "GET"
            },
            {
              "href": "https://api.paypal.com/v2/payments/captures/3C679366HH908993F/refund",
              "rel": "refund",
              "method": "POST"
            }
          ]
        }
      ]
    }
  }
],
"links": [
  {
    "href": "https://api.paypal.com/v2/checkout/orders/5O190127TN364715T",
    "rel": "self",
    "method": "GET"
  }
],
"id": "5O190127TN364715T",
"gross_amount": {
  "currency_code": "USD",
  "value": "100.00"
},
"intent": "CAPTURE",
"payer": {
  "name": {
    "given_name": "John",
    "surname": "Doe"
  },
  "email_address": "buyer@example.com",
  "payer_id": "QYR5Z8XDVJNXQ"
},
"status": "COMPLETED"
},
"links": [
 {
  "href": "https://api.sandbox.paypal.com/v1/notifications/webhooks-events/WH-COC11055RA711503B-4YM959094A144403T",
  "rel": "self",
  "method": "GET",
  "encType": "application/json"
},
{
  "href": "https://api.sandbox.paypal.com/v1/notifications/webhooks-events/WH-COC11055RA711503B-4YM959094A144403T/resend",
  "rel": "resend",
  "method": "POST",
  "encType": "application/json"
}
],
"event_version": "1.0",
"zts": 1494957670,
"resource_version": "2.0"
}

这是我到目前为止尝试过的。 已经创建了一个webhook.php文件,我要在其中捕获状态并将其存储在数据库中

 `//1st method using json. 
  $json = file_get_contents('https://mywebsite/webhook.php');
  $obj = json_decode($json);
  echo $obj->status;
  $data = $obj;

  //2nd method using CURL
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_URL, 'https://mywebsite/webhook.php');
  $result = curl_exec($ch);
  curl_close($ch);

  $obj = json_decode($result);
  echo $obj->status;
  $data = $obj;

   //query to insert into my database
   $sql8 = "INSERT INTO webhooks(`Status`) values('$data')";
   mysqli_query($db, $sql8);` 

对不起,我是PHP和JSON响应的新手。因此,如果这对您来说很幼稚,请原谅。谢谢

0 个答案:

没有答案