新手问题 paypal ipn 上对于时间的一些不解

luliangshu · 2014年03月28日 · 最后由 luliangshu 回复于 2014年03月28日 · 2351 次阅读

我创建了循环付款的订单。收到了来自 ipn 循环付款发来的消息

{
    "mc_gross"=>"6.00",
    "outstanding_balance"=>"0.00",
    "period_type"=>" Regular",
    "next_payment_date"=>"03:00:00 Mar 28, 2014 PDT",
    "protection_eligibility"=>"Ineligible",
    "payment_cycle"=>"Daily",
    "tax"=>"0.00",
    "payer_id"=>"G7AU8FCKFQ",
    "payment_date"=>"17:18:18 Mar 27, 2014 PDT",
    "payment_status"=>"Completed",
    "product_name"=>"Starter plan",
    "charset"=>"windows-1252",
    "recurring_payment_id"=>"I-WEKAKGL3N",
    "first_name"=>"lu",
    "mc_fee"=>"0.47",
    "notify_version"=>"3.7",
    "amount_per_cycle"=>"6.00",
    "payer_status"=>"verified",
    "currency_code"=>"USD",
    "business"=>"[email protected]",
    "verify_sign"=>"AW.kZ9YjAiyuq3Pczmst2vxsrYpNRu47sQsaB5b2sGM",
    "payer_email"=>"[email protected]",
    "initial_payment_amount"=>"0.00",
    "profile_status"=>"Active",
    "amount"=>"6.00",
    "txn_id"=>"2TS06179390S",
    "payment_type"=>"instant",
    "last_name"=>"lu",
    "receiver_email"=>"[email protected]",
    "payment_fee"=>"0.47",
    "receiver_id"=>"TD36RLYVJ",
    "txn_type"=>"recurring_payment",
    "mc_currency"=>"USD",
    "residence_country"=>"US",
    "test_ipn"=>"1",
    "transaction_subject"=>"Starter plan",
    "payment_gross"=>"6.00",
    "shipping"=>"0.00",
    "product_type"=>"1",
    "time_created"=>"01:55:16 Mar 26, 2014 PDT",
    "ipn_track_id"=>"a22c60daf3"
}

从上面的代码可以看出
我的创建时间是

"time_created"=>"01:55:16 Mar 26, 2014 PDT"

今日扣费时间是

"payment_date"=>"17:18:18 Mar 27, 2014 PDT"

下次扣款时间是

"next_payment_date"=>"03:00:00 Mar 28, 2014 PDT"

而实际上我在 paypal 创建循环付款的订单时间是

Mar 26, 2014 | 17:46:55 PDT

通过上面可以看到 当日扣费时间似乎是对的 也就是提前了半小时来完成循环扣费 但不理解的是我本来的创建时间和这里收到的创建时间不符合 然后下一次扣费时间 似乎太早了 没有约等于 24 小时

paypal 是批处理的,订阅差不多都是这个时间收钱。。。

@zhangjinzhu 这里为何今日付款和下次付款时间差太远。我主要怕扣费时间不准,预扣还好,如果是延迟扣款或者延迟发送 ipn 的话,我这里要通过 ipn 来更新过期时间,我怕时间衔接不上。就是比如我得到扣款的消息了 比如是按天付费 那么我收到 ipn 就在现在时间上加一天,以此类推。所以时间要比较精确。如果他错过了这 24 小时的期限再给我发。那么这中间没有时间更新。用户就用不了某些东西了

基本上 paypal 就是这个时间收钱的 03:00:00 Mar 28, 2014 PDT,所以不会出现超过 24 小时的情况,不过为了用户体验,你可以在你的程序上控制一下,如果现在处于订阅状态,允许他一定的超时时间(防止信用卡过期之类的事情。。。)。

他在 paypal 那边取消的话,你会收到 cancel 的 ipn,所以没有收到通知的话,给他一定延时也没有问题应该。。。当然这个也取决于你们的产品性质。。。。

@zhangjinzhu 感谢解答了我一个困扰半天的疑问还给了个不错的解决方案。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号