使用参考交易创建定期付款

时间:2015-12-04 22:23:23

标签: paypal paypal-sandbox

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

注意:#字段已禁用,但我使用了它们。 1.致电获取令牌以创建账单协议

            '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
    
  2. 结果:

        '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",
      
    2. 结果:

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

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

      等待输入或更好的流程说明。

2 个答案:

答案 0 :(得分:0)

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

如果在SetExpressCheckout期间您指定了定期付款的结算类型,是否有任何问题?会出现任何错误吗?

答案 1 :(得分:0)

参考交易和定期付款完全是分开的。虽然技术上可以在一次结账时将两者结合使用,但这不是典型的情况。

在您的情况下,您通过$ 0授权和创建结算协议确保一切正确无误。但是,您不会再调用CreateRecurringPaymentsProfile。您只需将结算协议ID保存在数据库中客户的记录中即可。

基本上,你必须建立自己的经常性系统。您将拥有一个在您的服务器上每天(或者经常需要)运行的脚本,并处理当天到期的任何付款。

在循环执行这些到期付款时,它会为每个付款提取结算协议ID,并在DoReferenceTransaction API调用中使用它来处理您需要处理的金额。

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

只是回答这些问题,但是你没有在这里获得交易ID的原因是因为实际上没有付款。该交易只是创建个人资料,您确实收到了个人资料ID。只有在根据个人资料处理付款时,您才能获得该特定付款的交易ID。

但是,在您的情况下,您根本不需要担心CRPP,只需使用参考交易。