2013-02-05 37 views
6

Tôi đang gặp phải các sự cố khi thực hiện thanh toán định kỳ paypal với quy trình API và hộp cát. Tôi thành công để tạo nút đăng ký và chuyển hướng người dùng đến trang thanh toán paypal express. Nhưng trường tùy chỉnh bị thiếu trong một số IPN được tạo bởi paypal và tôi thực sự cần trường này.Trường tùy chỉnh PAYPAL IPN thiếu

Dưới đây là các yêu cầu tôi gửi trong khi tạo ra các nút thuê bao:

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 

Sau khi người dùng đã xác nhận giao dịch, ông sẽ trở lại trang web của tôi và tôi phải xác minh các thông tin và để tạo ra định kỳ profil. Sau đây là các yêu cầu mà tôi:

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 

Sau khi làm điều này tôi nhận được những 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 
) 

Như bạn có thể nhìn thấy trong 1 IPN các tùy chỉnh lĩnh vực hiện có sẵn nhưng không phải trong một giây. Có ai biết tôi đang thiếu gì để truy xuất trường tùy chỉnh trong IPN thứ 2 không?

Trả lời

7

Yêu cầu thanh toán DoExpressCheckoutThanh toán của bạn bao gồm thông số tùy chỉnh, đó là lý do bạn nhận lại thông tin đó cho giao dịch đó. Yêu cầu CreateRecurringPaymentsProfile của bạn không có thông số tùy chỉnh được bao gồm, vì vậy nó sẽ không quay trở lại.

Điều đó nói rằng, có vẻ như thông số tùy chỉnh không có sẵn cho CRPP nên bạn cần phải lưu dữ liệu cục bộ và bao gồm ID bản ghi cục bộ của mình trong chỉ số PROFILEREFERENCE của yêu cầu CRPP. Bằng cách này nó sẽ trở lại trong IPN như rp_invoice_id như Matt Cole đề nghị, và bạn có thể kéo dữ liệu tùy chỉnh của bạn ra khỏi cơ sở dữ liệu của bạn bằng cách sử dụng ID bản ghi đó cho phù hợp.

+0

Cảm ơn bạn đã cho các mẹo, nó sẽ thực sự hữu ích. – Shaolin

4

Đặt cược tốt nhất của bạn là thêm PROFILEREFERENCE vào cuộc gọi CreateRecurringPaymentsProfile của bạn. Nó sẽ trở lại trong IPN là rp_invoice_id.

+0

Cảm ơn bạn đã trả lời nhưng câu trả lời của Andrew chi tiết hơn. – Shaolin

+0

Tài liệu này có ở đâu đó không? Tôi không thể nhìn thấy nó tại https://developer.paypal.com/docs/classic/ipn/integration-guide/IPNIntro/ – Kof

Các vấn đề liên quan