| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698 |
- <?php
- namespace Srmklive\PayPal\Tests\Feature;
- use Carbon\Carbon;
- use PHPUnit\Framework\Attributes\Test;
- use PHPUnit\Framework\TestCase;
- use Srmklive\PayPal\Services\PayPal as PayPalClient;
- use Srmklive\PayPal\Tests\MockClientClasses;
- use Srmklive\PayPal\Tests\MockRequestPayloads;
- use Srmklive\PayPal\Tests\MockResponsePayloads;
- class AdapterFeatureTest extends TestCase
- {
- use MockClientClasses;
- use MockRequestPayloads;
- use MockResponsePayloads;
- /** @var string */
- protected static string $access_token = '';
- /** @var string */
- protected static string $product_id = '';
- /** @var PayPalClient */
- protected PayPalClient $client;
- protected function setUp(): void
- {
- try {
- $this->client = new PayPalClient($this->getApiCredentials());
- } catch (\Exception $e) {
- }
- parent::setUp();
- }
- #[Test]
- public function it_returns_error_if_invalid_credentials_are_used_to_get_access_token(): void
- {
- $this->client = new PayPalClient($this->getMockCredentials());
- $response = $this->client->getAccessToken();
- $this->assertIsArray($response['error']);
- $this->assertArrayHasKey('error', $response);
- }
- #[Test]
- public function it_can_get_access_token(): void
- {
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockAccessTokenResponse()
- )
- );
- $response = $this->client->getAccessToken();
- self::$access_token = $response['access_token'];
- $this->assertArrayHasKey('access_token', $response);
- $this->assertNotEmpty($response['access_token']);
- }
- #[Test]
- public function it_can_create_a_billing_plan(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockCreatePlansResponse()
- )
- );
- $expectedParams = $this->createPlanParams();
- try {
- $response = $this->client->setRequestHeader('PayPal-Request-Id', 'some-request-id')->createPlan($expectedParams);
- } catch (\Throwable $e) {
- }
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('id', $response);
- }
- #[Test]
- public function it_can_list_billing_plans(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockListPlansResponse()
- )
- );
- $response = $this->client->listPlans();
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('plans', $response);
- }
- #[Test]
- public function it_can_update_a_billing_plan(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(false)
- );
- $expectedParams = $this->updatePlanParams();
- $response = $this->client->updatePlan('P-7GL4271244454362WXNWU5NQ', $expectedParams);
- $this->assertEmpty($response);
- }
- #[Test]
- public function it_can_show_details_for_a_billing_plan(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockGetPlansResponse()
- )
- );
- $response = $this->client->showPlanDetails('P-5ML4271244454362WXNWU5NQ');
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('id', $response);
- }
- #[Test]
- public function it_can_activate_a_billing_plan(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(false)
- );
- $response = $this->client->activatePlan('P-7GL4271244454362WXNWU5NQ');
- $this->assertEmpty($response);
- }
- #[Test]
- public function it_can_deactivate_a_billing_plan(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(false)
- );
- $response = $this->client->deactivatePlan('P-7GL4271244454362WXNWU5NQ');
- $this->assertEmpty($response);
- }
- #[Test]
- public function it_can_update_pricing_for_a_billing_plan(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(false)
- );
- $expectedParams = $this->updatePlanPricingParams();
- $response = $this->client->updatePlanPricing('P-2UF78835G6983425GLSM44MA', $expectedParams);
- $this->assertEmpty($response);
- }
- #[Test]
- public function it_can_list_products(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockListCatalogProductsResponse()
- )
- );
- $response = $this->client->listProducts();
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('products', $response);
- }
- #[Test]
- public function it_can_create_a_product(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockCreateCatalogProductsResponse()
- )
- );
- $expectedParams = $this->createProductParams();
- $response = $this->client->setRequestHeader('PayPal-Request-Id', 'product-request-'.time())->createProduct($expectedParams);
- self::$product_id = $response['id'];
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('id', $response);
- }
- #[Test]
- public function it_can_update_a_product(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(false)
- );
- $expectedParams = $this->updateProductParams();
- $response = $this->client->updateProduct(self::$product_id, $expectedParams);
- $this->assertEmpty($response);
- }
- #[Test]
- public function it_can_get_details_for_a_product(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockGetCatalogProductsResponse()
- )
- );
- $response = $this->client->showProductDetails(self::$product_id);
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('id', $response);
- }
- #[Test]
- public function it_can_acknowledge_item_is_returned_for_raised_dispute(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockAcceptDisputesClaimResponse()
- )
- );
- $response = $this->client->acknowledgeItemReturned(
- 'PP-D-4012',
- 'I have received the item back.',
- 'ITEM_RECEIVED'
- );
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('links', $response);
- }
- #[Test]
- public function it_can_list_disputes(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockListDisputesResponse()
- )
- );
- $response = $this->client->listDisputes();
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('items', $response);
- }
- #[Test]
- public function it_can_partially_update_a_dispute(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(false)
- );
- $expectedParams = $this->updateDisputeParams();
- $response = $this->client->updateDispute('PP-D-27803', $expectedParams);
- $this->assertEmpty($response);
- }
- #[Test]
- public function it_can_get_details_for_a_dispute(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockGetDisputesResponse()
- )
- );
- $response = $this->client->showDisputeDetails('PP-D-4012');
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('dispute_id', $response);
- }
- #[Test]
- public function it_can_provide_evidence_for_a_dispute_claim(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockAcceptDisputesClaimResponse()
- )
- );
- $mockFiles = [
- __DIR__.'/../Mocks/samples/sample.jpg',
- __DIR__.'/../Mocks/samples/sample.png',
- __DIR__.'/../Mocks/samples/sample.pdf',
- ];
- $response = $this->client->provideDisputeEvidence(
- 'PP-D-27803',
- $mockFiles
- );
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('links', $response);
- $this->markTestIncomplete('Skipping the test');
- }
- #[Test]
- public function it_throws_exception_if_invalid_file_as_evidence_is_provided_for_a_dispute_claim(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockAcceptDisputesClaimResponse()
- )
- );
- $mockFiles = [
- __DIR__.'/../Mocks/samples/sample.txt',
- __DIR__.'/../Mocks/samples/sample.pdf',
- ];
- $this->expectException(\Exception::class);
- $this->markTestIncomplete('Skipping the test');
- $response = $this->client->provideDisputeEvidence(
- 'PP-D-27803',
- $mockFiles
- );
- }
- #[Test]
- public function it_throws_exception_if_file_size_as_evidence_exceeds_per_file_limit_for_a_dispute_claim(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockAcceptDisputesClaimResponse()
- )
- );
- $file = __DIR__.'/../Mocks/samples/sample2.pdf';
- $mockFiles = [$file];
- $this->expectException(\Exception::class);
- $this->markTestIncomplete('Skipping the test');
- $this->client->provideDisputeEvidence(
- 'PP-D-27803',
- $mockFiles
- );
- }
- #[Test]
- public function it_throws_exception_if_file_size_as_evidence_exceeds_overall_limit_for_a_dispute_claim(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockAcceptDisputesClaimResponse()
- )
- );
- $file = __DIR__.'/../Mocks/samples/sample2.pdf';
- $mockFiles = [$file, $file, $file, $file, $file];
- $this->expectException(\Exception::class);
- $this->markTestIncomplete('Skipping the test');
- $this->client->provideDisputeEvidence(
- 'PP-D-27803',
- $mockFiles
- );
- }
- #[Test]
- public function it_can_offer_to_resolve_dispute_claim(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockAcceptDisputesClaimResponse()
- )
- );
- $response = $this->client->makeOfferToResolveDispute(
- 'PP-D-27803',
- 'Offer refund with replacement item.',
- 5.99,
- 'REFUND_WITH_REPLACEMENT'
- );
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('links', $response);
- }
- #[Test]
- public function it_can_escalate_dispute_claim(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockAcceptDisputesClaimResponse()
- )
- );
- $response = $this->client->escalateDisputeToClaim(
- 'PP-D-27803',
- 'Escalating to PayPal claim for resolution.'
- );
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('links', $response);
- }
- #[Test]
- public function it_can_accept_dispute_claim(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockAcceptDisputesClaimResponse()
- )
- );
- $response = $this->client->acceptDisputeClaim(
- 'PP-D-27803',
- 'Full refund to the customer.'
- );
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('links', $response);
- }
- #[Test]
- public function it_can_accept_dispute_offer_resolution(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockAcceptDisputesClaimResponse()
- )
- );
- $response = $this->client->acceptDisputeOfferResolution(
- 'PP-D-4012',
- 'I am ok with the refund offered.'
- );
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('links', $response);
- }
- #[Test]
- public function it_can_update_dispute_status(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockAcceptDisputesClaimResponse()
- )
- );
- $response = $this->client->updateDisputeStatus(
- 'PP-D-4012',
- true
- );
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('links', $response);
- }
- #[Test]
- public function it_can_settle_dispute(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockAcceptDisputesClaimResponse()
- )
- );
- $response = $this->client->settleDispute(
- 'PP-D-4012',
- true
- );
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('links', $response);
- }
- #[Test]
- public function it_can_decline_dispute_offer_resolution(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockAcceptDisputesClaimResponse()
- )
- );
- $response = $this->client->declineDisputeOfferResolution(
- 'PP-D-4012',
- 'I am not ok with the refund offered.'
- );
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('links', $response);
- }
- #[Test]
- public function it_can_generate_unique_invoice_number(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockGenerateInvoiceNumberResponse()
- )
- );
- $response = $this->client->generateInvoiceNumber();
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('invoice_number', $response);
- }
- #[Test]
- public function it_can_create_a_draft_invoice(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockCreateInvoicesResponse()
- )
- );
- $expectedParams = $this->createInvoiceParams();
- $response = $this->client->createInvoice($expectedParams);
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('id', $response);
- }
- #[Test]
- public function it_can_list_invoices(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockListInvoicesResponse()
- )
- );
- $response = $this->client->listInvoices();
- $this->assertArrayHasKey('total_pages', $response);
- $this->assertArrayHasKey('total_items', $response);
- }
- #[Test]
- public function it_can_delete_an_invoice(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(false)
- );
- $response = $this->client->deleteInvoice('INV2-Z56S-5LLA-Q52L-CPZ5');
- $this->assertEmpty($response);
- }
- #[Test]
- public function it_can_update_an_invoice(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockUpdateInvoicesResponse()
- )
- );
- $expectedParams = $this->updateInvoiceParams();
- $response = $this->client->updateInvoice('INV2-Z56S-5LLA-Q52L-CPZ5', $expectedParams);
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('id', $response);
- }
- #[Test]
- public function it_can_show_details_for_an_invoice(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockGetInvoicesResponse()
- )
- );
- $response = $this->client->showInvoiceDetails('INV2-Z56S-5LLA-Q52L-CPZ5');
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('id', $response);
- }
- #[Test]
- public function it_can_cancel_an_invoice(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(false)
- );
- $expectedParams = $this->cancelInvoiceParams();
- $response = $this->client->cancelInvoice(
- 'INV2-Z56S-5LLA-Q52L-CPZ5',
- 'Payment due for the invoice #ABC-123',
- 'Please pay before the due date to avoid incurring late payment charges which will be adjusted in the next bill generated.',
- true,
- true,
- [
- 'customer-a@example.com',
- 'customer@example.com',
- ]
- );
- $this->assertEmpty($response);
- }
- #[Test]
- public function it_can_generate_qr_code_for_invoice(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockGenerateInvoiceQRCodeResponse()
- )
- );
- $response = $this->client->generateQRCodeInvoice('INV2-Z56S-5LLA-Q52L-CPZ5');
- $this->assertNotEmpty($response);
- }
- #[Test]
- public function it_can_register_payment_for_invoice(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockInvoiceRegisterPaymentResponse()
- )
- );
- $response = $this->client->registerPaymentInvoice('INV2-Z56S-5LLA-Q52L-CPZ5', '2018-05-01', 'BANK_TRANSFER', 10.00);
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('payment_id', $response);
- }
- #[Test]
- public function it_can_delete_payment_for_invoice(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(false)
- );
- $response = $this->client->deleteExternalPaymentInvoice('INV2-Z56S-5LLA-Q52L-CPZ5', 'EXTR-86F38350LX4353815');
- $this->assertEmpty($response);
- }
- #[Test]
- public function it_can_refund_payment_for_invoice(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockInvoiceRefundPaymentResponse()
- )
- );
- $response = $this->client->refundInvoice('INV2-Z56S-5LLA-Q52L-CPZ5', '2018-05-01', 'BANK_TRANSFER', 5.00);
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('refund_id', $response);
- }
- #[Test]
- public function it_can_delete_refund_for_invoice(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(false)
- );
- $response = $this->client->deleteRefundInvoice('INV2-Z56S-5LLA-Q52L-CPZ5', 'EXTR-2LG703375E477444T');
- $this->assertEmpty($response);
- }
- #[Test]
- public function it_can_send_an_invoice(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(false)
- );
- $response = $this->client->sendInvoice(
- 'INV2-Z56S-5LLA-Q52L-CPZ5',
- 'Payment due for the invoice #ABC-123',
- 'Please pay before the due date to avoid incurring late payment charges which will be adjusted in the next bill generated.',
- true,
- true,
- [
- 'customer-a@example.com',
- 'customer@example.com',
- ]
- );
- $this->assertEmpty($response);
- }
- #[Test]
- public function it_can_send_reminder_for_an_invoice(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(false)
- );
- $response = $this->client->sendInvoiceReminder(
- 'INV2-Z56S-5LLA-Q52L-CPZ5',
- 'Reminder: Payment due for the invoice #ABC-123',
- 'Please pay before the due date to avoid incurring late payment charges which will be adjusted in the next bill generated.',
- true,
- true,
- [
- 'customer-a@example.com',
- 'customer@example.com',
- ]
- );
- $this->assertEmpty($response);
- }
- #[Test]
- public function it_can_create_invoice_template(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockCreateInvoiceTemplateResponse()
- )
- );
- $expectedParams = $this->mockCreateInvoiceTemplateParams();
- $response = $this->client->createInvoiceTemplate($expectedParams);
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('id', $response);
- }
- #[Test]
- public function it_can_list_invoice_templates(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockListInvoiceTemplateResponse()
- )
- );
- $response = $this->client->listInvoiceTemplates();
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('templates', $response);
- }
- #[Test]
- public function it_can_delete_an_invoice_template(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(false)
- );
- $response = $this->client->deleteInvoiceTemplate('TEMP-19V05281TU309413B');
- $this->assertEmpty($response);
- }
- #[Test]
- public function it_can_update_an_invoice_template(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockUpdateInvoiceTemplateResponse()
- )
- );
- $expectedParams = $this->mockUpdateInvoiceTemplateParams();
- $response = $this->client->updateInvoiceTemplate('TEMP-19V05281TU309413B', $expectedParams);
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('id', $response);
- }
- #[Test]
- public function it_can_get_details_for_an_invoice_template(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockGetInvoiceTemplateResponse()
- )
- );
- $response = $this->client->showInvoiceTemplateDetails('TEMP-19V05281TU309413B');
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('id', $response);
- }
- #[Test]
- public function it_can_search_invoices(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockSearchInvoicesResponse()
- )
- );
- $response = $this->client->searchInvoices();
- $this->assertArrayHasKey('total_pages', $response);
- $this->assertArrayHasKey('total_items', $response);
- }
- #[Test]
- public function it_can_search_invoices_with_custom_filters(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockSearchInvoicesResponse()
- )
- );
- $response = $this->client
- ->addInvoiceFilterByRecipientEmail('bill-me@example.com')
- ->addInvoiceFilterByRecipientFirstName('John')
- ->addInvoiceFilterByRecipientLastName('Doe')
- ->addInvoiceFilterByRecipientBusinessName('Acme Inc.')
- ->addInvoiceFilterByInvoiceNumber('#123')
- ->addInvoiceFilterByInvoiceStatus(['PAID', 'MARKED_AS_PAID'])
- ->addInvoiceFilterByReferenceorMemo('deal-ref')
- ->addInvoiceFilterByCurrencyCode('USD')
- ->addInvoiceFilterByAmountRange(30, 50)
- ->addInvoiceFilterByDateRange('2018-06-01', '2018-06-21', 'invoice_date')
- ->addInvoiceFilterByArchivedStatus(false)
- ->addInvoiceFilterByFields(['items', 'payments', 'refunds'])
- ->searchInvoices();
- $this->assertArrayHasKey('total_pages', $response);
- $this->assertArrayHasKey('total_items', $response);
- $this->assertArrayHasKey('items', $response);
- }
- #[Test]
- public function it_throws_exception_on_search_invoices_with_invalid_status(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockSearchInvoicesResponse()
- )
- );
- $this->expectException(\Exception::class);
- $response = $this->client
- ->addInvoiceFilterByInvoiceStatus(['DECLINED'])
- ->searchInvoices();
- }
- #[Test]
- public function it_throws_exception_on_search_invoices_with_invalid_amount_ranges(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockSearchInvoicesResponse()
- )
- );
- $filters = $this->invoiceSearchParams();
- $this->expectException(\Exception::class);
- $response = $this->client
- ->addInvoiceFilterByAmountRange(50, 30)
- ->searchInvoices();
- }
- #[Test]
- public function it_throws_exception_on_search_invoices_with_invalid_date_ranges(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockSearchInvoicesResponse()
- )
- );
- $filters = $this->invoiceSearchParams();
- $this->expectException(\Exception::class);
- $response = $this->client
- ->addInvoiceFilterByDateRange('2018-07-01', '2018-06-21', 'invoice_date')
- ->searchInvoices();
- }
- #[Test]
- public function it_throws_exception_on_search_invoices_with_invalid_date_range_type(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockSearchInvoicesResponse()
- )
- );
- $filters = $this->invoiceSearchParams();
- $this->expectException(\Exception::class);
- $response = $this->client
- ->addInvoiceFilterByDateRange('2018-06-01', '2018-06-21', 'declined_date')
- ->searchInvoices();
- }
- #[Test]
- public function it_can_get_user_profile_details(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockShowProfileInfoResponse()
- )
- );
- $response = $this->client->showProfileInfo();
- $this->assertArrayHasKey('address', $response);
- }
- #[Test]
- public function it_can_get_list_users(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mocklistUsersResponse()
- )
- );
- $response = $this->client->listUsers();
- $this->assertArrayHasKey('Resources', $response);
- }
- #[Test]
- public function it_can_get_user_details()
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mocklistUserResponse()
- )
- );
- $user_id = '7XRNGHV24HQL4';
- $response = $this->client->showUserDetails($user_id);
- $this->assertArrayHasKey('userName', $response);
- }
- #[Test]
- public function it_can_deleta_a_user(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(false)
- );
- $user_id = '7XRNGHV24HQL4';
- $response = $this->client->deleteUser($user_id);
- $this->assertEmpty($response);
- }
- #[Test]
- public function it_can_create_merchant_applications(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockCreateMerchantApplicationResponse()
- )
- );
- $response = $this->client->createMerchantApplication(
- 'AGGREGATOR',
- [
- 'https://example.com/callback',
- 'https://example.com/callback2',
- ],
- [
- 'facilitator@example.com',
- 'merchant@example.com',
- ],
- 'WDJJHEBZ4X2LY',
- 'some-open-id'
- );
- $this->assertArrayHasKey('client_name', $response);
- $this->assertArrayHasKey('contacts', $response);
- $this->assertArrayHasKey('redirect_uris', $response);
- }
- #[Test]
- public function it_can_set_account_properties(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client('')
- );
- $response = $this->client->setAccountProperties($this->mockSetAccountPropertiesParams());
- $this->assertEmpty($response);
- }
- #[Test]
- public function it_can_disable_account_properties(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockUpdateOrdersResponse()
- )
- );
- $response = $this->client->disableAccountProperties();
- $this->assertEmpty($response);
- }
- #[Test]
- public function it_can_get_client_token(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockGetClientTokenResponse()
- )
- );
- $response = $this->client->getClientToken();
- $this->assertArrayHasKey('client_token', $response);
- }
- #[Test]
- public function it_can_create_orders(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockCreateOrdersResponse()
- )
- );
- $filters = $this->createOrderParams();
- $response = $this->client->createOrder($filters);
- $this->assertArrayHasKey('status', $response);
- $this->assertArrayHasKey('id', $response);
- $this->assertArrayHasKey('links', $response);
- }
- #[Test]
- public function it_can_update_orders(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockUpdateOrdersResponse()
- )
- );
- $order_id = '5O190127TN364715T';
- $filters = $this->updateOrderParams();
- $response = $this->client->updateOrder($order_id, $filters);
- $this->assertNotEmpty($response);
- }
- #[Test]
- public function it_can_get_order_details(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockOrderDetailsResponse()
- )
- );
- $order_id = '5O190127TN364715T';
- $response = $this->client->showOrderDetails($order_id);
- $this->assertArrayHasKey('status', $response);
- $this->assertArrayHasKey('id', $response);
- $this->assertArrayHasKey('intent', $response);
- $this->assertArrayHasKey('payment_source', $response);
- $this->assertArrayHasKey('purchase_units', $response);
- $this->assertArrayHasKey('create_time', $response);
- $this->assertArrayHasKey('links', $response);
- }
- #[Test]
- public function it_can_authorize_payment_for_an_order(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockOrderPaymentAuthorizedResponse()
- )
- );
- $order_id = '5O190127TN364715T';
- $response = $this->client->authorizePaymentOrder($order_id);
- $this->assertArrayHasKey('status', $response);
- $this->assertArrayHasKey('id', $response);
- $this->assertArrayHasKey('payer', $response);
- $this->assertArrayHasKey('purchase_units', $response);
- $this->assertArrayHasKey('links', $response);
- }
- #[Test]
- public function it_can_create_partner_referral(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockCreatePartnerReferralsResponse()
- )
- );
- $expectedParams = $this->mockCreatePartnerReferralParams();
- $response = $this->client->createPartnerReferral($expectedParams);
- $this->assertArrayHasKey('links', $response);
- }
- #[Test]
- public function it_can_get_referral_details(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockShowReferralDataResponse()
- )
- );
- $partner_referral_id = 'ZjcyODU4ZWYtYTA1OC00ODIwLTk2M2EtOTZkZWQ4NmQwYzI3RU12cE5xa0xMRmk1NWxFSVJIT1JlTFdSbElCbFU1Q3lhdGhESzVQcU9iRT0=';
- $response = $this->client->showReferralData($partner_referral_id);
- $this->assertArrayHasKey('partner_referral_id', $response);
- $this->assertArrayHasKey('referral_data', $response);
- }
- #[Test]
- public function it_can_list_seller_tracking_information(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockListSellerTrackingInformationResponse()
- )
- );
- $partner_id = 'U6E69K99P3G88';
- $tracking_id = 'merchantref1';
- $response = $this->client->listSellerTrackingInformation($partner_id, $tracking_id);
- $this->assertArrayHasKey('merchant_id', $response);
- $this->assertArrayHasKey('tracking_id', $response);
- }
- #[Test]
- public function it_can_show_seller_status(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockShowSellerStatusResponse()
- )
- );
- $partner_id = 'U6E69K99P3G88';
- $merchant_id = '8LQLM2ML4ZTYU';
- $response = $this->client->showSellerStatus($partner_id, $merchant_id);
- $this->assertArrayHasKey('merchant_id', $response);
- }
- #[Test]
- public function it_can_list_merchant_credentials(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockListMerchantCredentialsResponse()
- )
- );
- $partner_id = 'U6E69K99P3G88';
- $response = $this->client->listMerchantCredentials($partner_id);
- $this->assertArrayHasKey('client_id', $response);
- $this->assertArrayHasKey('payer_id', $response);
- }
- #[Test]
- public function it_can_list_web_experience_profiles(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockListWebProfilesResponse()
- )
- );
- $response = $this->client->listWebExperienceProfiles();
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('id', collect($response)->first());
- }
- #[Test]
- public function it_can_create_web_experience_profile(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockWebProfileResponse()
- )
- );
- $expectedParams = $this->mockCreateWebProfileParams();
- $response = $this->client->setRequestHeader('PayPal-Request-Id', 'some-request-id')->createWebExperienceProfile($expectedParams);
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('name', $response);
- }
- #[Test]
- public function it_can_delete_web_experience_profile(): void
- {
- $expectedResponse = '';
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client($expectedResponse)
- );
- $expectedParams = 'XP-A88A-LYLW-8Y3X-E5ER';
- $response = $this->client->deleteWebExperienceProfile($expectedParams);
- $this->assertEmpty($response);
- }
- #[Test]
- public function it_can_partially_update_web_experience_profile(): void
- {
- $expectedResponse = '';
- $expectedParams = $this->partiallyUpdateWebProfileParams();
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client($expectedResponse)
- );
- $response = $this->client->patchWebExperienceProfile('XP-A88A-LYLW-8Y3X-E5ER', $expectedParams);
- $this->assertEmpty($response);
- }
- #[Test]
- public function it_can_fully_update_web_experience_profile(): void
- {
- $expectedResponse = '';
- $expectedParams = $this->updateWebProfileParams();
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client($expectedResponse)
- );
- $response = $this->client->updateWebExperienceProfile('XP-A88A-LYLW-8Y3X-E5ER', $expectedParams);
- $this->assertEmpty($response);
- }
- #[Test]
- public function it_can_get_web_experience_profile_details(): void
- {
- $expectedResponse = $this->mockWebProfileResponse();
- $expectedParams = 'XP-A88A-LYLW-8Y3X-E5ER';
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client($expectedResponse)
- );
- $response = $this->client->showWebExperienceProfileDetails($expectedParams);
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('name', $response);
- }
- #[Test]
- public function it_can_capture_payment_for_an_order(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockOrderPaymentCapturedResponse()
- )
- );
- $order_id = '5O190127TN364715T';
- $response = $this->client->capturePaymentOrder($order_id);
- $this->assertArrayHasKey('status', $response);
- $this->assertArrayHasKey('id', $response);
- $this->assertArrayHasKey('payer', $response);
- $this->assertArrayHasKey('purchase_units', $response);
- $this->assertArrayHasKey('links', $response);
- }
- #[Test]
- public function it_can_show_details_for_an_authorized_payment(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockGetAuthorizedPaymentDetailsResponse()
- )
- );
- $response = $this->client->showAuthorizedPaymentDetails('0VF52814937998046');
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('id', $response);
- }
- #[Test]
- public function it_can_capture_an_authorized_payment(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockCaptureAuthorizedPaymentResponse()
- )
- );
- $response = $this->client->captureAuthorizedPayment(
- '0VF52814937998046',
- 'INVOICE-123',
- 10.99,
- 'Payment is due'
- );
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('id', $response);
- }
- #[Test]
- public function it_can_reauthorize_an_authorized_payment(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockReAuthorizeAuthorizedPaymentResponse()
- )
- );
- $response = $this->client->reAuthorizeAuthorizedPayment('0VF52814937998046', 10.99);
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('id', $response);
- }
- #[Test]
- public function it_can_void_an_authorized_payment(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(false)
- );
- $response = $this->client->voidAuthorizedPayment('0VF52814937998046');
- $this->assertEmpty($response);
- }
- #[Test]
- public function it_can_show_details_for_a_captured_payment(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockGetCapturedPaymentDetailsResponse()
- )
- );
- $response = $this->client->showCapturedPaymentDetails('2GG279541U471931P');
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('id', $response);
- }
- #[Test]
- public function it_can_refund_a_captured_payment(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockRefundCapturedPaymentResponse()
- )
- );
- $response = $this->client->refundCapturedPayment(
- '2GG279541U471931P',
- 'INVOICE-123',
- 10.99,
- 'Defective product'
- );
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('id', $response);
- }
- #[Test]
- public function it_can_show_details_for_a_refund(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockGetRefundDetailsResponse()
- )
- );
- $response = $this->client->showRefundDetails('1JU08902781691411');
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('id', $response);
- }
- #[Test]
- public function it_can_create_batch_payout(): void
- {
- $expectedResponse = $this->mockCreateBatchPayoutResponse();
- $expectedParams = $this->mockCreateBatchPayoutParams();
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client($expectedResponse)
- );
- $response = $this->client->createBatchPayout($expectedParams);
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('batch_header', $response);
- }
- #[Test]
- public function it_can_show_batch_payout_details(): void
- {
- $expectedResponse = $this->showBatchPayoutResponse();
- $expectedParams = 'FYXMPQTX4JC9N';
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client($expectedResponse)
- );
- $response = $this->client->showBatchPayoutDetails($expectedParams);
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('batch_header', $response);
- $this->assertArrayHasKey('items', $response);
- }
- #[Test]
- public function it_can_show_batch_payout_item_details(): void
- {
- $expectedResponse = $this->showBatchPayoutItemResponse();
- $expectedParams = '8AELMXH8UB2P8';
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client($expectedResponse)
- );
- $response = $this->client->showPayoutItemDetails($expectedParams);
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('payout_item_id', $response);
- $this->assertArrayHasKey('payout_batch_id', $response);
- $this->assertArrayHasKey('payout_item', $response);
- }
- #[Test]
- public function it_can_cancel_unclaimed_batch_payout_item(): void
- {
- $expectedResponse = $this->mockCancelUnclaimedBatchItemResponse();
- $expectedParams = '8AELMXH8UB2P8';
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client($expectedResponse)
- );
- $response = $this->client->cancelUnclaimedPayoutItem($expectedParams);
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('payout_item_id', $response);
- $this->assertArrayHasKey('payout_batch_id', $response);
- $this->assertArrayHasKey('payout_item', $response);
- }
- #[Test]
- public function it_can_create_referenced_batch_payout(): void
- {
- $expectedResponse = $this->mockCreateReferencedBatchPayoutResponse();
- $expectedParams = $this->mockCreateReferencedBatchPayoutParams();
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client($expectedResponse)
- );
- $response = $this->client->setRequestHeaders([
- 'PayPal-Request-Id' => 'some-request-id',
- 'PayPal-Partner-Attribution-Id' => 'some-attribution-id',
- ])->createReferencedBatchPayout($expectedParams);
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('links', $response);
- }
- #[Test]
- public function it_can_list_items_referenced_in_batch_payout(): void
- {
- $expectedResponse = $this->mockShowReferencedBatchPayoutResponse();
- $expectedParams = 'KHbwO28lWlXwi2IlToJ2IYNG4juFv6kpbFx4J9oQ5Hb24RSp96Dk5FudVHd6v4E=';
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client($expectedResponse)
- );
- $response = $this->client->listItemsReferencedInBatchPayout($expectedParams);
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('links', $response);
- }
- #[Test]
- public function it_can_create_referenced_batch_payout_item(): void
- {
- $expectedResponse = $this->mockCreateReferencedBatchPayoutItemResponse();
- $expectedParams = $this->mockCreateReferencedBatchPayoutItemParams();
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client($expectedResponse)
- );
- $response = $this->client->setRequestHeaders([
- 'PayPal-Request-Id' => 'some-request-id',
- 'PayPal-Partner-Attribution-Id' => 'some-attribution-id',
- ])->createReferencedBatchPayoutItem($expectedParams);
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('links', $response);
- }
- #[Test]
- public function it_can_show_referenced_payout_item_details(): void
- {
- $expectedResponse = $this->mockShowReferencedBatchPayoutItemResponse();
- $expectedParams = 'CDZEC5MJ8R5HY';
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client($expectedResponse)
- );
- $response = $this->client->setRequestHeader('PayPal-Partner-Attribution-Id', 'some-attribution-id')
- ->showReferencedPayoutItemDetails($expectedParams);
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('item_id', $response);
- $this->assertArrayHasKey('reference_id', $response);
- }
- #[Test]
- public function it_can_list_transactions(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockListTransactionsResponse()
- )
- );
- $filters = [
- 'start_date' => Carbon::now()->toIso8601String(),
- 'end_date' => Carbon::now()->subDays(30)->toIso8601String(),
- ];
- $response = $this->client->listTransactions($filters);
- $this->assertArrayHasKey('transaction_details', $response);
- $this->assertGreaterThan(0, sizeof($response['transaction_details']));
- }
- #[Test]
- public function it_can_list_account_balances(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockListBalancesResponse()
- )
- );
- $date = Carbon::now()->subDays(30)->toIso8601String();
- $response = $this->client->listBalances($date);
- $this->assertNotEmpty($response);
- }
- #[Test]
- public function it_can_list_account_balances_for_a_different_currency(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockListBalancesResponse()
- )
- );
- $date = Carbon::now()->subDays(30)->toIso8601String();
- $response = $this->client->listBalances($date, 'EUR');
- $this->assertNotEmpty($response);
- }
- #[Test]
- public function it_can_create_a_subscription(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockCreateSubscriptionResponse()
- )
- );
- $expectedParams = $this->mockCreateSubscriptionParams();
- $response = $this->client->createSubscription($expectedParams);
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('id', $response);
- }
- #[Test]
- public function it_can_update_a_subscription(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(false)
- );
- $expectedParams = $this->mockUpdateSubscriptionParams();
- $response = $this->client->updateSubscription('I-BW452GLLEP1G', $expectedParams);
- $this->assertEmpty($response);
- }
- #[Test]
- public function it_can_show_details_for_a_subscription(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockGetSubscriptionDetailsResponse()
- )
- );
- $response = $this->client->showSubscriptionDetails('I-BW452GLLEP1G');
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('id', $response);
- }
- #[Test]
- public function it_can_activate_a_subscription(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(false)
- );
- $response = $this->client->activateSubscription('I-BW452GLLEP1G', 'Reactivating the subscription');
- $this->assertEmpty($response);
- }
- #[Test]
- public function it_can_cancel_a_subscription(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(false)
- );
- $response = $this->client->cancelSubscription('I-BW452GLLEP1G', 'Not satisfied with the service');
- $this->assertEmpty($response);
- }
- #[Test]
- public function it_can_suspend_a_subscription()
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(false)
- );
- $response = $this->client->suspendSubscription('I-BW452GLLEP1G', 'Item out of stock');
- $this->assertEmpty($response);
- }
- #[Test]
- public function it_can_capture_payment_for_a_subscription(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(false)
- );
- $response = $this->client->captureSubscriptionPayment('I-BW452GLLEP1G', 'Charging as the balance reached the limit', 100);
- $this->assertEmpty($response);
- }
- #[Test]
- public function it_can_update_quantity_or_product_for_a_subscription(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockUpdateSubscriptionItemsResponse()
- )
- );
- $expectedParams = $this->mockUpdateSubscriptionItemsParams();
- $response = $this->client->reviseSubscription('I-BW452GLLEP1G', $expectedParams);
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('plan_id', $response);
- }
- #[Test]
- public function it_can_list_transactions_for_a_subscription(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockListSubscriptionTransactionsResponse()
- )
- );
- $response = $this->client->listSubscriptionTransactions('I-BW452GLLEP1G', '2018-01-21T07:50:20.940Z', '2018-08-22T07:50:20.940Z');
- $this->assertNotEmpty($response);
- $this->assertEquals($response, $this->mockListSubscriptionTransactionsResponse());
- }
- #[Test]
- public function it_can_list_tracking_details(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockGetTrackingDetailsResponse()
- )
- );
- $response = $this->client->listTrackingDetails('8MC585209K746392H-443844607820');
- $this->assertNotEmpty($response);
- $this->assertEquals($response, $this->mockGetTrackingDetailsResponse());
- $this->assertArrayHasKey('transaction_id', $response);
- $this->assertArrayHasKey('tracking_number', $response);
- }
- #[Test]
- public function it_can_get_tracking_details_for_tracking_id(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockGetTrackingDetailsResponse()
- )
- );
- $response = $this->client->showTrackingDetails('8MC585209K746392H-443844607820');
- $this->assertNotEmpty($response);
- $this->assertEquals($response, $this->mockGetTrackingDetailsResponse());
- $this->assertArrayHasKey('tracking_number', $response);
- }
- #[Test]
- public function it_can_update_tracking_details_for_tracking_id(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(false)
- );
- $response = $this->client->updateTrackingDetails(
- '8MC585209K746392H-443844607820',
- $this->mockUpdateTrackingDetailsParams()
- );
- $this->assertEmpty($response);
- }
- #[Test]
- public function it_can_create_tracking_in_batches(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockCreateTrackinginBatchesResponse()
- )
- );
- $expectedParams = $this->mockCreateTrackinginBatchesParams();
- $response = $this->client->addBatchTracking($expectedParams);
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('tracker_identifiers', $response);
- }
- #[Test]
- public function it_can_create_single_tracking_for_single_transaction(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockCreateTrackinginBatchesResponse()
- )
- );
- $expectedParams = $this->mockCreateTrackinginBatchesParams();
- $response = $this->client->addTracking($expectedParams);
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('tracker_identifiers', $response);
- }
- #[Test]
- public function it_can_list_web_hooks_event_types(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockListWebHookEventsTypesResponse()
- )
- );
- $response = $this->client->listEventTypes();
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('event_types', $response);
- }
- #[Test]
- public function it_can_list_web_hooks_events(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockWebHookEventsListResponse()
- )
- );
- $response = $this->client->listEvents();
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('events', $response);
- }
- #[Test]
- public function it_can_show_details_for_a_web_hooks_event(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockGetWebHookEventResponse()
- )
- );
- $response = $this->client->showEventDetails('8PT597110X687430LKGECATA');
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('id', $response);
- }
- #[Test]
- public function it_can_resend_notification_for_a_web_hooks_event(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockResendWebHookEventNotificationResponse()
- )
- );
- $expectedParams = ['12334456'];
- $response = $this->client->resendEventNotification('8PT597110X687430LKGECATA', $expectedParams);
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('id', $response);
- }
- #[Test]
- public function it_can_create_a_web_hook(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockCreateWebHookResponse()
- )
- );
- $response = $this->client->createWebHook(
- 'https://example.com/example_webhook',
- ['PAYMENT.AUTHORIZATION.CREATED', 'PAYMENT.AUTHORIZATION.VOIDED']
- );
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('event_types', $response);
- }
- #[Test]
- public function it_can_list_web_hooks(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockListWebHookResponse()
- )
- );
- $response = $this->client->listWebHooks();
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('webhooks', $response);
- }
- #[Test]
- public function it_can_delete_a_web_hook(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(false)
- );
- $response = $this->client->deleteWebHook('5GP028458E2496506');
- $this->assertEmpty($response);
- }
- #[Test]
- public function it_can_update_a_web_hook(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockUpdateWebHookResponse()
- )
- );
- $expectedParams = $this->mockUpdateWebHookParams();
- $response = $this->client->updateWebHook('0EH40505U7160970P', $expectedParams);
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('event_types', $response);
- }
- #[Test]
- public function it_can_show_details_for_a_web_hook(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockGetWebHookResponse()
- )
- );
- $response = $this->client->showWebHookDetails('0EH40505U7160970P');
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('event_types', $response);
- }
- #[Test]
- public function it_can_list_events_for_web_hooks(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockListWebHookEventsResponse()
- )
- );
- $response = $this->client->listWebHookEvents('0EH40505U7160970P');
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('event_types', $response);
- }
- #[Test]
- public function it_can_verify_web_hook_signature(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockVerifyWebHookSignatureResponse()
- )
- );
- $expectedParams = $this->mockVerifyWebHookSignatureParams();
- $response = $this->client->verifyWebHook($expectedParams);
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('verification_status', $response);
- }
- #[Test]
- public function it_can_list_payment_methods_source_tokens(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockListPaymentMethodsTokensResponse()
- )
- );
- $response = $this->client->setCustomerSource('customer_4029352050')
- ->listPaymentSourceTokens();
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('payment_tokens', $response);
- }
- #[Test]
- public function it_can_show_details_for_payment_method_source_token(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockCreatePaymentMethodsTokenResponse()
- )
- );
- $response = $this->client->showPaymentSourceTokenDetails('8kk8451t');
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('id', $response);
- $this->assertArrayHasKey('customer', $response);
- $this->assertArrayHasKey('payment_source', $response);
- }
- #[Test]
- public function it_can_delete_a_payment_method_source_token(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(false)
- );
- $response = $this->client->deletePaymentSourceToken('8kk8451t');
- $this->assertEmpty($response);
- }
- #[Test]
- public function it_can_show_details_for_payment_setup_token(): void
- {
- $this->client->setAccessToken([
- 'access_token' => self::$access_token,
- 'token_type' => 'Bearer',
- ]);
- $this->client->setClient(
- $this->mock_http_client(
- $this->mockListPaymentSetupTokenResponse()
- )
- );
- $response = $this->client->showPaymentSetupTokenDetails('5C991763VB2781612');
- $this->assertNotEmpty($response);
- $this->assertArrayHasKey('id', $response);
- $this->assertArrayHasKey('customer', $response);
- $this->assertArrayHasKey('payment_source', $response);
- }
- }
|