1

我正试图围绕 Paypals 订阅流程。

我们的流程是:

1.) 创建计费计划
2.) 激活计费计划
3.) 创建计费协议(使用激活的计划,将客户发送到 paypal url)
4.) 客户批准,返回到我们的 URL,使用提供的令牌执行

我遇到的问题是我似乎无法将第 4 步中返回的任何 id 引用到前 3 步中提供的任何内容。

我一定是错过了什么,但我完全被难住了。在前面的步骤中,我找不到任何方法来关联已执行的协议。

4

3 回答 3

2

正如 PayPal_Orcun 所提到的,这个问题仍然悬而未决,并且正在 paypal 内部解决,但是,与此同时,您可以在这里做一些事情。

  1. 在第 3 步中,创建协议后,您将获得如下所示的批准链接:

    https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-8DL20958WD398123E

  2. 在这里,复制令牌,并将其存储在数据库中。将其视为一个唯一的 ID。

  3. 执行付款。当它返回时,paypal 将使用如下 URL 重定向回来:

    http://localhost/paypal/PayPal-PHP-SDK/sample/billing/ExecuteAgreement.php?success=true&token=EC-8DL20958WD398123E

如您所见,您可以$_GET['token']在此处检索令牌,并与创建的令牌相匹配。然后,您可以ID在执行成功时使用返回,并将令牌字段替换为新的 ID 字段。

我同意,这不是你所期望的,但它肯定会让你在调用create之后连接协议。execute

希望这有帮助。

于 2015-03-19T19:41:31.497 回答
0

我用于同样问题的解决方案是override_merchant_preferences在计费协议上设置,return_url在查询中包含用户 ID,例如www.domain.com/api/handler.php?uid=42&action=return.

于 2015-03-29T06:53:15.207 回答
0

以下是 REST API 计费计划和计费协议的工作方式(包括 curl 调用示例):

首先,请确保您的 REST 应用已切换为订阅(您可以在https://developer.paypal.com/webapps/developer/applications/myapps检查您的 REST 应用设置)

1-) 创建计费计划

curl -k -v -H "Content-Type:application/json" -H "Authorization: Bearer ACCESS_TOKEN" -d '{"name":"Test REST Club Plan","description":"模板创建。"," type":"fixed","payment_definitions":[{"name":"Regular Payments","type":"REGULAR","frequency":"MONTH","frequency_interval":"2","amount": {"value":"100","currency":"USD"},"cycles":"12","charge_models":[{"type":"SHIPPING","amount":{"value":" 10","currency":"USD"}},{"type":"TAX","amount":{"value":"12","currency":"USD"}}]}],"merchant_preferences":{"setup_fee":{"value":"1","currency":"USD"},"return_url":"http://returnurl","cancel_url ":"http://cancelurl","auto_bill_amount":"YES","initial_fail_amount_action":"CONTINUE","max_fail_attempts":"0"}}' https://api.sandbox.paypal.com/v1/付款/计费计划max_fail_attempts":"0"}}' https://api.sandbox.paypal.com/v1/payments/billing-plansmax_fail_attempts":"0"}}' https://api.sandbox.paypal.com/v1/payments/billing-plans

PayPal 将返回一个以“P-”开头的计费计划 ID

2-) 激活计费计划

curl -k -v -H "Content-Type:application/json" -H "Authorization: Bearer ACCESS_TOKEN" -d '[{"path":"/","value":{"state":"ACTIVE"} "op":"replace"}]' https://api.sandbox.paypal.com/v1/payments/billing-plans/

3-) 创建计费协议

curl -k -v -H "Content-Type:application/json" -H "Authorization: Bearer ACCESS_TOKEN" -d '{"name":"Test REST Club Plan","description":"模板创建。"," start_date":"2015-03-20T07:49:27-07:00","plan":{"id":"PLAN_ID_HERE"},"payer":{"payment_method":"paypal"},"shipping_address" :{"line1":"111 First Street","city":"Saratoga","state":"CA","postal_code":"95070","country_code":"US"}}' https:// api.sandbox.paypal.com/v1/payments/billing-agreements

PayPal 将返回带有 EC 令牌的 Express Checkout 重定向 URL。例如https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-xxxxxxxxxxxxxxxxx

您需要通过该 URL 将您的客户重定向到 PayPal。计费协议获得授权后,客户将返回您的站点(步骤 1 中的 return_url)。

4-) 执行计费协议

curl -k -v -H "Content-Type:application/json" -H "Authorization: Bearer ACCESS_TOKEN" -d '{}' https://api.sandbox.paypal.com/v1/payments/billing-agreements/ EC-TOKEN_HERE/协议执行

于 2015-03-19T15:08:06.650 回答