magento使用paypal支付接口测试

paypal帐户,帐户类型分为Personal(个人)、Premier(高级)和Business(商业),他们的差别对于开发者

来说主要是返回的信息,Personal的不能使用IPN和PDT等商家工具,即不能获取交易信息,但是Personal帐户收款无需手续费;Premier和Business当然就提供了IPN和PDT功能,能够在客户支付成功后,将交易信息传给指定的网站,用来二次使用。

这里插进来介绍一下paypal sandbox,也就是沙盒,是paypal提供给开发者的一个工具,非常好用。

作为Magento开发者,第一次使用Paypal总是希望能使用测试账号来测试功能是否工作正常,基本流程如下: 

1. 去developer.paypal.com申请开发账号(这里以dev123@gmail.com为例),申请后自动建立一个buyer和一个seller测试子账号供测试(这里分别以buyer123@gmail.com和seller123@gmail.com为例)。 

2. Magento后台允许PayPal Standard支付: 
System->Configuration->Payment Methods->PayPal Website Payments Standard 

3. Magento后台设置PayPal账号 
System->Configuration->PayPal->Website Payments Standard 
    Business Account: seller123@gmail.com 
    Sandbox Mode : Yes 

最常犯的错是:将Business Account设置为dev123@gmail.com, 这样当支付进入最后一步会提示这样的错误(导致订单别取消): 
This invoice has already been paid. For more information, please contact the merchant.
 

4. 打开浏览器登录developer.paypal.com,在同一个浏览器下订单,当place order转入paypal网站时(sandbox网站),你可以选择输入信用卡信息支付,也可以选择登陆PayPal,如果选择登录可以用前面的buyer123@gmail.com,首次登陆可能要求你帮定一个银行账号,因为是测试账户,这里的银行账号是无所谓的,接下来就会一路顺利,确认支付成功,点击回到商家网站按钮,订单完成。 

注:第4条提到的“打开浏览器登录developer.paypal.com,在同一个浏览器下订单”是必需的,否则不能完成测试! 
另外一个可能导致订单不成功的的原因是:Shipping Address必须足够真实,否则PayPal会Decline你的 

还有在这里提一下paypal ipn(Instant Payment Notification),就是Paypal开发的一种能主动通知第三方卖家系统交易状态的一种机制。IPN的原理很简单,就是当产生了一个交易之后, 交易状态发生变化时,如用户已经付款、或者退款、撤销时,Paypal利用常用的HTTP POST方式,将交易的一些变量提交给网站的某个页面(称之为IPN Handler),当这个页面接受到请求时候,将这些数据原封不动加上一个指示验证的cmd=_notify-validate,POST回Paypal 的接口地址,如果数据正确,那么Paypal返回字符串VERIFIED,否则为INVALID,如果结果为VERIFIED,那么你的程序就可以使用这 些数据进行操作。

电子商务系统使用paypal支付接口的程序流程 及通信接口

PayPal支付接口的PHP开发方式