sarahasan / bsecure-payment-plugin-test
bSecure Payment Plugin 是一个 JavaScript 库,允许您安全地处理您的支付。此插件立即创建一个符合 PCI、HIPAA、GDPR 或 CCPA 安全要求的表单。
Requires
- php: >=5.6
- guzzlehttp/guzzle: ^7.1@dev
- rakit/validation: dev-master
Suggests
- guzzlehttp/guzzle: Required to use the bSecure checkout and sso facade and call bSecure server (7.1@dev).
This package is auto-updated.
Last update: 2024-09-18 16:37:06 UTC
README
bSecure Payments
bSecure Payments 是一个库,允许您安全地处理您的支付。此插件立即创建一个符合 PCI、HIPAA、GDPR 或 CCPA 安全要求的表单。
它适用于 桌面、平板电脑 和 移动设备,并持续测试和更新,以提供无缝的支付体验。
bSecure Payment Plugin 简介
此支付网关集成指南是针对商家的技术集成文档,使商家能够集成 bSecure Payment Plugin,允许客户通过互联网执行电子商务交易。
它指导商家如何使用 bSecure 的各种功能。商家可以通过此集成在其电子商务网站上启用信用卡支付
谁应该阅读本指南
本文件旨在为商家的应用程序开发人员和业务分析师提供,使他们能够有效地与 bSecure Payment Plugin 集成。
商家设置过程
为了使用 bSecure Payment Plugin 处理在线支付,商家需要在 bSecure Builder Portal 上注册。
以下过程假定商家已注册,并已配置所有与商家相关的参数。
商家注册 bSecure Builder Portal 并配置其支付网关后,将能够使用提供的示例代码进行测试交易。一旦示例交易成功处理,则表示所有必需的系统已正确配置,商家准备就绪。
获取您的凭据
- 前往 Builder Portal
- 应用程序集成 >> 沙盒/实时
- 从应用程序集成选项卡复制 客户端 ID 并将其保存到安全文件中。
安装
您可以通过 composer 安装此包
composer require bSecure/bsecure-payment-plugin-test
先决条件
PHP 7.2.5 及以上版本
依赖项
"guzzlehttp/guzzle": "^7.2"
使用
配置
a) 设置交易
bSecure Payment Plugin 将从商家网站接收一个包含商家身份验证信息和交易详情的 HTTP POST 请求。支付插件将向客户查询所需详情并处理交易
bSecure Payments
在 app.php 中添加 bSecure 支付提供程序
bSecure\Payments\PaymentServiceProvider::class
添加别名
'BsecurePayments' => bSecure\Payments\BsecurePayments::class
发布语言文件。
php artisan vendor:publish --provider="bSecure\Payments\PaymentServiceProvider"
它将在 resources/lang 文件夹内创建一个 vendor/bSecure 文件夹。如果您想自定义错误消息,您可以覆盖该文件。
发布配置文件
php artisan vendor:publish --provider="bSecure\Payments\PaymentServiceProvider" --tag="config"
将在配置文件夹中放置一个文件(bSecure.php)。
return [ 'client_id' => env('BSECURE_CLIENT_ID', ''), 'environment' => env('BSECURE_INTEGRATION_TYPE'), 'store_id' => env('BSECURE_STORE_SLUG'), ];
示例
创建支付交易
bSecure Payment Plugin 将从商家网站接收一个包含商家身份验证信息和交易详情的 HTTP POST 请求。支付插件将向客户查询所需详情并处理交易
bSecurePaymentTransactionParameters.__00trid__ = ''; bSecurePaymentTransactionParameters.__01curr__ = ''; bSecurePaymentTransactionParameters.__02trdt__ = ''; bSecurePaymentTransactionParameters.__03stamt__ = ''; bSecurePaymentTransactionParameters.__04damt__ = ''; bSecurePaymentTransactionParameters.__05tamt__ = ''; bSecurePaymentTransactionParameters.__06cname__ = ''; bSecurePaymentTransactionParameters.__07ccc__ = ''; bSecurePaymentTransactionParameters.__08cphn__ = ''; bSecurePaymentTransactionParameters.__09cemail__ = ''; bSecurePaymentTransactionParameters.__10ccc__ = ''; bSecurePaymentTransactionParameters.__11cstate__ = ''; bSecurePaymentTransactionParameters.__12ccity__ = ''; bSecurePaymentTransactionParameters.__13carea__ = ''; bSecurePaymentTransactionParameters.__14cfadd__ = ''; bSecurePaymentTransactionParameters.__15mid__ = ''; bSecurePaymentTransactionParameters.__16stid__ = ''; bSecurePaymentTransactionParameters.__17seh__ = ''; bSecurePaymentTransactionParameters.__18ver__ = ''; bSecurePaymentTransactionParameters.__19lan__ = ''; bSecurePaymentTransactionParameters.__20red__ = ''; bSecurePaymentTransactionParameters.__21cenv__ = '';
术语表
b) 计算安全散列
安全哈希用于检测交易请求和响应是否被篡改。为商家在其应用程序集成标签页生成的客户端ID被添加到交易消息中,然后应用SHA256算法生成安全哈希。然后将安全哈希与交易消息一起发送给接收实体。由于接收实体是除了交易发起者之外唯一知道共享密钥的其他实体,因此它重新创建相同的安全哈希并与请求消息中的哈希进行匹配。如果安全哈希匹配,则接收实体继续处理交易。如果不匹配,则假定交易请求已被篡改,将停止处理交易并发送错误消息。这是一个用于确保交易安全的特性,并建议使用。
pp_SecureHash字段用于发起者的共享密钥和交易请求的SHA256安全哈希。安全哈希值是交易请求或响应字段的Hex编码的SHA256输出。字段哈希的顺序如下:
-
共享密钥(PG和商家之间共享),系统生成的值始终是第一个。
-
然后,将所有交易请求字段按字段名称的字母顺序连接到共享密钥中。排序应按每个字段字符串的ASCII值升序进行。如果其中一个字符串是另一个字符串的精确子字符串,则较短的字符串应排在较长的字符串之前。例如,Card应在CardNum之前。
-
字段之间不得有空格或分隔符,并且不得包含任何空终止字符。
例如,如果共享密钥是0F5DD14AE2E38C7EBD8814D29CF6F6F0,并且交易请求包括以下字段
按升序字母顺序输入SHA256哈希的交易请求字段为:
0F5DD14AE2E38C7EBD8814D29CF6F6F02995MER123A48cvE28
安全哈希计算示例0F5DD14AE2E38C7EBD8814D29CF6F6F02995MER123A48cvE28商家还应确保- 使用UTF-8编码将可打印字符串转换为字节数组。注意,7位ASCII编码在UTF-8中未更改。
- 哈希输出必须进行十六进制编码。
注意:为了计算安全哈希,我们使用名为[CryptoJS](https://npmjs.net.cn/package/crypto-js)的库
创建订单
use bSecure\Payments\BsecurePayments;
$order = new BsecurePayments(); $order->setTransactionDetails($orderId); $order->setCustomer($customer); $result = $order->createOrder(); return $result;
在createOrder()响应中,将返回订单有效期、结账URL、订单参考和商户订单ID。
array (
'expiry' => '2020-11-27 10:55:14',
'checkout_url' => 'bSecure-checkout-url',
'store_url' => 'store-url',
'merchant_store_name' => 'your-store-name',
'order_reference' => 'bsecure-reference',
'merchant_order_id' => 'your-order-id'
)
如果您使用的是网络解决方案,则只需将用户重定向到结账URL
if(!empty($result['checkout_url']))
return redirect($result['checkout_url']);
如果您有Android或IOS SDK,则初始化您的SDK并向其提供订单参考
if(!empty($result['order_reference']))
return $result['order_reference'];
在bSecure上成功创建订单后,您将被重定向到bSecure SDK或bSecure结账应用,您将在其中处理结账。
订单放置回调
一旦订单成功放置,bSecure将客户重定向到您在合作伙伴门户的环境设置中“结账重定向URL”中提到的URL,查询字符串中包含一个额外的参数“order_ref”。
订单更新
通过使用在“订单放置回调”中收到的order_ref,您可以调用以下方法来获取订单详细信息。
use bSecure\Payments\BsecurePayments;
$order_ref = $order->order_ref; $orderStatusUpdate = new BsecurePayments(); $result = $orderStatusUpdate->orderStatusUpdates($order_ref); return $result;
订单状态更改Webhook
无论订单状态或支付状态发生任何变化,bSecure都会在您在合作伙伴门户的环境设置中提到的“结账订单状态webhook”URL上发送包含完整订单详情的更新(内容将与订单更新响应相同)。(您的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
}
管理订单和支付
支付状态
订单状态
变更日志
请参阅变更日志获取更多关于最近变更的信息。
许可证
MIT许可证(MIT)。请参阅许可证文件获取更多信息。
贡献
"bSecure – 您的通用结账工具"是开源软件。