与Paypal的PHP REST SDK的付款协议

时间:2015-03-18 21:27:32

标签: php paypal paypal-subscriptions paypal-rest-sdk

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

我们的流程是:

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

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

我一定错过了什么,但我完全被难过了。在以前的步骤中,我无法找到任何方式将已执行的协议与任何内容联系起来。

3 个答案:

答案 0 :(得分:2)

正如PayPal_Orcun所述,问题仍然悬而未决,并且正在Paypal内部得到解决,但与此同时,你可以在这里做点什么。

  1. 在第3步,创建协议后,您会收到如下所示的审批链接:

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

  2. 此处,复制令牌,并将其存储在数据库中。把它想象成一个独特的Id。

  3. 执行付款。当它回来时,paypal将重定向回来,如下所示:

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

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

    我同意,这不是您所期望的,但它绝对允许您在createexecute来电后连接协议。

    希望这会有所帮助。

答案 1 :(得分:0)

以下是REST API计费方案和结算协议的工作原理(包括卷曲调用样本):

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

1-)创建开票计划

curl -k -v -H“Content-Type:application / json”-H“授权:Bearer ACCESS_TOKEN”-d'{“name”:“测试REST俱乐部计划”,“描述”:“模板创建。 “,”“type”:“fixed”,“payment_definitions”:[{“name”:“常规付款”,“类型”:“常规”,“频率”:“月”,“frequency_interval”:“2”,“量 “:{” 值 “:” 100" , “货币”: “USD”}, “循环”: “12”, “charge_models”:[{ “类型”: “运输”, “量”:{“值“:” 10" , “货币”: “USD”}},{ “类型”: “TAX”, “量”:{ “值”: “12”, “货币”: “USD”}}]}] “merchant_preferences”:{ “setup_fee”:{ “值”: “1”, “货币”: “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/payments/billing-plans

PayPal将返回以“P - ”

开头的结算方案ID

2-)激活开票计划

curl -k -v -H“Content-Type:application / json”-H“授权: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“授权:Bearer ACCESS_TOKEN”-d'{“name”:“测试REST俱乐部计划”,“描述”:“模板创建。 ”, “起始日期”: “2015-03-20T07:49:27-07:00”, “计划”:{ “ID”: “PLAN_ID_HERE”}, “付款人”:{ “PAYMENT_METHOD”: “贝宝”}, “shipping_address”:{“line1”:“111 First Street”,“city”:“Saratoga”,“state”:“CA”,“postal_code”:“95070”,“country_code”:“US”}}'{ {3}}

PayPal将返回带有EC令牌的Express Checkout重定向网址。例如。 https://api.sandbox.paypal.com/v1/payments/billing-agreements

您需要通过该网址将您的客户重定向到PayPal。一旦授权了结算协议,客户就会返回您的站点(步骤1中的return_url)。

4-)执行账单协议

curl -k -v -H“Content-Type:application / json”-H“授权:Bearer ACCESS_TOKEN”-d'{}'https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-xxxxxxxxxxxxxxxxx

答案 2 :(得分:0)

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