我遇到德国用户的麻烦,因为我无法使用定期付款。我的方案是能够建立一个系统,根据我的需要,可以按月或按年向用户收费。我联系了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'
创建结算协议。
'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'
创建定期个人资料
'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。
等待输入或更好的流程说明。
答案 0 :(得分:0)
您需要使用结算协议ID调用DoReferenceTransaction API,并将重复变量指定为Y.但在此之前创建结算协议ID时,您必须与买方建立结算协议,指定金额,频率,和定期付款的持续时间。你可以在这里参考文档。
如果在SetExpressCheckout期间您指定了定期付款的结算类型,是否有任何问题?会出现任何错误吗?
答案 1 :(得分:0)
参考交易和定期付款完全是分开的。虽然技术上可以在一次结账时将两者结合使用,但这不是典型的情况。
在您的情况下,您通过$ 0授权和创建结算协议确保一切正确无误。但是,您不会再调用CreateRecurringPaymentsProfile。您只需将结算协议ID保存在数据库中客户的记录中即可。
基本上,你必须建立自己的经常性系统。您将拥有一个在您的服务器上每天(或者经常需要)运行的脚本,并处理当天到期的任何付款。
在循环执行这些到期付款时,它会为每个付款提取结算协议ID,并在DoReferenceTransaction API调用中使用它来处理您需要处理的金额。
因此,使用CreateRecurringPaymentsProfile会在PayPal系统中创建配置文件,这样您就可以依赖它们每天运行这些付款,而不是自己构建该部分。显然,你有一个限制,这就是为什么他们告诉你需要使用ref。交易代替。
只是回答这些问题,但是你没有在这里获得交易ID的原因是因为实际上没有付款。该交易只是创建个人资料,您确实收到了个人资料ID。只有在根据个人资料处理付款时,您才能获得该特定付款的交易ID。
但是,在您的情况下,您根本不需要担心CRPP,只需使用参考交易。