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
的链接。他们声称这是真的,但我已经得到了开发者的独立确认,它仍然不可用。文件是错误的。