贝宝IPN总是返回沙箱上的“payment_status:待定”?
我正在尝试在我的网站上实施PayPal。
我使用这个类: http : //www.micahcarrick.com/php-paypal-ipn-integration-class.html
现在我正在使用PayPal沙盒进行testing。
这是问题:
- 用户付款 – 好的
- 用户成功返回到我的网站 – 好的
- 几秒钟后,PayPal使用IPN拨打我的网站 – 确定
- 我的class级成功validation传入的IPN数据。
- PayPal返回“payment_status:待定”
我不知道为什么PayPal IPN回拨“等待”的付款状态?
有谁知道我在做什么错?
当您login到您的testing业务帐户时,请手动导航至:
https://www.sandbox.paypal.com/ca/cgi-bin/?cmd=_profile-pref&source=acct_setup&fli=true
通常情况下,您可以通过“我的业务设置”进入该页面,但是现在它会redirect到PayPal直播(尽pipe位于沙盒中)。
进入该页面后,将“阻止以我不持有的货币发送给我的付款”更改为“不,接受并将其转换为…”
此外,请不要忘记使用PayPal Sandbox前端和API的“testing电子邮件”部分确认您的商家帐户。
我的问题是,我的沙盒商人帐户是作为英国用户(和英镑作为货币)。 当我试图通过丹麦克郎(DKK)的订单时,它会告诉我,在商家的观点中,这笔购买是“无人认领”的。 一旦DKK中的一个订单被接受,我select以DKK创build一个新货币,IPN给我发送了所有“payment_status = completed”消息。
处理这个问题一点&PayPal改变用户界面,
以下是PayPal商户技术支持的具体说明:
感谢您联系商家技术支持。
请尝试按照以下说明closures您的沙箱帐户的付款审核function:
- 去PayPal开发者网站
- login到您的开发者帐户
- 点击应用程序
- 点击沙盒帐户
- 点击您要closures“付款查看”选项的电子邮件地址,然后在展开后单击“个人资料”
- 点击设置
- 并selectclosures付款审查。
- 点击closures
! 确保您在PayPal Sandbox商家帐户中执行此操作!
这就是它的样子:
您可以通过以下说明来解决它。
-
login到您的开发人员中心。
-
点击左边的Test Accounts标签。 您应该已经创build了这些testing帐户以在沙盒上进行testing。
-
find“付款审查”一栏。
-
find您正在使用的沙箱帐户,然后点击“付款审核”列中的“已启用”。
-
这应该更改为“禁用”,现在从您的余额和信用卡资助的付款将立即完成。
两个可能的原因:
1.卖家账户可以select接受或拒绝付款
在这种情况下,您需要以卖家身份login并接受付款,并且您将获得另一个IPN,其中payment_status =已完成
脚步:
- login到您的开发者中心
- 按左边的“testing帐户”
- select卖家帐户,然后按下底部的“进入沙箱testing网站”
- 您应该看到卖家仪表板可以select接受或拒绝任何付款(您可能需要使用卖家testing帐户凭证在此步骤重新login)
2.支付审查启用
解:
- login到您的开发人员中心。
- 点击左边的Test Accounts标签。 您应该已经创build了这些testing帐户以在沙盒上进行testing。
- find“付款审查”一栏。
- find您正在使用的沙箱帐户,然后点击“付款审核”列中的“已启用”。
这应该更改为“禁用”,现在从您的余额和信用卡资助的付款将立即完成。
-
我确实更改了
Allow payments sent to me in a currency I do not hold
Yes
在沙箱中的所有用户帐户 ,但它仍然无法正常工作。 -
我也尝试在PayPal表单中创build相同的货币 ,在这里为沙箱用户帐户创build新货币。 将货币转换为新货币。 仍然没有成功。
-
然后我注意到Wes Hanney的回答最后一句话:“使用PayPal Sandbox前端确认您的商业账户”。 尝试这个也没用。
-
MGPalmer在他的回答中build议创build一个德国商人帐户。 也没有工作。
多麻烦!
过了一个小时,我刚刚把电脑扔出窗外,我意识到我忘了一件事。 将我的真实收件人电子邮件地址更改为沙盒商户电子邮件地址。 那终于为我解决了。
PS:也许是一个愚蠢的初学者的错误? 但对于遇到相同情况的其他人可能会有所帮助。
我也有同样的问题,这里没有任何build议。 然后我意识到问题是我试图从沙箱帐户付款到真实帐户。 例如,如果您的注册商业账户是: email@example.com
那么所有的沙箱支付应该发送到email-facilitator@example.com
否则它们将以PENDING模式结束。
类似的问题在这里 – 我的(沙箱)商家帐户是在美国创build,我试图做欧元支付。
对我而言,我更改了哪些设置并不重要,只有在德国创build新的商家帐户后才能使用。
上面没有解决scheme为我工作,但帮助我find解决scheme。
如果您使用de默认业务和买家帐户,也许这种解决scheme将为您工作。
-
转到developer.paypal > sandbox.accounts
https://developer.paypal.com/developer/accounts/ -
login并点击您的sandobx 企业账户中的 克隆图标和您的买家账户
-
设置新名称和电子邮件 ,然后点击创build新帐户
-
打开这两个帐户的configuration文件,并确保付款审查 closures
-
在您的代码/应用程序中编辑您的目标帐户,并放置新的业务帐户
-
使用新买家帐户 重复交易
这个解决scheme不仅解决了我的问题。 由于它sandox.paypaldevise更改为使用真实账户的新devise 。
这一点很重要,因为IPN在这种情况下收到的一些数据可能会以不同的名字作出回应。
解决scheme是@Jadeye解释:
去PayPal开发者网站
- login到您的开发者帐户(沙箱)
- 点击应用程序
- 点击沙盒帐户
- 点击您要closures“付款查看”选项的电子邮件地址,然后在展开后单击“个人资料”
- 点击设置
- 并selectclosures付款审查。
- 点击closures
还有一件事你可能需要检查:
确保PayPal账户的语言编码设置为UTF-8。 在某些情况下,默认情况下,它被设置为“windows-1256”。 要将其更改为UTF-8,您需要:
- 进入你的个人资料然后“我的销售工具”
- 那里,在底部点击“PayPalbutton语言编码”
- 在下一页,你需要点击“更多选项”,你可以最终设置编码
我在德国设置的每一个PayPal帐户默认都设置为“windows …”语言编码。 然后,IPN将不能使用UTF-8编码的网站,即使在Woocommerce或EDD或事件浓缩咖啡。
问题是,如果货币不在您的商家PayPal帐户将被标记为“无人认领”,因此它返回状态“挂起”
您需要做的是点击“无人认领”的状态,索取金额,并select以您要求的货币开设新基金的选项,例如欧元。 这将打开您的PayPal账户上的欧元存款行,然后validation声明的交易加上未来的交易。