bsecure / bsecure-php
bSecure的PHP库。
Requires
- php: >=5.6.0
- ext-curl: *
- ext-json: *
- ext-mbstring: *
This package is auto-updated.
Last update: 2024-09-05 18:21:00 UTC
README
bSecure
bSecure是一个用于两步结账自定义集成的实用库。bSecure库简化了构建者与bSecure服务器之间的通信以及构建者的任务处理。
bSecure Checkout简介
它为您提供了启用通用登录、两步结账、接受多种支付方式以及无烦恼地运行您的电子商务商店的选项。
它适用于桌面、平板电脑和移动设备,并持续进行测试和更新,以为您提供无缝的支付体验。
手动安装
要使用绑定,请包含init.php文件。
require_once('/path/to/bSecure-php/init.php')
先决条件
绑定需要以下扩展才能正常工作
- curl
如果您想手动安装该包,您必须确保这些扩展可用。
文档
访问我们的网站 bSecure,阅读文档并获取支持。
配置设置
遵循几个简单步骤,您可以设置您的bSecure Checkout和单点登录。
获取凭证
- 访问构建者门户
- 应用集成 >> 沙盒/实时
- 选择环境类型(自定义集成)
- 填写以下字段
a. 商店URL在任何情况下都是必需的
b. 登录重定向URL对于功能使用bSecure登录是必需的
c. 结账重定向URL对于功能使用bSecure支付是必需的
d. 结账订单状态webhook对于功能使用bSecure支付是必需的 - 保存您的客户端凭证('和')
- 请确保在您的代码中将凭证保存在安全的地方。
客户端认证
要调用以下提到的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,并在查询字符串中包含两个参数:code和state。
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 – 您的通用结账解决方案"是开源软件。