0

我正在使用 Chargify API ( https://github.com/jforrest/Chargify-PHP-Client/ ),我们有成千上万的客户每月订阅,所以他们在特定日期收费,我使用的是检查订阅的 cron每日

问题是我们错过了一个订阅,如果它不能在应该收费的日期收费。有时,由于账户中没有资金或卡发生任何原因导致延迟几天,客户卡无法扣款。

我想知道何时在 chargify 中收取客户卡,以便那时我可以生成新订单,我已经使用了上述 PHP 库,但找不到可以获取我信息的函数。

任何人都可以为此提供帮助或任何其他解决方案来解决此问题吗?

谢谢

4

3 回答 3

1

Chargify 有一个特殊的功能,称为“Webhooks”(就像 Paypal、Stripe 等)。每当客户的订阅有活动(如每月续订)时,Chargify 都会直接向您的服务器发送一个 POST 请求以提醒您。

具体文档在这里:https ://docs.chargify.io/webhooks

不需要 cron 工作!

于 2014-05-02T15:55:15.047 回答
1

您可以通过 webhook 设置并在客户收费后立即获取所有信息,为此您需要在您的服务器上设置 webhook url,然后将其添加到 chargify 帐户,登录后转到 Settings -> Webhooks -> Add url 例如:

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
                )
        )
)

我希望这有帮助。

于 2015-07-19T13:39:24.710 回答
0

最简单的方法是将最后一次成功的交易日期存储在数据库中,并经常检查自上次使用 cron 或 mysql 事件调度程序更新以来是否已过去一个月,从未使用过 chargify 但 paypal api 可以与您的服务器通信并返回交易状态,您可以在您的网站上使用来更新数据库

于 2014-05-01T09:12:46.437 回答