6

API プロセスとサンドボックスを使用してペイパルの定期支払いを実装する際に問題が発生しています。サブスクリプション ボタンを作成し、ユーザーをペイパル エクスプレス チェックアウト ページにリダイレクトすることに成功しました。しかし、paypal によって生成された一部の IPN でカスタム フィールドが欠落しており、このフィールドが本当に必要です。

購読ボタンの生成中に送信するリクエストは次のとおりです。

METHOD=SetExpressCheckout
&VERSION=94.0
&PWD=123456
&USER=myEmail@biz.com
&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
&USER=myEmail@biz.com
&SIGNATURE=mySignature
&TOKEN=theToken


METHOD=CreateRecurringPaymentsProfile
&VERSION=94.0
&PWD=123456
&USER=myEmail@biz.com
&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
&USER=myEmail@biz.com
&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 を受け取ります。

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] => myEmail@per.com
    [txn_id] => 6XC11065S3796804E
    [quantity] => 1
    [receiver_email] => myEmail@biz.com
    [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] => myEmail@per.com
    [first_name] => buyer
    [receiver_email] => myEmail@biz.com
    [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
)

1 番目の IPN でわかるように、カスタム フィールドは使用できますが、2 番目の IPN では使用できません。2番目のIPNでカスタムフィールドを取得するために何が欠けているか知っている人はいますか?

4

2 に答える 2

7

DoExpressCheckoutPayment リクエストにはカスタム パラメータが含まれているため、そのトランザクションでそれを取得しています。CreateRecurringPaymentsProfile リクエストにはカスタム パラメータが含まれていないため、返されません。

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

于 2013-02-05T21:14:43.520 に答える
4

最善の策はPROFILEREFERENCE、CreateRecurringPaymentsProfile 呼び出しに追加することです。としてIPNに戻ってきますrp_invoice_id

于 2013-02-05T19:08:29.353 に答える