如何使用沙盒测试Paypal订阅按钮?

29

经过五个小时的研究和阅读过时的PayPal文档,我最终放弃了!

我需要使用PayPal沙盒测试一个简单的PayPal订阅按钮。

按钮代码:

<form action="https://www.sandbox.paypal.com/us/cgi-bin/webscr" method="post">
     <input type="hidden" name="cmd" value="_s-xclick">
     <input type="hidden" name="hosted_button_id" value="34CXHXVU2J8BY">
     <input type="image" 
            src="https://www.paypalobjects.com/en_US/GB/i/btn/btn_subscribeCC_LG.gif" 
            border="0" name="submit" 
            alt="PayPal — The safer, easier way to pay online." 
            style="border:none;padding:0;height:auto;width:auto">
     <img alt="" border="0" 
          src="https://www.paypalobjects.com/de_DE/i/scr/pixel.gif" 
          width="1" height="1">
</form>

但是当我尝试提交表单时,我在PayPal网站上收到了这个错误:

http://i.stack.imgur.com/AVuTz.png

先行感谢, Phillip


7个回答

36
问题在于你在Live PayPal网站中生成了一个“托管”PayPal按钮,但是你将这些数据发送到了Sandbox。
由于Sandbox不识别hosted_button_id,因此它会返回错误信息。
你需要做的是:
  • 创建一个非托管按钮,并更改“action”和“business”参数以匹配Sandbox详细信息
  • 通过www.sandbox.paypal.com > Profile > PayPal Buttons.创建新的“托管”按钮。
TL;DR: Sandbox与Live PayPal网站完全分离。 在Live中生成的托管按钮无法在Sandbox中使用。

3
那么测试托管按钮是不可能的吗?我只能希望一切正常工作,或者进行实际支付吗? - Bobby Jack
在我的情况下,我不得不删除所有历史记录(cookies、sessions等),否则sandbox.paypal.com网站会将我重定向到其他地方。 - Berry Tsakala
有人知道如何在我的服务器应用程序中生成 hosted_button_id 吗? - bob_saginowski
1
My Saved Buttons Management链接也有同样的问题,它会带你到普通的PayPal.com域名。这是可用的“管理已保存按钮”的链接:https://www.sandbox.paypal.com/us/cgi-bin/webscr?cmd=_button-management - TARKUS
显示剩余3条评论

11

如何在沙盒模式下制作托管按钮:

  1. https://developer.paypal.com/上创建并登录您的沙盒账户。
  2. 选择“测试账户”。
  3. 为卖家创建一个“预配置”测试账户,并确保您记住密码,同时确保密码包含数字,否则您将无法使用该密码登录。
  4. 点击黄色按钮“进入沙盒测试网站”。
  5. 我的账户>>个人资料>>销售偏好设置>> 我保存的按钮
  6. 编辑您的按钮(那里有3个“保存”的预制按钮)。 确保您不要停留太久,否则它会在没有告诉我时注销我,第一次操作我的按钮时我得到了一个空代码字段。

希望这节省了您的时间 :)


谢谢,我一直通过正常的方式被重定向。 - user363349
2
保罗,你的第二步骤中“测试账户”在哪里? - H. Ferrence
没有“黄色”按钮,而“进入发送箱”链接被重定向到https://merchant.paypal.com/。请参见截图:http://tinypic.com/r/11v6651/5 - Berry Tsakala
2
对于现在遇到这个问题的任何人,我尝试在沙盒中单击“创建按钮”图像,但它重定向到了正常网站。我将沙盒重新添加到URL作为子域名,并加载了沙盒版本。 - Gaʀʀʏ
2
我无法找到“测试账户”。 - Hobbyist

2
是的,事实如此,PayPal 实际上认为 在另一个独立的沙盒系统中创建一个新按钮等同于“测试”。额,不,PayPal,测试的重点是测试真实的事物,而不是从头开始制作的副本在另一个系统中。如果出现差异(错误地做某些操作,这是测试的重点)或在设置它时出现问题会怎么样?这不是测试。这是进行试验。
因此,回答问题,您无法使用沙盒测试PayPal按钮,您只能进行试验。实际测试PayPal按钮的唯一方法是在测试时将价格降至很小,例如一分钱,或者只需支付费用然后退款。

2

1

现在是这样的:

  1. 创建一个新的沙盒业务账户。
  2. 使用https://www.sandbox.paypal.com/登录沙盒业务账户。
  3. 点击“付款和收款”,然后选择“PayPal按钮”。
  4. 对于不使用API调用的简单PayPal按钮,请选择“立即购买”。

由于开发者网站似乎不再具有该按钮,因此可能已经停用了该按钮。


1

是的,您也可以通过以下步骤在沙盒上进行测试:

  1. 创建一个新的沙盒业务账户。
  2. 登录到该业务账户。
  3. 进入“个人资料” > “我的设置工具”。
  4. 点击“Paypal按钮” > “更新”。
  5. 点击“创建新按钮”。
  6. 填写所需的所有详细信息。
  7. 最后,您可以获取带有“hosted_id”的表单代码。
  8. 您可以将代码粘贴到您的网站中进行测试。

希望这些步骤对您有用。


这应该是2020年的真正解决方案。 - Harrison

0
  1. 导航到https://developer.paypal.com/dashboard/applications/sandbox
  2. REST API应用中选择您想要的应用
  3. 复制您的Sandbox账户客户端ID
  4. 导航到https://developer.paypal.com/dashboard/accounts
  5. 找到相同的Sandbox账户,点击管理(3个点),然后点击查看/编辑账户
  6. 复制您的系统生成密码更改密码
  7. 导航到https://www.sandbox.paypal.com/
  8. 使用您的Sandbox账户+系统生成密码登录
  9. 导航到https://www.sandbox.paypal.com/billing/plans并创建与之前相同的计划
  10. 复制您的计划ID,例如:P-2BPE0RQ33UO7KJ5A8GV0AE08
  11. 添加此脚本标记,并将$clientId替换为(3)中的客户端ID
<script src='https://www.paypal.com/sdk/js?client-id=$clientId&vault=true&intent=subscription' data-sdk-integration-source='button-factory'></script>

使用以下 JS 代码呈现您的 PayPal 按钮:
/**/
var params = {
    /**/
    style: {
        /**/
        shape: "rect",
        /**/
        color: "blue",
        /**/
        layout: "vertical",
        /**/
        label: "subscribe"
        /**/
    },
    /**/
    createSubscription: function(data, actions){ return actions.subscription.create({ plan_id: "P-2BPE0RQ33UO7KJ5A8GV0AE08" }); },
    /**/
    onApprove: function(data, actions){
        /**/
        alert("Subscribed!");
        /**/
    }
};
/**/
paypal.Buttons(params).render("#paypal-button-container");
/**/
  1. 再次导航到https://developer.paypal.com/dashboard/accounts

  2. 这次找到你的个人账户,而不是商业账户

  3. 复制电子邮件地址

  4. 点击管理(3个点)然后点击查看/编辑账户

  5. 复制你的系统生成的密码或者更改密码

  6. 使用这个个人账户测试你的按钮

  7. 如果一切顺利,你将会收到一个已订阅的提示


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接