0

私は Symfony を使用しており、 PayumBundleを使用して支払いの詳細を PayPal に送信しようとしています。 PayumBundle を構成し、paypal にリダイレクトされるまで動作させましたが、支払いの詳細が送信されていないため、オンラインで検索し、SO でこの質問に遭遇しました。これは、私が見ている正確な空白の情報画面です。

回答が指しているドキュメントを見ると、次のコードを思いつきましたが、次のprepareアクションを呼び出しているルートにアクセスしようとすると. エラーが発生しました

public function prepareAction(Request $request)
{
    $paymentName = 'paypal';

    $storage = $this->getPayum()->getStorage('ClickTeck\featuresBundle\Entity\Orders');

    /** @var \ClickTeck\featuresBundle\Entity\Orders $paymentDetails */
    $paymentDetails = $storage->create();
    $paymentDetails['PAYMENTREQUEST_0_CURRENCYCODE'] = 'USD';
    $paymentDetails['PAYMENTREQUEST_0_AMT'] = 1500;
    $storage->update($paymentDetails);

    $notifyToken = $this->getTokenFactory()->createNotifyToken($paymentName, $paymentDetails);
    $captureToken = $this->getTokenFactory()->createCaptureToken(
        $paymentName,
        $paymentDetails,
        'payment_done'
    );

    $paymentDetails['PAYMENTREQUEST_0_NOTIFYURL'] = $notifyToken->getTargetUrl();
    $paymentDetails['INVNUM'] = $paymentDetails->getId();
    $storage->update($paymentDetails);
    return $this->redirect($captureToken->getTargetUrl());

}

Error: Cannot use object of type ClickTeck\featuresBundle\Entity\Orders as array

次に、次を使用してみましたが、ペイパル側で別のエラーが発生します

$paymentDetails->PAYMENTREQUEST_0_CURRENCYCODE = 'USD';
$paymentDetails->PAYMENTREQUEST_0_AMT = 1500;

This transaction cannot be processed. The amount to be charged is zero

これは私のOrderエンティティがどのように見えるかです

<?php

namespace ClickTeck\featuresBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Payum\Core\Model\Order as BaseOrder;


/**
 * Orders
 */
class Orders extends BaseOrder
{
    /**
     * @var integer
     */
    protected $id;


    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }
}

誰かがこれが何が起こっているのかを知るのを手伝ってもらえますか? PayumBundleを機能させようとして2日が経ちました。

これで何か助けていただければ幸いです。支払いの詳細を PayPal に送信するにはどうすればよいですか?

4

2 に答える 2

0

少しの理論:

Payum のさまざまな使用方法を台無しにしました。最初のものは完全にカスタムです (つまり、支払い固有の形式)。この場合、\ArrayAccess インターフェイスを実装するものは何でも使用できます。フィールド名とその値は、Paypal ドキュメントと同じように見えます。

もう 1 つの方法は、最初のレイヤーの上に薄いレイヤーを重ねて統合を追加する方法です。ここでは Order モデルを使用し、利用可能なセッターを使用してそれを埋める必要があります。setDetails メソッドを使用して特定のフィールドを追加することもできます。

3 番目の方法があります。独自のモデル (Order\Invoice\Payment という名前を付けます) を使用し、Payum 内での統合を提供します。

今答え:

この\ClickTeck\featuresBundle\Entity\Ordersモデルはどのように見えますか?OrderInterface を実装するか、Payum から ArrayObject を拡張しますか? 私は最初のものを推測します。完全なカスタム ソリューションを使用する場合は、ArrayObject を拡張して配列として使用します。統一されたバリアントが必要な場合 (将来的に他の支払いに移行する場合)、Order を使用します。

于 2015-01-27T21:16:22.657 に答える
0

リクエストに応じて、小枝テンプレートに [今すぐ購入] ボタンを作成する簡単な例を次に示します。

{# buynow.html.twig #}
<script 
data-tax="0" 
data-shipping="0" 
data-amount="{{ total }}"
data-quantity="1" 
data-name="Player Registration {{ playDate ~ ' ' ~ player.nameLastPlayer ~ ', ' ~ player.nameFirstPlayer }} {{ player.initialPlayer }}"
data-button="buynow" 
data-custom="My custom information"
src="{{  asset('bundles/ceradteam/js/paypal-button.min.js') }}?merchant=MYMERCHANTID" 
></script>

コントローラーは合計金額を渡します。マーチャント ID を設定する必要があります。

paypal-button.min.js は、paypal 開発サイトによって生成された Java スクリプト ファイルです。私が自分のものを作ってからしばらく経ちましたが、それは簡単なはずです。そして、それは簡単な支払いに必要なすべてです。

ペイパルでできることはもっと高度なものがたくさんあることに注意してください。

于 2015-01-27T15:11:02.780 に答える