2013-02-05 17 views
6

私は、APIプロセスとサンドボックスでpaypal定期支払いを実装する際に問題が発生しています。 購読ボタンを作成して、ユーザーをpaypal express checkoutページにリダイレクトするのに成功しました。 しかし、paypalによって生成されたIPNにカスタムフィールドがないので、このフィールドが本当に必要です。ここでPAYPAL IPNカスタムフィールドがありません

は、サブスクリプションのボタンを生成しながら、私が送るリクエストです:

METHOD=SetExpressCheckout 
&VERSION=94.0 
&PWD=123456 
&[email protected] 
&SIGNATURE=mySignature 
&PAYMENTREQUEST_0_AMT=5.00 
&PAYMENTREQUEST_0_PAYMENTACTION=Sale 
&PAYMENTREQUEST_0_CURRENCYCODE=EUR 
&RETURNURL=http%3A%2F%2Fwww.myWebSite.com?ok 
&CANCELURL=http%3A%2F%2Fwww.myWebSite.com?ko 
&L_BILLINGTYPE0=RecurringPayments 
&L_BILLINGAGREEMENTDESCRIPTION0=test+paypal 
&REQCONFIRMSHIPPING=0 
&NOSHIPPING=1 
&L_PAYMENTREQUEST_0_ITEMCATEGORY0=Digital 
&L_PAYMENTREQUEST_0_NAME0=test+paypal 
&L_PAYMENTREQUEST_0_AMT0=5.00 
&L_PAYMENTREQUEST_0_QTY0=1 
&PAYMENTREQUEST_0_CUSTOM=custom_var1%3Dvalue1%7Ccustom_var2%3Dvalue2 

ユーザーがトランザクションを確認した後、彼は私のウェブサイトに戻って来ていると私は情報を確認し、定期的に作成する必要がありますプロフィール。 は、ここで私が何を要求している。

METHOD=GetExpressCheckoutDetails 
&VERSION=94.0 
&PWD=123456 
&[email protected] 
&SIGNATURE=mySignature 
&TOKEN=theToken 


METHOD=CreateRecurringPaymentsProfile 
&VERSION=94.0 
&PWD=123456 
&[email protected] 
&SIGNATURE=mySignature 
&TOKEN=theToken 
&AMT=5.00 
&CURRENCYCODE=EUR 
&PROFILESTARTDATE=2013-02-04T15%3A16%3A24%2B01%3A00 
&BILLINGPERIOD=Day 
&BILLINGFREQUENCY=1 
&DESC=test+paypal 


METHOD=DoExpressCheckoutPayment 
&VERSION=94.0 
&PWD=123456 
&[email protected] 
&SIGNATURE=mySignature 
&TOKEN=theToken 
&PAYERID=JZUVX4TAHRHRU 
&PAYMENTREQUEST_0_PAYMENTACTION=Sale 
&PAYMENTREQUEST_0_AMT=5.00 
&PAYMENTREQUEST_0_CURRENCYCODE=EUR 
&PAYMENTREQUEST_0_NOTIFYURL=http%3A%2F%2Fwww.myWebSite.com?notify 
&PAYMENTREQUEST_0_CUSTOM=custom_var1%3Dvalue1%7Ccustom_var2%3Dvalue2 

はこれをやった後、私はこれらのIPNを受け取る:あなたが第一IPNで見ることができるように

Array 
(
    [transaction_subject] => test paypal 
    [payment_date] => 06:01:52 Feb 04, 2013 PST 
    [txn_type] => express_checkout 
    [last_name] => numerik 
    [residence_country] => FR 
    [item_name] => 
    [payment_gross] => 
    [mc_currency] => EUR 
    [payment_type] => instant 
    [protection_eligibility] => Ineligible 
    [verify_sign] => myVerifySign 
    [payer_status] => verified 
    [test_ipn] => 1 
    [tax] => 0.00 
    [payer_email] => [email protected] 
    [txn_id] => 6XC11065S3796804E 
    [quantity] => 1 
    [receiver_email] => [email protected] 
    [first_name] => buyer 
    [payer_id] => myPayerId 
    [receiver_id] => myReceiverId 
    [item_number] => 
    [handling_amount] => 0.00 
    [payment_status] => Completed 
    [payment_fee] => 
    [mc_fee] => 0.42 
    [shipping] => 0.00 
    [mc_gross] => 5.00 
    [custom] => custom_var1=value1|custom_var2=value2 
    [charset] => windows-1252 
    [notify_version] => 3.7 
    [ipn_track_id] => ab76ea3421261 
) 

Array 
(
    [payment_cycle] => Daily 
    [txn_type] => recurring_payment_profile_created 
    [last_name] => numerik 
    [next_payment_date] => 02:00:00 Feb 04, 2013 PST 
    [residence_country] => FR 
    [initial_payment_amount] => 0.00 
    [currency_code] => EUR 
    [time_created] => 06:01:47 Feb 04, 2013 PST 
    [verify_sign] => myVerifySign 
    [period_type] => Regular 
    [payer_status] => verified 
    [test_ipn] => 1 
    [tax] => 0.00 
    [payer_email] => [email protected] 
    [first_name] => buyer 
    [receiver_email] => [email protected] 
    [payer_id] => myPayerId 
    [product_type] => 1 
    [shipping] => 0.00 
    [amount_per_cycle] => 5.00 
    [profile_status] => Active 
    [charset] => windows-1252 
    [notify_version] => 3.7 
    [amount] => 5.00 
    [outstanding_balance] => 0.00 
    [recurring_payment_id] => myRecurringPaymentId 
    [product_name] => test paypal 
    [ipn_track_id] => a8adfdf8b61d3 
) 

フィールドのカスタムではなく、二番目で利用可能です。 誰かが2番目のIPNでカスタムフィールドを取得していないことを知っていますか?

答えて

7

あなたのDoExpressCheckoutPaymentリクエストにはカスタムパラメータが含まれています。なぜなら、そのトランザクションのために戻す理由があります。 CreateRecurringPaymentsProfileリクエストにカスタムパラメータが含まれていないため、返されません。

CRPPでカスタムパラメータを使用できるようには見えないため、データをローカルに保存し、CRPPリクエストのPROFILEREFERENCEパラメータにローカルレコードIDを含める必要があります。こうすることで、Matt Coleの提案のようにrp_invoice_idとしてIPNに戻ってくるので、そのレコードIDを使ってカスタムデータをデータベースから取り出すことができます。

+0

ヒントをありがとう、それは本当に便利です。 – Shaolin

4

あなたの最善の策は、CreateRecurringPaymentsProfile呼び出しにPROFILEREFERENCEを追加することです。それはrp_invoice_idとしてIPNに戻ってくるでしょう。

+0

ご返信ありがとうございますが、Andrewの答えはより詳細です。 – Shaolin

+0

これはどこかに記載されていますか? https://developer.paypal.com/docs/classic/ipn/integration-guide/IPNIntro/ – Kof

関連する問題