前言:Paypal接口、事件众多。如果统一管理其触发的所有行为数据呢,Webhook是首要解决方案。
Payapl可通过API批量设置Webhook:https://developer.paypal.com/docs/api/webhooks/v1/#webhooks
$this_paypal_account_access_token = $this->getAccessToken($strClientId, $strSecret);
$webhook = $this->createWebhook($this_paypal_account_access_token, $url);
public function getAccessToken($strClientId, $strSecret)
{
$client = new Client();
$paypal = "https://api.paypal.com";
try
{
$objResponse = $client->request( 'POST', $paypal . "/v1/oauth2/token", [
'headers' => [
'Accept' => 'application/json',
'Accept-Language' => 'en_US',
],
'auth' => [
$strClientId,
$strSecret,
],
'form_params' => [
'grant_type' => 'client_credentials',
],
] );
if( !empty( $objResponse->getStatusCode() ) && ( 200 == $objResponse->getStatusCode() ) )
{
$arrToken = json_decode($objResponse->getBody()->getContents(), true);
$strAccToken = $arrToken['access_token'];
}
}
catch (ClientException $e)
{
var_dump($e->getMessage());
$e->getMessage();
$strAccToken = null;
}
return $strAccToken;
}
public function createWebhook($accessToken, $url)
{
$client = new Client();
$paypal = "https://api.paypal.com";
try
{
$objResponse = $client->request( 'POST', $paypal . "/v1/notifications/webhooks", [
'headers' => [
'Accept' => 'application/json',
'Authorization' => "Bearer " . $accessToken,
],
'json' => [
'url' => $url,
'event_types' => [
['name' => "*"],
],
],
//请求成功
if( !empty( $objResponse->getStatusCode() ) && ( 200 == $objResponse->getStatusCode() ) )
{
$content = $objResponse->getBody();
var_dump($content);
$response = 1;
}
}
catch (ClientException $e)
{
var_dump($e->getMessage());
$response = null;
}
return $response;
}