Payum に新しい支払いゲートウェイを実装しました。通知アクションの応答を変更しようとしています。デフォルトでは、payum は 204 を送信し、支払いゲートウェイは 200 を受信する必要があります。
応答を変更するにはどうすればよいですか?
namespace xxxx\Bundle\xxxxxBundle\Pago\RedsysGateway\Action;
class StoreNotificationAction extends PaymentAwareAction
{
/**
* {@inheritDoc}
*/
public function execute($request)
{
/** @var $request SecuredNotifyRequest */
if(!$this->supports($request)) {
throw RequestNotSupportedException::createActionNotSupported($this, $request);
}
/** @var NotifyRequest $request */
$notification = new NotificationDetails;
$notification->setPaymentName($request->getToken()->getPaymentName());
//save notification
}
/**
* {@inheritDoc}
*/
public function supports($request)
{
return
$request instanceof SecuredNotifyRequest &&
$request->getModel() instanceof Pago
;
}
}
これは Payum NotifyController です。
namespace Payum\Bundle\PayumBundle\Controller;
use Payum\Core\Request\NotifyRequest;
use Payum\Core\Request\SecuredNotifyRequest;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class NotifyController extends PayumController
{
public function doUnsafeAction(Request $request)
{
$payment = $this->getPayum()->getPayment($request->get('payment_name'));
$payment->execute(new NotifyRequest(array_replace(
$request->query->all(),
$request->request->all()
)));
return new Response('', 204);
}
public function doAction(Request $request)
{
$token = $this->getHttpRequestVerifier()->verify($request);
$payment = $this->getPayum()->getPayment($token->getPaymentName());
$payment->execute(new SecuredNotifyRequest(
array_replace($request->query->all(), $request->request->all()),
$token
));
return new Response('', 204);
}
}