Compare commits
17
Commits
v0.0.1
...
1b118cc2cf
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1b118cc2cf | ||
|
|
dacd98b510 | ||
|
|
e55e7aa66f | ||
|
|
413de37e0e | ||
|
|
06a91150a7 | ||
|
|
547894fecf | ||
|
|
b10f00fa5e | ||
|
|
bd3c0fb660 | ||
|
|
9ba9e064dd | ||
|
|
d5f561048d | ||
|
|
cfd16287de | ||
|
|
362f3eb9c5 | ||
|
|
2346e33851 | ||
|
|
45e85c76c9 | ||
|
|
2680a2ad93 | ||
|
|
6295ad3b80 | ||
|
|
4a01bd9c68 |
@@ -3,3 +3,4 @@ composer.lock
|
|||||||
vendor
|
vendor
|
||||||
coverage.clover
|
coverage.clover
|
||||||
.phpunit.result.cache
|
.phpunit.result.cache
|
||||||
|
.vscode
|
||||||
|
|||||||
+3
-9
@@ -1,20 +1,14 @@
|
|||||||
language: php
|
language: php
|
||||||
|
|
||||||
|
php:
|
||||||
|
- 7.2
|
||||||
|
|
||||||
cache:
|
cache:
|
||||||
directories:
|
directories:
|
||||||
- $HOME/.composer/cache
|
- $HOME/.composer/cache
|
||||||
|
|
||||||
matrix:
|
matrix:
|
||||||
fast_finish: true
|
fast_finish: true
|
||||||
include:
|
|
||||||
- php: 7.2
|
|
||||||
env: LARAVEL='5.7.*' TESTBENCH='3.7.*' PHPENUM='1.*' PHPUNIT='7.*' COMPOSER_FLAGS='--prefer-stable'
|
|
||||||
- php: 7.3
|
|
||||||
env: LARAVEL='5.7.*' TESTBENCH='3.7.*' PHPENUM='1.*' PHPUNIT='7.*' COMPOSER_FLAGS='--prefer-lowest'
|
|
||||||
- php: 7.2
|
|
||||||
env: LARAVEL='5.8.*' TESTBENCH='3.8.*' PHPENUM='1.*' PHPUNIT='8.*' COMPOSER_FLAGS='--prefer-stable'
|
|
||||||
- php: 7.3
|
|
||||||
env: LARAVEL='5.8.*' TESTBENCH='3.8.*' PHPENUM='1.*' PHPUNIT='8.*' COMPOSER_FLAGS='--prefer-lowest'
|
|
||||||
|
|
||||||
before_install:
|
before_install:
|
||||||
- travis_retry composer self-update
|
- travis_retry composer self-update
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Handle Appstore server-to-server notifications for auto-renewable subscriptions
|
# Handle Appstore server-to-server notifications for auto-renewable subscriptions
|
||||||
|
|
||||||
[](https://packagist.org/packages/app-vise/laravel-appstore-server-notifications)
|
[](https://packagist.org/packages/app-vise/laravel-appstore-server-notifications)
|
||||||
[](https://travis-ci.org/app-vise/laravel-appstore-notifications)
|
[](https://travis-ci.org/app-vise/laravel-appstore-notifications)
|
||||||
[](https://styleci.io/repos/215539443)
|
[](https://styleci.io/repos/215539443)
|
||||||
[](https://scrutinizer-ci.com/g/app-vise/laravel-appstore-notifications/?branch=master)
|
[](https://scrutinizer-ci.com/g/app-vise/laravel-appstore-notifications/?branch=master)
|
||||||
|
|||||||
+3
-3
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "app-vise/laravel-appstore-server-notifications",
|
"name": "rjgonzale/laravel-appstore-server-notifications",
|
||||||
"description": "Handling Appstore server to server notifications",
|
"description": "Handling Appstore server to server notifications",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"app-vise",
|
"app-vise",
|
||||||
@@ -19,8 +19,8 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^7.1",
|
"php": "^7.",
|
||||||
"illuminate/support": "~5.7.0|^6.0",
|
"illuminate/support": "^5.5|^6.0|^7.",
|
||||||
"bensampo/laravel-enum": "^1.0"
|
"bensampo/laravel-enum": "^1.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
|
|||||||
@@ -7,16 +7,18 @@ use Appvise\AppStoreNotifications\Model\NotificationType;
|
|||||||
use Appvise\AppStoreNotifications\Model\AppleNotification;
|
use Appvise\AppStoreNotifications\Model\AppleNotification;
|
||||||
use Appvise\AppStoreNotifications\Exceptions\WebhookFailed;
|
use Appvise\AppStoreNotifications\Exceptions\WebhookFailed;
|
||||||
use Appvise\AppStoreNotifications\Model\NotificationPayload;
|
use Appvise\AppStoreNotifications\Model\NotificationPayload;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
||||||
class WebhooksController
|
class WebhooksController
|
||||||
{
|
{
|
||||||
public function __invoke(Request $request)
|
public function __invoke(Request $request)
|
||||||
{
|
{
|
||||||
$jobConfigKey = NotificationType::{$request->input('notification_type')}();
|
$jobConfigKey = NotificationType::{$request->input('notification_type')}();
|
||||||
$this->determineValidRequest($request->input('password'));
|
|
||||||
|
|
||||||
AppleNotification::storeNotification($jobConfigKey, $request->input());
|
AppleNotification::storeNotification($jobConfigKey, $request->input());
|
||||||
|
|
||||||
|
//$this->determineValidRequest($request->input('password'));
|
||||||
|
|
||||||
$payload = NotificationPayload::createFromRequest($request);
|
$payload = NotificationPayload::createFromRequest($request);
|
||||||
|
|
||||||
$jobClass = config("appstore-server-notifications.jobs.{$jobConfigKey}", null);
|
$jobClass = config("appstore-server-notifications.jobs.{$jobConfigKey}", null);
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ class WebhookFailed extends Exception
|
|||||||
{
|
{
|
||||||
public static function nonValidRequest()
|
public static function nonValidRequest()
|
||||||
{
|
{
|
||||||
return new static("Your shared secret does not match password in Apple's request", 400);
|
return new static("Your shared secret does not match password in Apple's request", 500);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function jobClassDoesNotExist(string $jobClass)
|
public static function jobClassDoesNotExist(string $jobClass)
|
||||||
|
|||||||
@@ -28,6 +28,43 @@ class NotificationPayload
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function createFromArray($notification) {
|
||||||
|
$instance = new self();
|
||||||
|
$instance->environment = $notification['environment'];
|
||||||
|
$instance->password = $notification['password'];
|
||||||
|
$instance->notificationType = $notification['notification_type'];
|
||||||
|
$instance->cancellationDate = $notification['cancellation_date'] ?? null;
|
||||||
|
$instance->cancellationDatePst = $notification['cancellation_date_pst'] ?? null;
|
||||||
|
$instance->cancellationDateMs = $notification['cancellation_date_ms'] ?? null;
|
||||||
|
$instance->webOrderLineItemId = $notification['web_order_line_item_id'] ?? null;
|
||||||
|
$instance->latestReceipt = $notification['latest_receipt'] ?? null;
|
||||||
|
if (isset($notification['latest_receipt_info'])) {
|
||||||
|
$instance->latestReceiptInfo = Receipt::createFromArray($notification['latest_receipt_info']);
|
||||||
|
} else {
|
||||||
|
$instance->latestReceiptInfo = null;
|
||||||
|
}
|
||||||
|
$instance->latestExpiredReceipt = $notification['latest_expired_receipt'] ?? null;
|
||||||
|
if (isset($notification['latest_expired_receipt_info'])) {
|
||||||
|
$instance->latestExpiredReceiptInfo = Receipt::createFromArray($notification['latest_expired_receipt_info']);
|
||||||
|
} else {
|
||||||
|
$instance->latestExpiredReceiptInfo = null;
|
||||||
|
}
|
||||||
|
$instance->autoRenewStatus = $notification['auto_renew_status'];
|
||||||
|
$instance->autoRenewProductId = $notification['auto_renew_product_id'];
|
||||||
|
$instance->autoRenewStatusChangeDate = $notification['auto_renew_status_change_date'] ?? null;
|
||||||
|
$instance->autoRenewStatusChangeDatePst = $notification['auto_renew_status_change_date_pst'] ?? null;
|
||||||
|
$instance->autoRenewStatusChangeDateMs = $notification['auto_renew_status_change_date_ms'] ?? null;
|
||||||
|
if (isset($notification['pending_renewal_info'])) {
|
||||||
|
foreach ($notification['pending_renewal_info'] as $pendingRenewalInfo) {
|
||||||
|
$instance->pendingRenewalInfo[] = RenewalInfo::createFromRequest($pendingRenewalInfo);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$instance->pendingRenewalInfo = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $instance;
|
||||||
|
}
|
||||||
|
|
||||||
public static function createFromRequest(Request $request)
|
public static function createFromRequest(Request $request)
|
||||||
{
|
{
|
||||||
$instance = new self();
|
$instance = new self();
|
||||||
@@ -38,11 +75,20 @@ class NotificationPayload
|
|||||||
$instance->cancellationDatePst = $request->input('cancellation_date_pst');
|
$instance->cancellationDatePst = $request->input('cancellation_date_pst');
|
||||||
$instance->cancellationDateMs = $request->input('cancellation_date_ms');
|
$instance->cancellationDateMs = $request->input('cancellation_date_ms');
|
||||||
$instance->webOrderLineItemId = $request->input('web_order_line_item_id');
|
$instance->webOrderLineItemId = $request->input('web_order_line_item_id');
|
||||||
$instance->latestReceipt = $request->input('latest_receipt');
|
|
||||||
$instance->latestReceiptInfo = Receipt::createFromArray($request->input('latest_receipt_info'));
|
$unified_receipt = $request->input('unified_receipt');
|
||||||
$instance->latestExpiredReceipt = $request->input('latest_expired_receipt');
|
|
||||||
if ($request->has('latest_expired_receipt_info')) {
|
$instance->latestReceipt = $request->input('unified_receipt.latest_receipt');
|
||||||
$instance->latestExpiredReceiptInfo = Receipt::createFromArray($request->input('latest_expired_receipt_info'));
|
if ($request->has('unified_receipt.latest_receipt_info')) {
|
||||||
|
$instance->latestReceiptInfo = Receipt::createFromArray($request->input('unified_receipt.latest_receipt_info'));
|
||||||
|
} else {
|
||||||
|
$instance->latestReceiptInfo = null;
|
||||||
|
}
|
||||||
|
$instance->latestExpiredReceipt = $request->input('unified_receipt.latest_expired_receipt');
|
||||||
|
if ($request->has('unified_receipt.latest_expired_receipt_info')) {
|
||||||
|
if (count($request->input('unified_receipt.latest_expired_receipt_info')) > 0) {
|
||||||
|
$instance->latestExpiredReceiptInfo = Receipt::createFromArray($request->input('unified_receipt.latest_expired_receipt_info')[0]);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
$instance->latestExpiredReceiptInfo = null;
|
$instance->latestExpiredReceiptInfo = null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,4 +15,5 @@ class NotificationType extends Enum
|
|||||||
const DID_FAIL_TO_RENEW = 'did_fail_to_renew';
|
const DID_FAIL_TO_RENEW = 'did_fail_to_renew';
|
||||||
const DID_RECOVER = 'did_recover'; // replaces RENEWAL
|
const DID_RECOVER = 'did_recover'; // replaces RENEWAL
|
||||||
const PRICE_INCREASE_CONSENT = 'price_increase_consent';
|
const PRICE_INCREASE_CONSENT = 'price_increase_consent';
|
||||||
|
const DID_RENEW = 'did_renew';
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user