2011-11-02 4 views
12

非常にシンプルなpaypal-backedショッピングカートを構築しようとしているので、ユーザーは複数のアイテムを購入することができます。私はpaypalがすべてのお支払いの詳細を処理するようにします。私は注文確認をしたくない。私は手動でpaypalの注文確認を確認します。DoExpressCheckoutPaymentはなぜPaypalに必要ですか?

は、最初に私はPayPalとPayPalがそこからそれを処理できるように掲示するフォームを作成する簡単なように見えたので、「ウェブペイメントスタンダード」を使用していました。しかし、「ウェブペイメントスタンダード」のボタン/フォームは複数のアイテムの提出をサポートしていないため、これは機能しませんでした。私はあらゆる種類のキー/値を自分のフォームで試してみましたが、それは決して働きませんでした。

は、その後、私は指示hereを見つけを使用してエクスプレスチェックアウトを試してみました。それは大部分は機能しましたが、私が理解しているように、SetExpressCheckoutを送信した後、paypalからのリクエストをリスンし、DoExpressCheckoutPaymentを実行してトランザクションを完了する必要があります。 SO reference

私はこれは、少し面倒を見つける私のサーバーは、ペイパルからのリクエストを受信できなかったと私はDoExpressCheckoutPaymentを送信しない場合はどのような理由は?だから、顧客は注文を提出し終えたが、注文は決して受け取られなかったと思う。

誰もがこの「確認」ステップをスキップする方法を知っていますか?私はそれが不必要で、ペイパルがそれを必要としているかどうかはわかりません。エクスプレスチェックアウトとウェブペイメントスタンダードは根本的に異なる製品であるためだ

+0

技術的には、「DoExpressCheckoutPayment」は、エクスプレスチェックアウトおよびウェブペイメントプロAPI用にのみ必要です。 –

答えて

39

は、エクスプレスチェックアウトを使用するには、SetExpressCheckoutのAPIを呼び出します。 APIコールでは、製品、金額、およびRETURNURLの詳細を指定します。
このデータをPayPalのAPIエンドポイントに送信すると、代わってトークンを受け取ります。 あなたは買い手をリダイレクトし、次のURLにトークンを追加します:買い手が購入することに合意した https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-XXXXXXX

たら、彼が戻ってあなたがにreturnurlで指定されたURLにリダイレクトされます。
注文確認が表示され、GetExpressCheckoutDetails API **を呼び出す必要があります。
GetExpressCheckoutDetailsを呼び出すときに、トークンを指定します。 GetExpressCheckoutDetails APIレスポンスには、PayerIDがあります。

これで、DoExpressCheckoutPaymentを呼び出し、購入者に請求する準備ができました。 DoExpressCheckoutPaymentを呼び出すときは、トークンとpayerIDの両方を含めるようにしてください。

注:すぐGetExpressCheckoutDetailsおよびDoExpressCheckoutPaymentを呼び出して、すぐに買い手を充電したい場合は、https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-XXXXXXX&useraction=commitに買い手をリダイレクトします。 useraction=commitは、PayPalの[お支払いの確認]ページの[続行]ボタンを[今支払う]ボタンに変更します。

-

エクスプレスチェックアウトし、ウェブペイメントスタンダードの間に、このような大きな違いがあります理由は、ウェブペイメントスタンダードは、ドロップインPayPalはトランザクション全体の流れを扱うワーキングソリューションであることが意図されていることです。エクスプレスチェックアウトは、Webサイト/ショッピングカートの既存のチェックアウトフローと深く統合できる、より柔軟なソリューションです。

あなたの使用例については、 PayPalの「カートアップロード」ボタンを使用して表示します。 あなたが充電しようとしている金額はHTMLではっきり見えるようになりますよう、これは、デフォルトでは安全ではないこと、しかし、例えばhttps://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_html_cart_upload

<form action="https://www.paypal.com/cgi-bin/webscr" method="post"> 
<input type="hidden" name="cmd" value="_cart"> 
<input type="hidden" name="upload" value="1"> 
<input type="hidden" name="business" value="[email protected]"> 
<input type="hidden" name="item_name_1" value="Item Name 1"> 
<input type="hidden" name="amount_1" value="1.00"> 
<input type="hidden" name="item_name_2" value="Item Name 2"> 
<input type="hidden" name="amount_2" value="2.00"> 
<input type="submit" value="PayPal"> 
</form> 

注を参照してください。

** PayerIDはRETURNURLのGETにも追加されています。あなたがしたい場合は、GetExpressCheckoutDetailsを呼び出すことをスキップすることができます。

+0

詳細な対応をありがとうございます。しかし、私は決してWeb Payments Standardをエクスプレスチェックアウトとみなしませんでした。もし私がしたら、それは間違いでしょう。私の主な質問は、なぜPayPalがDoExpressCheckoutPaymentを必要とするのかです。ユーザーがすでに支払いを完了しているので、不要で誤解を招くようです。しかし、あなたのサンプルのウェブペイメントスタンダードフォームが複数の項目に対応していました。これは私が本当に始めたかったものです(ただし、まだこの質問には答えていません)。もう一度。ありがとうございました! – vinhboy

+3

あなたは知っていませんでした。なぜDoExpressCheckoutPaymentが必要なのかという質問に答えます。 :-)それは獣の性質です。エクスプレスチェックアウトは、カートと注文確認ページの間にある、支払いの解決策として使用されます。したがって、支払いを確定するためにDoExpressCheckoutPaymentが必要な理由これにより、購入者がPayPalのWebサイトで即座に請求されるのではなく、いつ、どのように、どこで、購入者に請求するかについて、より柔軟にマーチャントが可能になります。買い手が*支払いに同意した後、実際の支払いは完了しません。これは、DoECが呼ばれた後にのみ確定されます。 – Robert

+4

useraction = commitの+1 – Andreas

3

このサイトでは、DoExpressCheckoutPaymentの操作は、となり、PayPal Express Checkout APIにはが必要です。

PayPalで支払いを処理する必要はありませんが、にはに2回目の操作が必要なシナリオがあります。このようなシナリオの例は、ユーザー(サイトの顧客)がPayPal支払い確認中に配送先住所を選択している場合です。配送業者によっては、の後に実際に出荷される金額を計算する必要があります。がPayPalの確認ページで配送先住所を選択した後です。

関連する問題