由于PayPal的界面完全由PayPal控制,为什么不使用模拟,并避免交互。这样,任何更改都可以正常工作,您的代码只需要知道如何发送第一个请求并验证来自PayPal的返回,这都在模拟设置中完成。如果您想进行实际测试,则可以按照经典API的Paypal沙盒说明进行操作。
这种方法不适用于自动化单元测试,但在手动运行的测试中效果很好。一旦您从SetExpressCheckout获得了令牌,就创建一个新的HttpListener,其地址与SetExpressCheckout中指定的'ReturnUrl'相同,并等待请求(同步)。使用Process.Start将浏览器指向PayPal的身份验证屏幕,一旦付款获得授权/取消,用户浏览器将被重定向到您的HttpListener的本地地址,然后您可以使用该地址获取令牌和PayerID。