У меня есть некоторые проблемы, пытаясь заставить это работать, я реализовал экспресс-экспресс (или, похоже, был) успешно, но также моя система нуждается в подписке, следуя этой пример.
Теперь моя проблема в том, что в Laravel вы не можете просто добавить некоторые случайные файлы, поэтому я пытаюсь сделать это правильно, к сожалению, нет документации по классам и методам, включая библиотеку.
Я создал некоторые функции в контроллерах (я не знаю, правильно ли это), с проблемой, с которой я сейчас сталкиваюсь, пытается создатьRecurringPayment(), чтобы применить желаемую сумму повторяющегося платежа, является последним шагом Думаю.
Спасибо за помощь.
-
приложение/контроллеры/PaypalController.php
public function prepareExpressCheckout(){ $storage = $this->getPayum()->getStorage('Payum\Core\Model\ArrayObject'); $details = $storage->createModel(); $details['PAYMENTREQUEST_0_CURRENCYCODE'] = 'USD'; $details['PAYMENTREQUEST_0_AMT'] = 1.23; $storage->updateModel($details); $captureToken = $this->getTokenFactory()->createCaptureToken('paypal_es', $details, 'payment_done'); $details['RETURNURL'] = $captureToken->getTargetUrl(); $details['CANCELURL'] = $captureToken->getTargetUrl(); $storage->updateModel($details); return \Redirect::to($captureToken->getTargetUrl()); } public function prepareSubscribe(){ $storage = $this->getPayum()->getStorage('Payum\Core\Model\ArrayObject'); $details = $storage->createModel(); $details['PAYMENTREQUEST_0_AMT'] = 0; $details['L_BILLINGTYPE0'] = Api::BILLINGTYPE_RECURRING_PAYMENTS; $details['L_BILLINGAGREEMENTDESCRIPTION0'] = "Suscripción por X meses"; $details['NOSHIPPING'] = 1; $storage->updateModel($details); $captureToken = $this->getTokenFactory()->createCaptureToken('paypal_es', $details, 'payment_done'); $storage->updateModel($details); return \Redirect::to($captureToken->getTargetUrl()); } public function createRecurringPayment(){ $payum_token = Input::get('payum_token'); $request = \App::make('request'); $request->attributes->set('payum_token', $payum_token); $token = ($request); //$this->invalidate($token); $agreementStatus = new GetHumanStatus($token); $payment->execute($agreementStatus); if (!$agreementStatus->isSuccess()) { header('HTTP/1.1 400 Bad Request', true, 400); exit; } $agreementDetails = $agreementStatus->getModel(); $storage = $this->getPayum()->getStorage('Payum\Core\Model\ArrayObject'); $recurringPaymentDetails = $storage->createModel(); $recurringPaymentDetails['TOKEN'] = $agreementDetails['TOKEN']; $recurringPaymentDetails['DESC'] = 'Subscribe to weather forecast for a week. It is 0.05$ per day.'; $recurringPaymentDetails['EMAIL'] = $agreementDetails['EMAIL']; $recurringPaymentDetails['AMT'] = 0.05; $recurringPaymentDetails['CURRENCYCODE'] = 'USD'; $recurringPaymentDetails['BILLINGFREQUENCY'] = 7; $recurringPaymentDetails['PROFILESTARTDATE'] = date(DATE_ATOM); $recurringPaymentDetails['BILLINGPERIOD'] = Api::BILLINGPERIOD_DAY; $payment->execute(new CreateRecurringPaymentProfile($recurringPaymentDetails)); $payment->execute(new Sync($recurringPaymentDetails)); $doneToken = $this->createToken('paypal_es', $recurringPaymentDetails, 'payment_done'); return \Redirect::to($doneToken->getTargetUrl()); }
-
Приложение/routes.php
Route::get('/payment', array('as' => 'payment', 'uses' => '[email protected]')); Route::get('/payment/done', array('as' => 'payment_done', 'uses' => '[email protected]')); Route::get('/payment/paypal/express-checkout/prepare', array('as' => 'paypal_es_prepare', 'uses' => '[email protected]')); Route::get('/payment/paypal/subscribe/prepare', array('as' => 'paypal_re_prepare', 'uses' => '[email protected]')); Route::get('/payment/paypal/subscribe/create', array('as' => 'payment_create', 'uses' => '[email protected]'));