function testParserParsesIPN() { $parser = new IPNParser(); $ipn = $parser->parse('mc_gross=19.95&protection_eligibility=Eligible&address_status=confirmed&payer_id=LPLWNMTBWMFAY&tax=0.00&address_street=1+Main+St&payment_date=20%3A12%3A59+Jan+13%2C+2009+PST&payment_status=Completed&charset=windows-1252&address_zip=95131&first_name=Test&mc_fee=0.88&address_country_code=US&address_name=Test+User¬ify_version=2.6&custom=&payer_status=verified&address_country=United+States&address_city=San+Jose&quantity=1&verify_sign=AtkOfCXbDm2hu0ZELryHFjY-Vb7PAUvS6nMXgysbElEn9v-1XcmSoGtf&payer_email=gpmac_1231902590_per%40paypal.com&txn_id=61E67681CH3238416&payment_type=instant&last_name=User&address_state=CA&receiver_email=gpmac_1231902686_biz%40paypal.com&payment_fee=0.88&receiver_id=S8XGHLYDW9T3S&txn_type=express_checkout&item_name=&mc_currency=USD&item_number=&residence_country=US&test_ipn=1&handling_amount=0.00&transaction_subject=&payment_gross=19.95&shipping=0.00'); $ipnData = $ipn->getData(); $this->assertNotNull($ipnData); $this->assertEquals($ipnData['mc_gross'], '19.95'); $this->assertEquals($ipnData['protection_eligibility'], 'Eligible'); $this->assertEquals($ipnData['address_status'], 'confirmed'); $this->assertEquals($ipnData['payer_id'], 'LPLWNMTBWMFAY'); $this->assertEquals($ipnData['tax'], '0.00'); $this->assertEquals($ipnData['address_street'], '1 Main St'); $this->assertEquals($ipnData['payment_date'], '20:12:59 Jan 13, 2009 PST'); $this->assertEquals($ipnData['payment_status'], 'Completed'); $this->assertEquals($ipnData['charset'], 'windows-1252'); $this->assertEquals($ipnData['address_zip'], '95131'); $this->assertEquals($ipnData['first_name'], 'Test'); $this->assertEquals($ipnData['mc_fee'], '0.88'); $this->assertEquals($ipnData['address_country_code'], 'US'); $this->assertEquals($ipnData['address_name'], 'Test User'); $this->assertEquals($ipnData['notify_version'], '2.6'); $this->assertEquals($ipnData['custom'], ''); $this->assertEquals($ipnData['payer_status'], 'verified'); $this->assertEquals($ipnData['address_country'], 'United States'); $this->assertEquals($ipnData['address_city'], 'San Jose'); $this->assertEquals($ipnData['quantity'], '1'); $this->assertEquals($ipnData['verify_sign'], 'AtkOfCXbDm2hu0ZELryHFjY-Vb7PAUvS6nMXgysbElEn9v-1XcmSoGtf'); $this->assertEquals($ipnData['payer_email'], '*****@*****.**'); $this->assertEquals($ipnData['txn_id'], '61E67681CH3238416'); $this->assertEquals($ipnData['payment_type'], 'instant'); $this->assertEquals($ipnData['last_name'], 'User'); $this->assertEquals($ipnData['address_state'], 'CA'); $this->assertEquals($ipnData['receiver_email'], '*****@*****.**'); $this->assertEquals($ipnData['payment_fee'], '0.88'); $this->assertEquals($ipnData['receiver_id'], 'S8XGHLYDW9T3S'); $this->assertEquals($ipnData['txn_type'], 'express_checkout'); $this->assertEquals($ipnData['item_name'], ''); $this->assertEquals($ipnData['mc_currency'], 'USD'); $this->assertEquals($ipnData['item_number'], ''); $this->assertEquals($ipnData['residence_country'], 'US'); $this->assertEquals($ipnData['test_ipn'], '1'); $this->assertEquals($ipnData['handling_amount'], '0.00'); $this->assertEquals($ipnData['transaction_subject'], ''); $this->assertEquals($ipnData['payment_gross'], '19.95'); $this->assertEquals($ipnData['shipping'], '0.00'); $transactions = $ipn->getTransactions(); $this->assertEquals(count($transactions), 1); $transaction = $transactions[0]; $this->assertEquals($transaction->getID(), '61E67681CH3238416'); $this->assertEquals($transaction->getStatus(), 'Completed'); $this->assertEquals($transaction->getReceiver(), '*****@*****.**'); $this->assertEquals($transaction->getAmount(), '19.95'); $this->assertEquals($transaction->getCurrency(), 'USD'); }
public function authorize() { if ($this->getMethod() != 'POST') { return false; } $postData = $this->getContent(); $isValid = $this->validator->isValidIPN($postData); if ($isValid) { $parser = new IPNParser(); $this->IPN = $parser->parse($postData); $isValid = count($this->IPN->getTransactions()) >= 0; } return $isValid; }