Payum 1.0、Payum Bundle 1.0、および omnipay-skrill バンドルを使用した Omnipay ブリッジを使用してアプリに支払いを実装しようとしています。skrill はそのままではサポートされていません。
payum.yml
payum:
security:
token_storage:
XXX\PaymentBundle\Entity\PaymentToken: { doctrine: orm }
storages:
XXX\PaymentBundle\Entity\Payment: { doctrine: orm }
gateways:
skrill:
omnipay:
type: Skrill
options:
email: me@me.net
notifyUrl: /payment/skrill
testMode: true
これは私のコントローラの準備アクションです:
public function prepareAction()
{
$paymentName = 'skrill';
$storage = $this->get('payum')->getStorage('XXX\PaymentBundle\Entity\Payment');
$payment = $storage->create();
$payment->setNumber(uniqid($this->container->getParameter('shoppingCart')));
$payment->setCurrencyCode('EUR');
$payment->setTotalAmount($this->container->getParameter('price_of_xxx'));
$payment->setDescription('desc');
$payment->setClientId($this->getUser()->getId());
$payment->setClientEmail($this->getUser()->getEmail());
$payment->setLanguage('EN');
$storage->update($payment);
$captureToken = $this->get('payum.security.token_factory')->createCaptureToken(
$paymentName,
$payment,
'xxx_buy_premium_done' // the route to redirect after capture
);
return $this->redirect($captureToken->getTargetUrl());
}
そのため、準備アクションに関連付けられたリンクにアクセスすると、Payum クレジット カード フォームが表示されます。しかし、応答としてすべてのデータを入力すると、言語パラメーターを指定する必要があるというエラーが表示されます。言語パラメーターを構成ファイルに入れ、支払い言語フィールドを設定しようとしたので、なぜそれが起こっているのかわかりません。非表示フィールドとしてフォームデータで送信する必要があると思います。
パラメータを使用してユーザーをhttps://pay.skrill.com/app/?sid=にリダイレクト し、Skrill サーバーから captureDoneAction への応答を取得することは可能ですか?