0

カスタム ショッピング カートを PayPal に正常に送信しました。注文が適切に処理され、支払いが受信されると、構成で指定した URL にデータが送信されます。コードは、次のライブラリに基づいています: http://www.phpfour.com/blog/2009/02/php-payment-gateway-library-for-paypal-authorizenet-and-2checkout/

それで、データを PayPal に送り返すことで IPN の検証に成功しています。これはすべて素晴らしいことです。これが私のジレンマです。IPN が確認している注文をどのように知ることができますか?

私は PayPal のショッピング カートを使用しておらず、独自のショッピング カートを使用しています。データベースには独自のカート ID があり、そのカートの IPN を受け取ったら、カートを「閉じて」注文として保存し、後で検索できるようにしたいと考えています。

カートに入力する PayPal へのリダイレクトとともに、追加のカスタム フィールドを渡そうとしましたが、その値が IPN で返されません。x.com のドキュメントは単純に不足しているため、そこには何の助けも見つかりませんでした。

PayPal と IPN の経験がある人はいますか? 必ずしも PHP である必要はありません -- 私はコードを解釈できます -- しかし、注文で値を PayPal に送信し、その値を IPN で返す方法があれば、それは素晴らしいことです!

これが PayPal の API では不可能な場合 (信じがたいことですが)、これを処理する方法について他に何か提案はありますか?

4

4 に答える 4

1

(これは、他の API では異なる場合があります)。

私の経験では C# 経由のエクスプレス チェックアウトを使用していましたが、プロセスは PHP でも同じである必要があります。ユーザーを PayPal にリダイレクトする直前に名前と値のペア (NVP) インターフェースを使用している場合は、PayPal サイトにアクセスしてリダイレクト URL を取得します。応答の一部として、彼らはあなたにトークンを返します。このトークンを注文とともに保存します。IPN ポストバックが発生すると、元の注文を検索できる同じトークンが返されます。

プロセス フローは次のようになります (「あなた」はあなたのサイトです)。

  • ユーザーがカートに記入し、ボタン/リンクをクリックしてチェックアウトする
  • リクエストがサイトに送信されます
  • あなたのサイトがリクエストを受け取り、PayPal にデータを送信します
  • トークンを含む PayPal からの最初の応答を受け取ります
  • このトークンは、このユーザーのショッピング カートと共に保存します。
  • PayPal から返されたリンクにユーザーをリダイレクトします
  • ユーザーは PayPal にリダイレクトされ、支払い情報を入力します
  • 支払い情報は PayPal によって検証されます
  • ユーザーはサイトにリダイレクトされます
  • PayPal は IPN 応答をサイトに送り返します
  • レスポンスに含まれるトークンを取得します
  • 以前に保存したトークンを検索して、ショッピング カートを見つけます (値は同じです)。
  • 最初の注文/ショッピング カートを閉じます。

PHP SDKを試してみることをお勧めします。Name -Value Pair Interface まで下にスクロールします。

于 2010-07-28T01:51:35.597 に答える
1

これが元の投稿者に役立つかどうかは非常に疑わしいですが、PayPal は、OrderID を投稿して IPN 経由で返信できるようにするオプション「請求書」を追加するか、最終的に文書化しました。私は現在これを使用していますが、期待どおりに機能しているようです。

詳細については、ウェブ ペイメント標準統合ガイド (PDF)を参照してください: 付録 A、表 A.4

于 2012-06-18T17:24:41.240 に答える
1

任意のデータを保持できる長さ 255 文字のカスタムパススルー変数を作成して投稿できます。詳しくは、公式 Paypal IPN ガイドの 44 ページをご覧ください。

于 2012-07-28T23:26:41.457 に答える
1

これが良いアイデアかどうかはわかりませんが、いくつかの異なるオプションがあります。

A: アイテム 1 に on1 / os1 の最初のセットを使用し、それに注文 ID を追加します。

B: カスタム フィールドに何が入っているかわかりませんが、ここで orderidhere41|otheritems のようにしてから、| で爆発させることでこれを解析できます。それらを分離するために。

Paypal はこれを制限しており、その理由はわかりませんが、どちらも機能するはずです。on / osとして実行すると、ユーザーのpaypalレシートに表示されるため、これが私の好みの方法です。

他の誰かがより良い解決策を持っているなら、私もそれに興味があります!

編集:

on1 os1 を明確にします。これらは、サイズ/色などに一般的に使用される「オプション」です。詳細については、option_name1 option_selection(sp) の下のIPN PDT Paypal 変数を参照してください。もちろん、名前は「注文ID」になるタイトルであり、OSは実際のIDになります。

編集:

そのドキュメント$my2CO->addField('cart_order_id', rand(1, 100));に目を通して、自分のカート注文 ID を入力します。それが正しいフィールドである必要があります。混乱させて申し訳ありません :)

編集:

最後に、「カスタム」と呼ばれるペイパル IPN 用のカスタム フィールドがあり、これにデータを追加すると通過します。これにより、オーダー ID が送受信されます。双方でカスタムと呼ばなければなりません。

于 2010-07-28T00:58:44.267 に答える