Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我如何从重复购买中获得订阅?_Php_Recurly - Fatal编程技术网

Php 我如何从重复购买中获得订阅?

Php 我如何从重复购买中获得订阅?,php,recurly,Php,Recurly,我正在建立一个自定义的结帐与。由于我们使用自己的网关逻辑,因此我们被迫使用方法,而不是创建订阅(因为创建订阅不接受网关\u代码作为参数)创建订阅返回创建的订阅-轻松 但是创建采购返回发票收款。可以将其分开,以找到新创建的$subscription对象,但这似乎不是预期的过程。有没有(希望)更干净的方法 我的购买方法如下-参见代码注释 protected static function create_subscription( $user_id, $args ) { $result =

我正在建立一个自定义的结帐与。由于我们使用自己的网关逻辑,因此我们被迫使用方法,而不是创建订阅(因为创建订阅不接受
网关\u代码
作为参数)创建订阅返回创建的订阅-轻松

但是创建采购返回发票收款。可以将其分开,以找到新创建的
$subscription
对象,但这似乎不是预期的过程。有没有(希望)更干净的方法

我的购买方法如下-参见代码注释

protected static function create_subscription( $user_id, $args ) {

    $result = false;

    $purchase = new Recurly_Purchase();
    $purchase->currency          = $args['currency'];
    $purchase->collection_method = 'automatic';
    $purchase->gateway_code      = $args['gateway_code'];

    $account             = new Recurly_Account( $user_id );
    $account->email      = $args['email'];
    $account->first_name = $args['billing_first_name'];
    $account->last_name  = $args['billing_last_name'];
    $account->vat_number = $args['vat_number'];

    $billing_info           = new Recurly_BillingInfo();
    $billing_info->token_id = $args['recurly_token'];

    $account->billing_info = $billing_info;

    $purchase->account = $account;

    $subscription            = new Recurly_Subscription();
    $subscription->plan_code = $args['plan_code'];

    $purchase->subscriptions = array( $subscription );

    try {
        // "invoice" is the method to transact a Recurly_Purchase.
        $purchase = Recurly_Purchase::invoice( $purchase );
        if( $purchase instanceof Recurly_InvoiceCollection ) {
           // this seems incredibly janky and error-prone
           $result = reset( $purchase->charge_invoice->line_items )->subscription->get();
        }
    } catch ( Exception $e ) {
        $result = $e;
    }
    // I need this to return the $subscription object generated by the purchase
    return $result;

}

创建订阅时,成功的响应将包括该订阅的UUID。我不是PHP开发人员,但它可能看起来像这样:

 $subscription = new Recurly_Subscription();
 $subscription->plan_code = $args['plan_code'];
 $subscription->account = $account;
 $subscription->currency = $args['currency'];
 $subscription->create();
 $uuid = isset($subscription->uuid);
 $result = Recurly_Subscription::get($uuid);
 return $result;


另外,请注意,从Recurly API版本2.17+开始,您现在可以将
gateway_code
作为一个body参数传递给,并且您最初希望这样做。此处是指向的链接,它指示更改的时间。

创建订阅时,成功的响应将包括该订阅的UUID。我不是PHP开发人员,但它可能看起来像这样:

 $subscription = new Recurly_Subscription();
 $subscription->plan_code = $args['plan_code'];
 $subscription->account = $account;
 $subscription->currency = $args['currency'];
 $subscription->create();
 $uuid = isset($subscription->uuid);
 $result = Recurly_Subscription::get($uuid);
 return $result;


另外,请注意,从Recurly API版本2.17+开始,您现在可以将
gateway_code
作为一个body参数传递给,并且您最初希望这样做。这里有一个指向的链接,它指明了更改的时间。

谢谢,但我试图从一个
重复\u InvoiceCollection
获取订阅,而不是从头开始创建订阅。我还要注意的是,您仍然无法将
gateway\u code
传递到
create\u purchase
——正如我在问题中指出的那样,出于这个原因,我们不能使用
create\u subscription
。好的,不用担心。对于记录,您可以将
gateway\u code
传递到
create\u purchase
,该参数列在您在原始问题中发布的同一链接的倒数第二个参数中。我的回答引用了
create\u subscription
,但为了清楚起见,我添加了
create\u purchase
的链接。他们声称这是真的,但我已经得到了开发者的独立确认,它仍然不可用。文档错误。谢谢,但我试图从
重复\u InvoiceCollection
获取订阅-而不是从头开始创建订阅。我还要注意的是,您仍然无法将
gateway\u code
传递到
create\u purchase
——正如我在问题中指出的那样,出于这个原因,我们不能使用
create\u subscription
。好的,不用担心。对于记录,您可以将
gateway\u code
传递到
create\u purchase
,该参数列在您在原始问题中发布的同一链接的倒数第二个参数中。我的回答引用了
create\u subscription
,但为了清楚起见,我添加了
create\u purchase
的链接。他们声称这是真的,但我已经得到了开发者的独立确认,它仍然不可用。文件是错误的。