spyrit/smoney

Smoney 客户端

dev-master 2019-08-29 14:18 UTC

This package is auto-updated.

Last update: 2024-08-29 05:03:58 UTC


README

安装

composer install

用法

可以通过 REST 服务使用 S-Money API。

架构

此库基于 GuzzleHttp 和 JMS Serializer 提供了这些服务的实现。为了消费 Web 服务,必须首先创建一个客户端对象和一个包含要发送到 API 的数据的资源外观。

每个客户端都会返回一个包含 Web 服务返回的数据的更新后的外观对象。

配置

客户端需要提供 API URL、您的密钥令牌以及要使用的 API 版本(请参阅官方文档,以确定每个 Web 服务的正确版本)。

版本可以在构造函数中定义,并可以使用 setVersion 方法可选地覆盖。

$client->setVersion('v1');

示例

用户

$token = '<secret_token>';
$version = 'v1';
$userClient = new UserClient(
    'https://rest-pp.s-money.fr/api/sandbox',
    $token,
    $version,
    new GuzzleHttp\Client(),
    JMS\Serializer\SerializerBuilder::create()->build()
);

创建简单用户

创建简单用户及其属性

$user = new UserFacade();
$user->appUserId = 'ALFRED';

/* Then, more complex attributes */

/* profile attribute */
$user->profile = new UserProfileFacade();
$user->profile->firstName = 'toto';
$user->profile->lastName = 'foo';
$user->profile->birthdate = new DateTime('1989-08-02T00:00:00', new DateTimeZone('Europe/Paris'));

/* address attribute which is UserFacade::$profile attribute */
$user->profile->address = new AddressFacade();
$user->profile->address->country = 'US';

/* Then we POST the $user */
$userClient->create($user);

商业用户

您只需将 'UserFacade' 的 type 属性设置为 2,并将 company 属性设置为 namesiret

$user = new UserFacade();
//...
$user->type = 2;
$user->company = new CompanyFacade();
$user->company->name = 'HELLO LTD';
$user->company->siret = 'XXXXXXXX';

$userClient->create($user);

卡片支付

$cardPaymentClient = new CardPaymentClient(
    'https://rest-pp.s-money.fr/api/sandbox',
    $token,
    $version,
    new Client(),
    SerializerBuilder::create()->build()
);

简单支付

$cardPayment = new CardPaymentFacade();

$cardPayment->urlReturn = 'http://callback_after_payment.com';
$cardPayment->amount = 2;
$cardPayment->beneficiary = new SubAccountRefFacade();
$cardPayment->beneficiary->appAccountId = 'client-112';

$cardPaymentClient->create($appUserId, $cardPayment);

多个受益人

为此服务使用 API v2。

$cardPayment = new CardPaymentFacade();
$cardPayment->urlReturn = 'http://callback_after_payment.com';
$cardPayment->payments = new ArrayCollection();

$first = new PaymentFacade();
$first->beneficiary = new subAccountFacade();
$first->beneficiary->appAccountId = 'ALFRED';
$first->amount = 1500; // 15€ (amount in cents)

$cardPayment->payments->add($first);

$second = new PaymentFacade;
//...
$cardPayment->payments->add($second);

$cardPaymentClient->create($cardPayment);

通过 id 获取一个 CardPayment

$cardPaymentClient->get($orderId);

列出所有 CardPayments

$cardPaymentClient->index();

支付

$payoutClient = new PayoutClient(
    'https://rest-pp.s-money.fr/api/sandbox',
    $token,
    $version,
    new Client(),
    SerializerBuilder::create()->build()
);

创建支付

$payout = new PayoutFacade();
$payout->orderId = 'hello';
$payout->amount = 99;
$payout->bankAccount = new BankAccountFacade;
$payout->bankAccount->id = 25923;

$payoutClient->create('<appUserId>', $payout);

付款

$paymentClient = new PaymentClient(
    'https://rest-pp.s-money.fr/api/sandbox',
    $token,
    $version,
    new Client(),
    SerializerBuilder::create()->build()
);

创建付款

$payment = new PaymentFacade();
$payment->beneficiary = new SubAccountRefFacade();
$payment->beneficiary->appAccountId = 'YOUR PAL';
$payment->sender = new SubAccountRefFacade();
$payment->sender->appAccountId = 'ALFRED';
$payment->amount = 99;

$paymentClient->create('<appUserId>', $payment);