在使用paypal越来越深入时,我和同事们发现了paypal存在着很多问题,有些问题还算是低级错误,所以给我们的感觉是paypal对business用户(特别是美国以外的business用户)照顾得不周到。可能paypal名声在外,原来在我心目中是一个非常好用的payment solution,期望值高了,失望也大。平心而论,这些问题还不是nightmaire,如果发生在其他的payment service provider,我也不会有那么大感慨。
目前我碰到的最大的问题是:paypal download history下载来的交易记录不能直接拿来做帐用,我专门写了个转化程序,用于正规化交易记录。从paypal download history中,可以下载到好几种交易记录,我主要关心两种:all activities和balance affecting payment。前者确实包含了所有的交易活动,但后者包含了一些不影响余额的交易。
说到余额,记录中balance那一栏只能参考,很多时候它并不是真正的余额,搞得bookkeeper很头痛,这也是我写转化程序的直接动机。迄今为止,我遇到14种交易类型(type):
- eBay Payment Sent
- Payment Received (仅用于money request)
- Pre-approved Payment Sent (paypal月费)
- Refund
- Shopping Cart Item (paypal cart模式,excluding VAT)
- Shopping Cart Payment Received (paypal cart模式,including VAT)
- Temporary Hold (dispute时,paypal暂扣款)
- Update to eCheque Received
- Update to Payment Received (虚拟终端模式,accept transaction)
- Update to Reversal (dispute结束后,paypal释放暂扣款)
- Virtual Terminal Transaction
- Web Accept Payment Received
- Web Accept Payment Sent
- Withdraw Funds to a Bank Account
通过对比all activities交易记录和balance affecting payment交易记录,以下三种记录包含在all activities里,但被balance affecting payment剔除:
- Virtual Terminal Transaction with Status “Pending”
- Virtual Terminal Transaction with Status “Refused” (若accept transaction,会有两条记录,type分别为Virtual Terminal Transaction 和 Update to Payment Received;若refuse transaction, 只有一条记录,type仍是Virtual Terminal Transaction,只是Status为Refused)
- Web Accept Payment Received if payment by eCheque (upon being paid, not cleared)
但实际上,仅剔除以上三种记录远远不够。比如:
Shopping Cart Item 是 Shopping Cart Payment Received 同笔交易,excluding VAT的记录不应该和including VAT的记录同时进入数据表;
Virtual Terminal Transaction 如果有accept transaction,就会有Update to Payment Received,同笔交易决不该有两条记录affacting balance。
正因为paypal 对balance affecting 逻辑不清,balance那一栏的数据就很乱套。光看paypal net 和 balance那两栏,很多人会认为上一条记录的balance 加当前记录的net 应该等于当前的balance,但paypal balance不是这么算的,谁也不知道paypal的逻辑,搞得bookkeeper说paypal有时会就一笔交易重复收费。
事实上,说paypal重复收费也冤枉了paypal。我转化程序的验证balance和paypal的最终余额还是完全吻合的。只能怪paypal提供的原始记录没有逻辑。