2012-01-25 10 views
4

サブスクリプションまたは1回払いだったのであれば、私は私の支払いフローでPayPalを統合した、これは何が起こるかであることを知っていることはありません:支払作品が、ユーザーはそれがペイパルのページ

  • ユーザーに来ますページ。支払いボタンをクリックします
  • ユーザーは最初にSetExpressCheckoutを呼び出して、Paypalにリダイレクトされるページにリダイレクトされます。 (彼は一度に77ドル、その後毎月1年間同じ金額を請求されるので、最初の金額は設定せず、代わりに直接差し引く)
  • 戻ったら、彼は確認をクリックしますボタンをクリックし、DoExpressCheckoutを使用して1回の支払いを差し引くと、請求プロファイルが作成されます。

すべて正常です。私は毎月支払いを受ける。ユーザーは開始時に2回課金されません。

問題:ユーザーがペイパルにリダイレクトされたとき、彼は私が設定したITEM NAMEDESCRIPTIONを見ています。私。 PayPalからの説明では、支払いが簡単な購読ボタンを使用する場合のように、取引が1回であるかサブスクリプションであるかはわかりません。 Paypalには金額だけが記載されていますが、取引の種類は記載されていません。

NVPEncoder encoder = new NVPEncoder(); 

encoder.add("METHOD","SetExpressCheckout"); 
encoder.add("RETURNURL",returnURL); 
encoder.add("CANCELURL",cancelURL);    
encoder.add("CURRENCYCODE","USD"); 
encoder.add("AMT",amt); 
encoder.add("BILLINGPERIOD", "Month"); 
encoder.add("BILLINGFREQUENCY", "1"); 
encoder.add("PROFILESTARTDATE",dateFormatGmt.format(new Date())); 
encoder.add("L_BILLINGTYPE0", "RecurringPayments"); 
encoder.add("L_BILLINGAGREEMENTDESCRIPTION0",package_name); 
encoder.add("L_NAME0",package_name); 
encoder.add("L_AMT0",amt); 
encoder.add("L_QTY0","1"); 

String strNVPRequest = encoder.encode(); 
String ppresponse = (String) caller.call(strNVPRequest); 
NVPDecoder resultValues = new NVPDecoder(); 
resultValues.decode(ppresponse); 
String strAck = resultValues.get("ACK"); 
if (strAck !=null && !(strAck.equals("Success") || 
      strAck.equals("SuccessWithWarning"))) { 
    response.sendRedirect("APIError.jsp"); 
} else { 
    response.sendRedirect(redirectUrl); 
} 
+0

あなたが持っているかの例を提供する必要がありますあなたのフォームを実装しました。私はあなたがすべてのドキュメントを読んだこと、そしてあなたが正しいcmd値を渡していることを確認します。 https://www.paypal.com/eBay/cgi-bin/webscr?cmd=p/pdn/tech-overview-subscriptions-outside –

+0

コードを追加しました。 私はここでウェブサイト決済プロを使用しています。私はPaypalにPOSTデータを送信してフォームを実装しようとしませんでした。しかし今、私はそれを考えるようになりました。それはシームレスに機能し、メンバーシップウェブサイト上で実装する前に知っておくべきことがありますか? –

答えて

4

L_BILLINGTYPE0=RecurringPaymentsを含めていますか?
これは、PayPalのリンク先ページの言い回しを変更するものです。

要約すると、以下のパラメータ(少なくとも)で、次のAPIコールを呼び出す:

SetExpressCheckout

$nvps = array(); 
$nvps["VERSION"] = "80.0"; 

$nvps["METHOD"] = "SetExpressCheckout"; 

$nvps["PAYMENTREQUEST_0_PAYMENTACTION"] = "Sale"; 
$nvps["PAYMENTREQUEST_0_AMT"] = "1.00"; 
$nvps["PAYMENTREQUEST_0_CURRENCYCODE"] = "GBP"; 
$nvps["PAYMENTREQUEST_0_ITEMAMT"] = "1.00"; 

$nvps["L_BILLINGTYPE0"] = 'RecurringPayments'; 
$nvps["L_BILLINGAGREEMENTDESCRIPTION0"] = "the subscription"; 

$nvps["L_PAYMENTREQUEST_0_NUMBER0"] = 1; 
$nvps["L_PAYMENTREQUEST_0_NAME0"]= "subscription"; 
$nvps["L_PAYMENTREQUEST_0_AMT0"]= 1.00; 
$nvps["L_PAYMENTREQUEST_0_QTY0"]= 1; 

そしてCreateRecurringPaymentsProfileで:

$nvps["PROFILESTARTDATE"] = "2011-07-08T17:40:00Z"; 
$nvps["BILLINGPERIOD"] = "Month"; 
$nvps["BILLINGFREQUENCY"] = "1"; 
$nvps["AMT"] = "1.00"; 
$nvps["CURRENCYCODE"] = "GBP"; 
$nvps["DESC"] = "the subscription"; 
+0

ここに自分のコードを掲載しました。 Javaになっていますが、大きな違いはありません。あなたが私のコードよりNVPを増やしているのが分かります。それは私が使用しているPaypal SDKのバージョンのためですか? –

+0

また、あなたのポストに手動でNVPを送ろうとしましたが、10001の内部エラーが発生しました(「タイムアウト処理要求」) –

関連する問題