贝宝验证首付款或initamt在定期付款被标榜(paypal verifying first pay

2019-08-03 05:15发布

我希望我的用户能够订阅定期付款(使用快速结账API)的首付款必须立即支付,用户订阅,我需要知道,他们已授予其访问之前被成功完成结算。

有没有一种简单的方法来做到这一点?

我试过,创建与INITAMT设定循环付款资料,不过,目前还不清楚的是,用户被标榜(使用沙箱时),并没有txn_id(或同等学历)返回表明计费有已经完成。 我得到不过的IPN确认创建配置文件,这使得它很难提供了一个很好的用户体验后说到“一段时间”。

我试着加入了一次性支付,认证与DoExpressCheckoutPayment,然后建立经常性的个人资料,如果一次性付款的运作方式,但身份验证也将失败,并在这点我已经放弃了(尽管仍可能有一些在这种方法的腿)。

无论如何,我认为我会问的专家在这里。 有一个简单的方法来建立一个定期付款,每月一次付款,首付款目前的付款人(),并有通过API证实的首付款,而无需等待的时间未知量的IPN确认消息?

Answer 1:

这可以根据您的要求,我已经测试了它和它的作品。 关键是,你需要同时处理一个标准的数字商品支付以及使用相同的快速结账流程,即用户将被要求支付一次性的,以及批准订阅一个经常性支付。 你想设置S

  1. 按照有关设置支付指令: https://developer.paypal.com/webapps/developer/docs/classic/express-checkout/ht_ec-basicDigGoodsPayment-curl-etc/

  2. 添加定期付款指定的字段: https://developer.paypal.com/webapps/developer/docs/classic/express-checkout/ht_ec-recurringPaymentProfile-curl-etc/

  3. 流程“DoExpressCheckoutPayment”如果成功的话,“CreateRecurringPaymentsProfile”你的第一个“更新”日期的开始日期。

您现在应该有一个一次性支付两事务ID,以及为经常性支付个人资料ID。



Answer 2:

我会坚持使用INITAMT处理的首付款您的第一选择,但设置FAILEDINITAMTACTION到CancelOnFailure。

这样一来,如果初始支付不成功,该配置文件将立刻被设置为暂停状态,而不是主动。

然后,您登录系统或任何在你正在使用,以保护您的订阅内容,您可以使用GetRecurringPaymentsProfileDetails获得用户签约信息的当前状态。 如果它比其他任何“活动”可以相应地给用户的消息,并拒绝他们访问内容。



Answer 3:

当第一次创建配置文件,PayPal发送一个IPN名为“recurring_payment_profile_created”。 该IPN中包含字段“initial_payment_txn_id”。 您可以使用GetTransactionDetails查找此ID,并确定该交易是否完成。 请确保您标记该事务ID为处理,使您的代码不双船如果/发送该事务的IPN时(如果那是与你有关)。 这个例子类似,我们如何处理这个在我们的IPN监听器(Ruby编写的针对贝宝的官方商家SDK宝石 ):

case params[:txn_type]
  when 'recurring_payment_profile_created'
    # The profile has been created.  Perform any action, if necessary...

    initial_txn = params[:initial_payment_txn_id]
    return if ProcessedTransaction.exists?(initial_txn)

    request = api.build_get_transaction_details({
        :TransactionID => initial_txn
    })

    resp = api.get_transaction_details(request)
    if resp.success? and resp.PaymentTransactionDetails.PaymentInfo.PaymentStatus == 'Completed'
        # The initial payment is completed, perform the action...
        # Add this ID to your ProcessedTransaction table so you don't double-process...
    end
  # other 'when' statements for other transaction types, etc go here
end


Answer 4:

我发现的唯一的解决办法(即差)是接受长达24小时的延迟被通知第一个月的订阅已经被计费。 我们现在正在调查谷歌结账和支付布伦特里作为替代到PayPal,所以我们可以迁移远离它。



文章来源: paypal verifying first payment or initamt was billed in recurring payment