我正在使用Chargify API(https://github.com/jforrest/Chargify-PHP-Client/),我们有成千上万的客户每月订阅,因此他们按照特定日期付费,我使用的是每天检查订阅的cron
问题是我们错过了订阅,如果它无法在收费日期收费。有些时候客户卡无法收取费用,因为他们的帐户中没有资金或任何原因导致他们的卡片导致延迟几天。
我想知道什么时候客户卡在chargify中收费,所以我可以生成一个新的订单那个时间,我已经使用了上面的PHP库但是找不到能够获取信息的功能。
任何人都可以帮助解决此问题或任何其他解决方案吗?
由于
答案 0 :(得分:1)
Chargify有一个特别称为“Webhooks”的功能(就像Paypal,Stripe等)。每当客户的订阅活动(如每月续订)时,Chargify将直接向您的服务器发送POST请求以提醒您。
具体文档如下:https://docs.chargify.io/webhooks
不需要cron工作!
答案 1 :(得分:1)
您可以通过webhook设置并在客户收费后立即获取所有信息,并且您需要在服务器上设置webhook网址,然后将其添加到chargify帐户,登录后转到设置 - > Webhooks - >添加网址例如:
http://www.domain.com/webhooks/
在“webhooks”目录下创建index.php文件,你将从chargify获取一个这样的数组:
Array
(
[id] => 29660474
[event] => renewal_success
[payload] => Array
(
[subscription] => Array
(
[activated_at] => 2014-12-12 06:11:51 -0500
[balance_in_cents] => 1900
[cancel_at_end_of_period] => false
[canceled_at] =>
[cancellation_message] =>
[created_at] => 2014-12-12 06:11:40 -0500
[current_period_ends_at] => 2015-02-12 06:11:40 -0500
[expires_at] =>
[id] => 7231335
[next_assessment_at] => 2015-02-12 06:11:40 -0500
[payment_collection_method] => automatic
[snap_day] =>
[state] => active
[trial_ended_at] =>
[trial_started_at] =>
[updated_at] => 2015-01-12 06:22:21 -0500
[current_period_started_at] => 2015-01-12 06:11:40 -0500
[previous_state] => active
[signup_payment_id] => 78110242
[signup_revenue] => 19.00
[delayed_cancel_at] =>
[coupon_code] =>
[total_revenue_in_cents] => 1900
[product_price_in_cents] => 1900
[product_version_number] => 6
[payment_type] => credit_card
[customer] => Array
(
[address] => xx xxxx place Success
[address_2] =>
[city] => Perth
[country] => AU
[created_at] => 2014-12-12 06:11:39 -0500
[email] => xxxxxxx@hotmail.com
[first_name] => Jay
[id] => 7093037
[last_name] => Gable
[organization] => Large
[phone] => xxxxxxxx
[portal_customer_created_at] => 2014-12-12 06:11:52 -0500
[portal_invite_last_accepted_at] =>
[portal_invite_last_sent_at] =>
[reference] => 548acd6a8ef3a
[state] => WA
[updated_at] => 2014-12-12 06:11:52 -0500
[verified] => false
[zip] => 6164
)
[product] => Array
(
[accounting_code] =>
[archived_at] =>
[created_at] => 2014-08-11 03:27:20 -0400
[description] => xxxx
[expiration_interval] =>
[expiration_interval_unit] => never
[handle] => monthly-subscription
[id] => 3493985
[initial_charge_in_cents] =>
[interval] => 1
[interval_unit] => month
[name] => 1 Pair Monthly
[price_in_cents] => 1900
[request_credit_card] => true
[require_credit_card] => true
[return_params] =>
[return_url] =>
[taxable] => false
[trial_interval] =>
[trial_interval_unit] => month
[trial_price_in_cents] =>
[update_return_url] =>
[updated_at] => 2014-12-11 17:09:41 -0500
[product_family] => Array
(
[accounting_code] =>
[description] => Standard Monthly Subscriptions
[handle] => monthly-subscription
[id] => 421701
[name] => Australia
)
[public_signup_pages] => Array
(
[id] => 100806
[url] => xx
)
)
[credit_card] => Array
(
[billing_address] => xxxxx Success
[billing_address_2] =>
[billing_city] => Perth
[billing_country] => AU
[billing_state] => WA
[billing_zip] => 6164
[card_type] => master
[current_vault] => braintree_blue
[customer_id] => 7093037
[customer_vault_token] =>
[expiration_month] => 2
[expiration_year] => 2015
[first_name] => XXXX
[id] => 4693476
[last_name] => Gable
[masked_card_number] => XXXX-XXXX-XXXX-xxxx
[vault_token] => xxxxxx
[payment_type] => credit_card
)
)
[site] => Array
(
[id] => xxxxx
[subdomain] => xxxxx
)
)
)
我希望这会有所帮助。
答案 2 :(得分:0)
最简单的方法是将最后成功的交易日期存储在数据库中并经常检查自上次使用cron或mysql事件调度程序更新后是否已经过去一个月,从未使用过chargify,但paypal api可以与您的服务器通信并返回事务状态,您可以在您的网站上使用它来更新数据库