首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP中的Paymill订阅

PHP中的Paymill订阅
EN

Stack Overflow用户
提问于 2013-03-17 18:19:27
回答 2查看 1.8K关注 0票数 1

我正在尝试创建一个订阅I Paymill。我已经通读了他们的例子,但我似乎不太明白。

我真正想做的就是设置一个订阅,下面是我当前的代码:

代码语言:javascript
复制
$token = $_POST['paymillToken'];

if ($token) {
    require "Services/Paymill/Payments.php";
    require "Services/Paymill/Transactions.php";
    require "Services/Paymill/Subscriptions.php";
    require "Services/Paymill/Offers.php";


  $params = array(
    'amount'      => '49900',  // Cent!
    'currency'    => 'SEK',   // ISO 4217
    'token'       => $token,
    'description' => 'User ID# ' . $userIdMain . ' Email: ' . $userEmail
  );

$transactionsObject = new Services_Paymill_Transactions(
    PAYMILL_API_KEY, PAYMILL_API_HOST
);
$transaction        = $transactionsObject->create($params);

echo "<br /><br />";    
print_r($transaction);

echo $transaction['client']['id'];
echo $transaction['payment']['id'];


$params = array(
    'client'   => $transaction['client']['id'],
    'offer'    => 'offer_9cdffb501f565bf827a8',
    'payment'  => $transaction['payment']['id']
);
$subscriptionsObject = new Services_Paymill_Subscriptions(PAYMILL_API_KEY, PAYMILL_API_HOST);
$subscription        = $subscriptionsObject->create($params);

echo "<br /><br />";    
print_r($subscription);

} 

问题是,上面的操作一次创建了两个付款。但是似乎subscription对象要求我首先拥有一个事务(参见上面的$ payment_id‘’payment‘)。

我在这里做错了什么?

EN

回答 2

Stack Overflow用户

发布于 2013-03-18 20:37:28

创建订阅也会创建事务,这是正确的。添加一个Payment对象( https://www.paymill.com/en-gb/documentation-3/reference/api-reference/#create-new-credit-card-payment-with ),而不是创建一个新事务,并将id传递给Subscription->create()。

票数 3
EN

Stack Overflow用户

发布于 2015-01-19 03:45:20

好吧,这不是PHP,但我有同样的不确定性,按照正确的步骤来设置一个订阅。最后,它是一种简单,所以我把我的代码张贴到目前为止,如果它有帮助。

这个应用程序是MVC .net,我正在使用PayMill PayButton生成一个支付令牌。这是注册过程中模型的一部分。下面的代码调用PayMill接口的.net包装器。

代码语言:javascript
复制
   private static async Task<Subscription> MakePayMillSubscription(int amount, ApplicationUser user, PaymillContext paymillContext, Payment payment, Client client)
    {

        SubscriptionService subscriptionService = paymillContext.SubscriptionService;
        Subscription subscription = await subscriptionService.CreateAsync( payment, client, null, amount, "EUR", Interval.periodWithChargeDay(1, Interval.TypeUnit.MONTH), null, user.Id, Interval.period(10, Interval.TypeUnit.YEAR));
        return subscription;
    }

    private static async Task<Client> MakePayMillClient(RegisterViewModel model, ApplicationUser user, PaymillContext paymillContext)
    {

        ClientService clientService = paymillContext.ClientService;
        Client client = await clientService.CreateWithEmailAndDescriptionAsync(
            model.Email,
            user.Id
        );
        return client;
    }

    private static async Task<Payment> MakePayMillPayment(RegisterViewModel model,PaymillContext context, Client client)
    {

        Payment payment = await context.PaymentService.CreateWithTokenAndClientAsync(model.paymillToken, client);

        return payment;
    }

然后我在注册过程中像这样调用它们(我还处于测试阶段)

代码语言:javascript
复制
  client = await MakePayMillClient(model, user, paymillContext);
   payment = await MakePayMillPayment(model, paymillContext,client);
   subscription = await MakePayMillSubscription((int)(account.TotalAmountDue * 100.0M), user, paymillContext, payment, client);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15459655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档