【问题标题】:Creating Recurring Payments with Reference Transaction使用参考交易创建定期付款
【发布时间】:2016-03-09 23:38:06
【问题描述】:

我遇到了德国用户的问题,因为我无法使用定期付款。我的方案是能够建立一个系统,根据我的需要,用户可以按月或按年计费。我联系了 PayPal,他们说我可以使用参考交易来做到这一点。 我开始实施,但出现了很多问题。我的电话是这样的:

注意:# 字段被禁用,但我使用它们。 1.调用获取token创建计费协议

            'PAYMENTREQUEST_0_AMT': "0",
            'PAYMENTREQUEST_0_CURRENCYCODE': "USD",
            'PAYMENTREQUEST_0_DESC': "Daily_Subsription",
            'L_BILLINGAGREEMENTDESCRIPTION0': "Daily_Subsription",
            'L_BILLINGTYPE0': "MerchantInitiatedBilling",
            'CANCELURL': "http://192.168.100.10/paypal_express/",
            'RETURNURL': "http://192.168.100.10/paypal_express/",
            #'PAYMENTREQUEST_0_PAYMENTACTION': 'Authorization',
            'CURRENCYCODE':'USD',
            'METHOD': "SetExpressCheckout",

结果:

    'ACK': 'Success',
    'TIMESTAMP': '2015-12-04T13:13:59Z',
    'TOKEN': 'EC-7LE96518YR0055319',
    'VERSION': '116.0',
    'BUILD': '18308778',
    'CORRELATIONID': '17681d6b20d48'
  1. 创建结算协议。

        'METHOD': "CreateBillingAgreement",
        'TOKEN': my_token, # token from SetExpressCheckout
    

结果:

    'ACK': 'Success',
    'TIMESTAMP': '2015-12-04T13:14:19Z', 
    'VERSION': '116.0',
    'BUILD': '18308778',
    'BILLINGAGREEMENTID': 'B-7H2153525D722501M',
    'CORRELATIONID': 'cca3843b1b9b1'
  1. 创建定期配置文件

        'TOKEN': my_token, # token from SetExpressCheckout
        'METHOD': 'CreateRecurringPaymentsProfile',
        'PROFILESTARTDATE': "2015-12-06T16:05:48Z",
        'BILLINGPERIOD': "Day",
        'BILLINGFREQUENCY': "1",
        'CURRENCYCODE':'USD',
        'AMT': "1.00",
        'PAYERID': PAYERID,
        #'INITAMT': "3.00",
        #'PAYMENTREQUEST_0_PAYMENTACTION': 'sale',
        'PAYMENTREQUEST_0_DESC': "Daily_Subsription",
        'DESC': "Daily_Subsription",
    

结果:

    'ACK': 'Success',
    'TIMESTAMP': '2015-12-04T13:14:21Z',
    'VERSION': '116.0',
    'BUILD': '000000',
    'PROFILEID': 'B-7H2153525D722501M',
    'CORRELATIONID': '8ecf29d5a1059'

现在真的让我想知道应该发生什么以及为什么不起作用,因为返回了配置文件 ID,但没有返回 PROFILESTATUS 甚至 TRANSACTIONID。

等待输入或更好的流程解释。

【问题讨论】:

    标签: paypal paypal-sandbox


    【解决方案1】:

    参考交易和定期付款是完全不同的事情。虽然从技术上讲,您可以在一次结帐中同时使用这两者,但这不是典型的场景。

    在您的情况下,您通过 $0 授权和计费协议的创建一切都正确。不过,您不会再次调用 CreateRecurringPaymentsProfile。您只需将帐单协议 ID 保存在数据库中的客户记录中即可。

    基本上,您必须构建自己的循环系统。您将有一个脚本在您的服务器上每天运行(或您希望的任何频率)并处理当天到期的任何付款。

    在循环处理这些到期付款时,它会提取每一笔的帐单协议 ID,并在 DoReferenceTransaction API 调用中使用它来处理您需要处理的金额。

    因此,使用 CreateRecurringPaymentsProfile 会在 PayPal 的系统中创建配置文件,这样您就可以依靠他们每天运行这些付款,而不是自己构建这部分。但是,显然您对此有限制,这就是为什么他们告诉您需要使用 ref.而是交易。

    不过,只是为了回答这些问题,您在这里没有得到交易 ID 的原因是因为实际上没有发生付款。该交易只是创建配置文件,您确实获得了配置文件 ID。只有当根据配置文件处理付款时,您才会获得该特定付款的交易 ID。

    同样,在您的情况下,您根本无需担心 CRPP,只需使用参考交易即可。

    【讨论】:

      【解决方案2】:

      您需要使用计费协议 ID 调用 DoReferenceTransaction API,并将 Recurring 变量指定为 Y。但在此之前创建计费协议 ID 时,您必须与买方建立计费协议,指定金额、频率、和定期付款的持续时间。您可以在此处参考文档。

      如果在 SetExpressCheckout 期间将帐单类型指定为定期付款,是否有任何问题?会出现什么错误?

      【讨论】:

      • 我需要这个在没有信用卡链接到 PayPal 的情况下工作,所以如果我在 SetExpressCheckout 上将账单类型指定为 RecurringPayment,它不会让我继续并说“我们无法处理请求。请回到存储一个选择的另一个选项”。我正在使用仅关联银行账户的沙盒德国账户对此进行测试。
      • 不幸的是,对于德国用户/客户,他们需要使用信用卡,因为目前无法直接借记。由于您使用的是计费协议,因此您可能需要使用参考交易为他们充值。
      猜你喜欢
      • 2012-06-18
      • 2016-10-13
      • 1970-01-01
      • 2013-05-04
      • 2013-05-20
      • 2011-08-12
      • 2020-06-02
      • 2014-11-02
      • 2018-03-16
      相关资源
      最近更新 更多