bsecure/bsecure-php

1.0.3 2021-03-05 11:15 UTC

This package is auto-updated.

Last update: 2024-09-05 18:21:00 UTC


README

Latest Version on Packagist Latest Stable Version Total Downloads License Build Status Code Coverage Scrutinizer Code Quality

bSecure

bSecure是一个用于两步结账自定义集成的实用库。bSecure库简化了构建者与bSecure服务器之间的通信以及构建者的任务处理。

bSecure Checkout简介

它为您提供了启用通用登录两步结账、接受多种支付方式以及无烦恼地运行您的电子商务商店的选项。
它适用于桌面平板电脑移动设备,并持续进行测试和更新,以为您提供无缝的支付体验。

手动安装

要使用绑定,请包含init.php文件。

require_once('/path/to/bSecure-php/init.php')

先决条件

绑定需要以下扩展才能正常工作

  • curl

如果您想手动安装该包,您必须确保这些扩展可用。

文档

访问我们的网站 bSecure,阅读文档并获取支持。

配置设置

遵循几个简单步骤,您可以设置您的bSecure Checkout单点登录

获取凭证

  1. 访问构建者门户
  2. 应用集成 >> 沙盒/实时
  3. 选择环境类型(自定义集成)
  4. 填写以下字段
    a. 商店URL在任何情况下都是必需的
    b. 登录重定向URL对于功能使用bSecure登录是必需的
    c. 结账重定向URL对于功能使用bSecure支付是必需的
    d. 结账订单状态webhook对于功能使用bSecure支付是必需的
  5. 保存您的客户端凭证('和')
  6. 请确保在您的代码中将凭证保存在安全的地方。

客户端认证

要调用以下提到的bSecure功能,您首先必须认证您的客户端。以下函数将用于认证您的客户端

\bSecure\bSecure::setClientId('<YOUR-CLIENT-ID>');
\bSecure\bSecure::setClientSecret('<YOUR-CLIENT-SECRET>');
\bSecure\bSecure::setAppEnvironment('<YOUR-APP-ENVIRONMENT>');
\bSecure\bSecure::getAuthToken();

<YOUR-CLIENT-ID>和<YOUR-CLIENT-SECRET>可以从构建者门户为您的应用程序获取。

我们建议在以下每个函数调用之前调用此函数,以保持认证更新

  • create_order
  • order_status
  • get_customer_profile

bSecure Checkout

创建订单

要创建订单,您应该有订单_id、客户、费用和产品对象参数,这些参数在创建订单之前需要设置。

创建订单请求参数
产品对象

产品对象应采用以下格式

"products": [
  {
  "id": "product-id",
  "name": "product-name",
  "sku": "product-sku",
  "quantity": 0,
  "price": 0,
  "sale_price": 0,
  "image": "product-image",
  "description": "product-description",
  "short_description": "product-short-description"
  }
]
运输对象

运输对象应采用以下格式

1- 如果商户希望使用他预指定的运输方式,则应在以下格式中传递运输方式详情

"shipment": {
  "charges": "numeric",
  "method_name": "string"
}
客户对象

客户对象应采用以下格式

1- 如果客户已经通过bSecure在您的系统中登录,并且您有客户的认证码,则只需在客户对象中传递该代码,无需其余字段。

2- 由于客户对象中的所有字段都是可选的,如果您没有关于客户的信息,则只需传递空对象,或者如果您有客户详细信息,则您的客户对象应采用以下格式

"customer": {
  "name": "string",
  "email": "string",
  "country_code": "string",
  "phone_number": "string",
}
费用对象

费用对象应采用以下格式

"order_charge" : {
  "sub_total" : "float",
  "discount" : "float",
  "total" : "float",
}

创建订单

\bSecure\Order::setOrderId('<YOUR-ORDER-ID>');
\bSecure\Order::setCustomer($customer);
\bSecure\Order::setShipmentDetails($shipment);
\bSecure\Order::setCartItems($products);
\bSecure\Order::setCharges($charges);
$result = \bSecure\Order::createOrder();
return $result;

在响应createOrder()时,将返回订单有效期、结账URL、订单参考和商户订单ID。

array (
  'expiry' => '2020-11-27 10:55:14',
  'checkout_url' => 'bSecure-checkout-url',
  'store_url' => 'store-url',
  'order_reference' => 'bsecure-reference',
  'merchant_order_id' => '<YOUR-ORDER-ID>',
) 

如果您正在使用Web解决方案,请直接将用户重定向到checkout_url

if(!empty($result['checkout_url']))
return redirect($result['checkout_url']); 

当在bSecure上成功创建订单后,您将被重定向到bSecure结账应用程序,在那里您将处理您的结账。

如果您有Android或IOS SDK,请初始化您的SDK并向其提供order_reference、checkout_url和store_url。

if(!empty($result']))
return $result; 

订单放置回调

一旦订单成功放置,bSecure将重定向客户到您在Builder's Portal环境设置中提到的“结账重定向url”,并在查询字符串中包含一个额外的参数order_ref

订单更新

您可以通过在“订单放置回调”中收到的order_ref调用以下方法来获取订单详细信息。

$order_ref = $order->order_ref;

$result =  \bSecure\Order::orderStatus($order_ref);
return $result;

订单状态变更Webhook

每当订单状态或支付状态发生变化时,bSecure将向您发送包含完整订单详情的更新(内容将与您在Builder's Portal的环境设置中提到的“结账订单状态webhook”URL上提到的Order Updates相同)。(您的webhook必须能够接受POST请求)。

在“订单放置回调”和“订单更新”的响应中,您将收到以下格式的完整订单详情。

{
  "status": 200,
  "message": [
    "Request Successful"
  ],
  "body": {
    "merchant_order_id": "your-order-id",
    "order_ref": "bsecure-order-reference",
    "order_type": "App/Manual/Payment gateway",
    "placement_status": "6",
    "payment_status": null,
    "customer": {
      "name": "",
      "email": "",
      "country_code": "",
      "phone_number": "",
      "gender": "",
      "dob": ""
    },
    "payment_method": {
      "id": 5,
      "name": "Debit/Credit Card"
    },
    "card_details": {
      "card_type": null,
      "card_number": null,
      "card_expire": null,
      "card_name": null
    },
    "delivery_address": {
      "country": "",
      "province": "",
      "city": "",
      "area": "",
      "address": "",
      "lat": "",
      "long": ""
    },
    "shipment_method": {
      "id": 0,
      "name": "",
      "description": "",
      "cost": 0
    },
    "items": [
      {
        "product_id": "",
        "product_name": "",
        "product_sku": "",
        "product_qty": ""
      },
    ],
    "created_at": "",
    "time_zone": "",
    "summary": {
      "total_amount": "",
      "sub_total_amount": "",
      "discount_amount": "",
      "shipment_cost": "",
      "merchant_service_charges": ""
    }
  },
  "exception": null
}

管理订单和支付

支付状态

订单状态

bSecure单点登录(SSO)

验证客户端

您可以通过调用以下提到的函数来验证您的客户端

保存提供的state,因为在成功的授权回调中您将收到相同的state。

$client = bSecure\SSO::clientAuthenticate($state);
return redirect($client['redirect_url']); 

clientAuthenticate()的响应将返回一个redirect_url,您需要将客户重定向到该url。

array (
  "redirect_url": "<SSO-REDIRECT-LINK>",
)

客户端授权

在成功授权后,
bSecure将重定向到您在Builder's Portal设置环境时提供的url,并在查询字符串中包含两个参数:codestate

eg: https://my-store.com/sso-callback?code=abc&state=xyz

在上面的回调中收到的code是客户的auth_code,它将被进一步用于获取客户资料。

验证回调

通过将回调中收到的state与在发送客户端认证请求之前存储在数据库中的值进行匹配来验证state,只有在两个值匹配时才应继续操作。

获取客户资料

从“客户端授权”收到的auth_code应传递到以下方法以获取客户资料。

return bSecure\SSO::customerProfile('<AUTH-CODE>');

响应将返回客户姓名、电子邮件、电话号码、国家代码和地址簿。

array (
    'name' => 'customer-name',
    'email' => 'customer-email',
    'phone_number' => 'customer-phone-number',
    'country_code' => customer-phone-code,
    'address' => 
        array (
          'country' => '',
          'state' => '',
          'city' => '',
          'area' => '',
          'address' => '',
          'postal_code' => '',
        ),
)

变更日志

有关最近更改的更多信息,请参阅CHANGELOG

许可

MIT许可(MIT)。有关更多信息,请参阅许可文件

贡献

"bSecure – 您的通用结账解决方案"是开源软件。