不管是用osc 或者zencart 等购物系统,在采用paypal支付方式支付时 ,都涉及到paypal订单的状态问题 。
比如 在第三方paypal官网 对某订单 付款了 , 那么怎么把这个订单的状态及时的更新到你的网店的订单呢 ? 否则你的网店里的订单状态是改变不了的 。 我们所采用的技术 是 paypal官网提供的ipn 技术 .
所谓paypal ipn,就是Paypal开发的一种能主动通知第三方卖家系统交易状态的一种机制。IPN的原理很简单,就是当产生了一个交易之后,交易状态发生变化时,如用户已经付款、或者退款、撤销时,Paypal利用常用的HTTP POST方式,将交易的一些变量提交给网站的某个页面。
一下为技术点:
1. 在paypal官网里 配置下 ipn 放回的地址 .
2. 我们看下 ipn 会返回哪些数据 ,然后根据返回的数据 进行订单状态的相应处理 .
一下为 返回的数据:
mc_gross=20.00&invoice=708&protection_eligibility=Ineligible&payer_id=RUF6JZFH652AA&tax=0.00&payment_date=18:54:28 May 30, 2011 PDT&payment_status=Completed&charset=gb2312&first_name=ROY&mc_fee=1.08¬ify_version=3.1&custom=360&payer_status=verified&business=商家账户&quantity=1&verify_sign=AS8nyKciyC7Vbsx.M9CoNj8dHpdWADNqaQkESMzLEIB98XRH.IKy8Lc9&
payer_email=ry_mangal@yahoo.com&txn_id=2GM1127581146043E&
payment_type=instant&last_name=MANGAL&
receiver_email=商家账号&payment_fee=1.08&receiver_id=H9UXBQ6AYAZGY&
txn_type=web_accept&item_name=eglobalshare.com&
mc_currency=USD&item_number=&residence_country=GY&handling_amount=0.00&
transaction_subject=360&payment_gross=20.00&shipping=0.00&
ipn_track_id=0zSa505y0kxbeiT-wCZmBQ
其中 ‘invoice=xx’ 这个xx 就是你网店订单的id , 有了这个id ,就可以把 paypal官网的订单状态和网店订单的状态 实现 实时更新。
技术参考:
1 . http://www.paypal-china.org/wangzhai/197.html
2. https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_admin_IPNIntro