2013-02-05 26 views
6

API süreci ve sanal alanla birlikte tekrarlanan ödemenin uygulanmasında sıkıntı yaşıyorum. Abonelik düğmesini oluşturmayı ve kullanıcıyı PayPal Express ödeme sayfasına yönlendirmeyi başarabiliyorum. Ancak, paypal tarafından oluşturulan bazı IPN'de özel alan eksik ve gerçekten bu alana ihtiyacım var. İşte PAYPAL IPN özel alanı eksik

abonelik düğmesini üretirken gönderdiğim isteklerdir: kullanıcı işlemi onaylamıştır sonra

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 

, geri siteme geliyor ve bilgileri doğrulamak ve yinelenen yaratmak zorunda profil. İşte yapmak isteklerdir:

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 

Bunu yaptıktan sonra ben bu IPN alırsınız: Eğer 1 IPN görebileceğiniz gibi

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 
) 

alan özel ancak ikinci birinde mevcuttur. 2. IPN'deki özel alanı almak için ne kaçırdığımı bilen var mı?

cevap

7

DoExpressCheckoutPayment isteğiniz, bu işlem için geri aldığınız nedeni olan özel parametreyi içerir. CreateRecurringPaymentsProfile isteğinizin özel bir parametresi yoktur, bu nedenle geri gelmez.

Bu, özel parametrenin CRPP için kullanılabilir olduğundan emin olmamanız için verilerinizi yerel olarak kaydetmeniz ve yerel kayıt kimliğinizi CRPP isteğinizin PROFILEREFERENCE parametresine dahil etmeniz gerekir. Bu şekilde, Matt Cole'un önerdiği gibi rp_invoice_id gibi IPN'de geri gelecektir ve özel verilerinizi bu kayıt kimliğini kullanarak veritabanınızdan geri çekebilirsiniz.

+0

adresinden göremiyorum, ipuçları için teşekkürler, gerçekten faydalı olacaktır. – Shaolin

4

En iyi yol, CreateRecurringPaymentsProfile çağrınıza PROFILEREFERENCE eklemek. IPN'de rp_invoice_id olarak geri gelecektir.

+0

Cevabınız için teşekkür ederiz ama Andrew'un cevabı daha ayrıntılı. – Shaolin

+0

Bu bir yerde belgelenmiş mi? Bunu https://developer.paypal.com/docs/classic/ipn/integration-guide/IPNIntro/ – Kof

İlgili konular