travela/sslcommerz
最新稳定版本:v1.1.0
Composer 安装命令:
composer require travela/sslcommerz
包简介
SSLCommerz Payment Gateway Package for Laravel.
README 文档
README
SSLCommerz is the first payment gateway in Bangladesh opening doors for merchants to receive payments on the internet via their online stores.
Official documentation here.
Installation
$ composer require travela/sslcommerz
Vendor
$ php artisan vendor:publish --provider="SSLCZ\SSLCommerz\SSLCommerzServiceProvider"
A file sslcommerz.php will be added to config directory after running above command. We need to setup our configuration to .env file as follows:
STORE_ID="your-store-id" STORE_PASSWORD="your-store-password" IS_PRODUCTION=false
For deveopment mode we need to set IS_PRODUCTION=false, and for production mode IS_PRODUCTION=true. Please go through the official docs of SSLCommerz for further information.
Usage
Initiate a payment
$sslcommerz = new SSLCommerz(); $sslcommerz->setPaymentDisplayType('hosted'); // enum('hosted', 'checkout') $sslcommerz->setPrimaryInformation([ 'total_amount' => 1000, 'currency' => 'BDT', ]); $sslcommerz->setTranId('your-transaction-id'); // set your transaction id here $sslcommerz->setSuccessUrl('http://www.example.com/success'); $sslcommerz->setFailUrl('http://www.example.com/fail'); $sslcommerz->setCancelUrl('http://www.example.com/cancel'); $sslcommerz->setCustomerInformation([ 'cus_name' => 'John Doe', 'cus_email' => 'john.doe@yahoo.com', 'cus_add1' => 'Dhaka', 'cus_add2' => 'Dhaka', 'cus_city' => 'Dhaka', 'cus_state' => 'Dhaka', 'cus_postcode' => '1000', 'cus_country' => 'Bangladesh', 'cus_phone' => '+880**********', ]); $sslcommerz->setShipmentInformation([ 'ship_name' => 'Store Test', 'ship_add1' => 'Dhaka', 'ship_add2' => 'Dhaka', 'ship_city' => 'Dhaka', 'ship_state' => 'Dhaka', 'ship_postcode' => '1000', 'ship_country' => 'Bangladesh', 'shipping_method' => 'NO', ]); $sslcommerz->setAdditionalInformation([ 'value_a' => 'CPT-112-A', 'value_b' => 'CPT-112-B', 'value_c' => 'CPT-112-C', 'value_d' => 'CPT-112-D', ]); $sslcommerz->setEmiOption(1); // enum(1, 0) $sslcommerz->setProductInformation([ 'product_name' => 'Computer', 'product_category' => 'Goods', 'product_profile' => 'physical-goods', ]); $sslcommerz->setCart([ ['product' => 'Product X', 'amount' => '2000.00'], ['product' => 'Product Y', 'amount' => '4000.00'], ['product' => 'Product Z', 'amount' => '8000.00'], ]); $sslcommerz->setProductAmount('1000'); $sslcommerz->setVat('100'); $sslcommerz->setDiscountAmount('0'); $sslcommerz->setConvenienceFee('50'); $response = $sslcommerz->initPayment($sslcommerz);
Set store information dynamically
$sslcommerz = new SSLCommerz([ 'store_id' => 'your-store-id', 'store_password' => 'your-store-password', 'is_production' => false ]);
Response
You will get a response after initiating a payment by which you can deal with. You can see a sample response format in the official documentation.
Hosted Payment Integration
// Controller $sslcommerz = new SSLCommerz(); $sslcommerz->setPaymentDisplayType('hosted'); // --- $response = $sslcommerz->initPayment($sslcommerz); return redirect($response['GatewayPageURL']); // redirect to gateway page url
Easy Checkout Integration
// View(js) - Step 1 (function (window, document) { var loader = function () { var script = document.createElement("script"), tag = document.getElementsByTagName("script")[0]; script.src = "{{ 'Sandbox or Live(Production) Script' }}" + Math.random().toString(36).substring(7); tag.parentNode.insertBefore(script, tag); }; window.addEventListener ? window.addEventListener("load", loader, false) : window.attachEvent("onload", loader); })(window, document); /* Sandbox Script URL: https://sandbox.sslcommerz.com/embed.min.js? Live or Production Script URL: https://seamless-epay.sslcommerz.com/embed.min.js? */
<!-- View(js) - Step 2 --> <button class="your-button-class" id="sslczPayBtn" token="if you have any token validation" postdata="your javascript arrays or objects which requires in backend" order="If you already have the transaction generated for current order" endpoint="{{ 'your-easy-checkout-pay-url' }}" > Pay Now </button>
// Controller $sslcommerz = new SSLCommerz(); $sslcommerz->setPaymentDisplayType('checkout'); // --- $response = $sslcommerz->initPayment($sslcommerz); echo $sslcommerz->formatCheckoutResponse($response); // show easycheckout pay popup
Disable CSRF Protection
Disable CSRF protection for the following URL's.
init-payment-via-ajaxurlsuccessurlfailurlcancelurlipnurl
Disable them from VerifyCsrfToken middleware.
// VerifyCsrfToken.php protected $except = [ '/init-payment-via-ajax', '/success', '/cancel', '/fail', '/ipn' ];
Order Validation
$sslcommerz = new SSLCommerz(); $response = $sslcommerz->orderValidate([ 'val_id' => $request->input('val_id'), 'store_id' => 'your-store-id', // Optional: by default `$sslcommerz->getStoreId()` 'store_password' => 'your-store-password', // Optional: by default `$sslcommerz->getStorePassword()` 'v' => '1', // Optional: by default `1` 'format' => 'json' // Optional: by default `json` ]);
Transaction Query
$sslcommerz = new SSLCommerz(); // by Transaction Id $response = $sslcommerz->transactionQueryById([ 'tran_id' => $request->input('tran_id'), 'store_id' => 'your-store-id', // Optional: by default `$sslcommerz->getStoreId()` 'store_password' => 'your-store-password', // Optional: by default `$sslcommerz->getStorePassword()` ]); // by Session Id $response = $sslcommerz->transactionQueryBySessionId([ 'sessionkey' => 'initiated-session-key', 'store_id' => 'your-store-id', // Optional: by default `$sslcommerz->getStoreId()` 'store_password' => 'your-store-password', // Optional: by default `$sslcommerz->getStorePassword()` ]);
Refund
$sslcommerz = new SSLCommerz(); // Initiate $response = $sslcommerz->refundPayment([ 'bank_tran_id' => $request->input('bank_tran_id'), 'store_id' => 'your-store-id', // Optional: by default `$sslcommerz->getStoreId()` 'store_password' => 'your-store-password', // Optional: by default `$sslcommerz->getStorePassword()` 'refund_amount' => 1000, 'refund_remarks' => 'your-refund-remarks', 'refe_id' => 'your-ref-id', // Optional 'format' => 'json', // Optional: by default `json` ]); // Status $response = $sslcommerz->refundStatus([ 'refund_ref_id' => 'refund-ref-id', 'store_id' => 'your-store-id', // Optional: by default `$sslcommerz->getStoreId()` 'store_password' => 'your-store-password', // Optional: by default `$sslcommerz->getStorePassword()` ]);
Available Env's & API's
Environments: getApiEnvironment()
- sandbox (
IS_PRODUCTIONfalse) - production (
IS_PRODUCTIONtrue)
Domains: getApiDomain()
- sandbox (https://sandbox.sslcommerz.com)
- production (https://securepay.sslcommerz.com)
APIs:
getApiUrl()([api_domain]/gwprocess/v4/api.php)getOrderValidateApiUrl()([api_domain]/validator/api/validationserverAPI.php)getTransactionStatusApiUrl()([api_domain]/validator/api/merchantTransIDvalidationAPI.php)getRefundPaymentApiUrl()([api_domain]/validator/api/merchantTransIDvalidationAPI.php)getRefundStatusApiUrl()([api_domain]/validator/api/merchantTransIDvalidationAPI.php)
Available Methods
Environment & domain related configuration:
| Method Name | Param Info | Description |
|---|---|---|
getApiEnvironment() |
API environment: sandbox or production. | |
setApiEnvironment() |
string |
Set API environment: sandbox or production only. |
getApiDomain() |
API domain: for example https://sandbox.sslcommerz.com or https://securepay.sslcommerz.com |
|
isProductionMode() |
Get production_mode. | |
setProductionMode() |
boolean |
Set production_mode. By default, production_mode sets by IS_PRODUCTION value. |
API url configuration:
| Method Name | Param Info | Description |
|---|---|---|
getApiUrl() |
Get payment initiate api url. | |
setApiUrl() |
string |
Set payment initiate api url. By default, api url sets based on IS_PRODUCTION value. If IS_PRODUCTION = true, live api url will be set and for IS_PRODUCTION = false sandbox api url will be set. |
getTransactionStatusApiUrl() |
Get transaction status api url. | |
setTransactionStatusApiUrl() |
string |
Set transaction status api url. |
getOrderValidateApiUrl() |
Get order validation api url. | |
setOrderValidateApiUrl() |
string |
Set order validation api url. |
getRefundPaymentApiUrl() |
Get refund payment api url. | |
setRefundPaymentApiUrl() |
string |
Set refund payment api url. |
getRefundStatusApiUrl() |
Get refund status api url. | |
setRefundStatusApiUrl() |
string |
Set refund status api url. |
Set information as a compact:
| Method Name | Param Info | Description |
|---|---|---|
getPrimaryInformation() |
Get primary information such as:
store_id, store_passwd, total_amount, currency, tran_id, success_url, fail_url, cancel_url and other optional information. |
|
setPrimaryInformation() |
array() |
Set primary information.
Required parameter key elements:
|
getCustomerInformation() |
Get customer information such as:
cus_name, cus_email, cus_add1, cus_add2, cus_city, cus_postcode, cus_country, cus_phone and other optional information. |
|
setCustomerInformation() |
array() |
Set customer information.
Required parameter key elements:
|
getProductInformation() |
Get product information such as:
product_name, product_category, product_profile and other optional information. |
|
setProductInformation() |
array() |
Set product information.
Required parameter key elements:
|
getShipmentInformation() |
Get shipment information such as:
shipping_method, num_of_item and other optional information. |
|
setShipmentInformation() |
array() |
Set shipment information.
Required parameter key elements:
|
getEmiInformation() |
Get EMI information such as:
emi_option and other optional information. |
|
setEmiInformation() |
array() |
Set EMI information.
Required parameter key elements:
|
getAdditionalInformation() |
Get additional information such as:
value_a, value_b, value_c, value_d. |
|
setAdditionalInformation() |
array() |
Set additional information.
Optional parameter key elements:
|
Other getters and setters:
| Method Name | Param Info | Description |
|---|---|---|
getPaymentDisplayType() |
Get payment display type. | |
setPaymentDisplayType()* |
enum('hosted', 'checkout') |
Set payment display type. Default value is checkout. |
getStoreId() |
Get SSLCommerz store_id. | |
setStoreId()* |
string |
Set SSLCommerz store_id. Default value sets by STORE_ID value. |
getStorePassword() |
Get SSLCommerz store_passwd. | |
setStorePassword()* |
string |
Set SSLCommerz store_passwd. Default value sets by STORE_PASSWORD value. |
getTotalAmount() |
Get total_amount of transaction. | |
setTotalAmount()* |
decimal |
Set total_amount of transaction. The transaction amount must be from 10.00 BDT to 500000.00 BDT |
getCurrency() |
Get currency type. Example: BDT, USD, EUR, SGD, INR, MYR, etc | |
setCurrency()* |
string |
Set currency type. |
getTranId() |
Get unique tran_id to identify order. | |
setTranId()* |
string |
Set tran_id to unify your order. |
getSuccessUrl() |
Get callback success_url. | |
setSuccessUrl()* |
string |
Set callback success_url where user will redirect after successful payment. |
getFailUrl() |
Get callback fail_url. | |
setFailUrl()* |
string |
Set callback fail_url where user will redirect after any failure occurs during payment. |
getCancelUrl() |
Get callback cancel_url. | |
setCancelUrl()* |
string |
Set callback cancel_url where user will redirect if user cancels the transaction. |
getIpnUrl() |
Get Instant Payment Notification ipn_url. | |
setIpnUrl() |
string |
Set ipn_url. Enable instant payment notification option so that SSLCommerz can send the transaction's status to ipn_url. |
getMultiCardName() |
Get multi_card_name. | |
setMultiCardName() |
string |
Set multi_card_name. Use it only if gateway list needs to be customized. |
getAllowedBin() |
Get allowed_bin. | |
setAllowedBin() |
string |
Set allowed_bin. Use it only if transaction needs to be controlled. |
getCustomerName() |
Get cus_name. | |
setCustomerName()* |
string |
Set cus_name. |
getCustomerEmail() |
Get cus_email. | |
setCustomerEmail()* |
string |
Set cus_email. |
getCustomerAddress1() |
Get cus_add1. | |
setCustomerAddress1()* |
string |
Set cus_add1. |
getCustomerAddress2() |
Get cus_add2. | |
setCustomerAddress2() |
string |
Set cus_add2. |
getCustomerCity() |
Get cus_city. | |
setCustomerCity()* |
string |
Set cus_city. |
getCustomerState() |
Get cus_state. | |
setCustomerState() |
string |
Set cus_state. |
getCustomerPostCode() |
Get cus_postcode. | |
setCustomerPostCode()* |
string |
Set cus_postcode. |
getCustomerCountry() |
Get cus_country. | |
setCustomerCountry()* |
string |
Set cus_country. |
getCustomerPhone() |
Get cus_phone. | |
setCustomerPhone()* |
string |
Set cus_phone. |
getCustomerFax() |
Get cus_fax. | |
setCustomerFax() |
string |
Set cus_fax. |
getProductName() |
Get product_name. | |
setProductName()* |
string |
Set product_name. |
getProductCategory() |
Get product_category. | |
setProductCategory()* |
string |
Set product_category. |
getProductProfile() |
Get product_profile. | |
setProductProfile()* |
string |
Set product_profile.
Available keys:
|
getProductHoursTillDeparture() |
Get hours_till_departure. | |
setProductHoursTillDeparture()** |
string |
Set hours_till_departure. Required if product_profile is airline-tickets. |
getProductFlightType() |
Get flight_type. | |
setProductFlightType()** |
string |
Set flight_type. Required if product_profile is airline-tickets. |
getProductPnr() |
Get pnr. | |
setProductPnr()** |
string |
Set pnr. Required if product_profile is airline-tickets. |
getProductJourneyFromTo() |
Get journey_from_to. | |
setProductJourneyFromTo()** |
string |
Set journey_from_to. Required if product_profile is airline-tickets. |
getProductThirdPartyBooking() |
Get third_party_booking. | |
setProductThirdPartyBooking()** |
string |
Set third_party_booking. Required if product_profile is airline-tickets. |
getProductHotelName() |
Get hotel_name. | |
setProductHotelName()** |
string |
Set hotel_name. Required if product_profile is travel-vertical. |
getProductLengthOfStay() |
Get length_of_stay. | |
setProductLengthOfStay()** |
string |
Set length_of_stay. Required if product_profile is travel-vertical. |
getProductCheckInTime() |
Get check_in_time. | |
setProductCheckInTime()** |
string |
Set check_in_time. Required if product_profile is travel-vertical. |
getProductHotelCity() |
Get hotel_city. | |
setProductHotelCity()** |
string |
Set hotel_city. Required if product_profile is travel-vertical. |
getProductType() |
Get product_type. | |
setProductType()** |
string |
Set product_type. Required if product_profile is telecom-vertical. |
getProductTopUpNumber() |
Get topup_number. | |
setProductTopUpNumber()** |
string |
Set topup_number. Required if product_profile is telecom-vertical. |
getProductCountryTopUp() |
Get country_topup. | |
setProductCountryTopUp()** |
string |
Set country_topup. Required if product_profile is telecom-vertical. |
getCart() |
Get cart. | |
setCart() |
json |
Set cart. JSON data with two elements. product: Max 255 characters, quantity: Quantity in numeric value and amount: Decimal (12,2). Example: [{"product":"DHK TO BRS AC A1","quantity":"1","amount":"200.00"},{"product":"DHK TO BRS AC A2","quantity":"1","amount":"200.00"},{"product":"DHK TO BRS AC A3","quantity":"1","amount":"200.00"},{"product":"DHK TO BRS AC A4","quantity":"2","amount":"200.00"}] |
getProductAmount() |
Get product_amount. | |
setProductAmount() |
decimal |
Set product_amount. |
getVat() |
Get vat. | |
setVat() |
decimal |
Set vat. |
getDiscountAmount() |
Get discount_amount. | |
setDiscountAmount() |
decimal |
Set discount_amount. |
getConvenienceFee() |
Get convenience_fee. | |
setConvenienceFee() |
decimal |
Set convenience_fee. |
getShippingMethod() |
Get shipping_method of the order. | |
setShippingMethod()* |
string |
Set shipping_method of the order. Example: YES or NO or Courier. |
getShippingItemNumber() |
Get num_of_item of product. | |
setShippingItemNumber()* |
integer |
Set num_of_item of product will be shipped. |
getShippingName() |
Get ship_name of address. | |
setShippingName()** |
string |
Set ship_name of address. Required if shipping_method is YES. |
getShippingAddress1() |
Get ship_add1. | |
setShippingAddress1()** |
string |
Set ship_add1. Required if shipping_method is YES. |
getShippingAddress2() |
Get ship_add2. | |
setShippingAddress2() |
string |
Set ship_add2. |
getShippingCity() |
Get ship_city. | |
setShippingCity()** |
string |
Set ship_city. Required if shipping_method is YES. |
getShippingState() |
Get ship_state. | |
setShippingState() |
string |
Set ship_state. |
getShippingPostCode() |
Get ship_postcode. | |
setShippingPostCode()** |
string |
Set ship_postcode. Required if shipping_method is YES. |
getShippingCountry() |
Get ship_country. | |
setShippingCountry()** |
string |
Set ship_country. Required if shipping_method is YES. |
getEmiOption() |
Get emi_option. | |
setEmiOption()* |
integer |
Set emi_option. Value must be 1 or 0. |
getEmiMaxInstOption() |
Get emi_max_inst_option. | |
setEmiMaxInstOption() |
integer |
Set emi_max_inst_option. |
getEmiSelectedInst() |
Get emi_selected_inst. | |
setEmiSelectedInst() |
integer |
Set emi_selected_inst. |
getEmiAllowOnly() |
Get emi_allow_only. | |
setEmiAllowOnly() |
integer |
Set emi_allow_only. Value must be 1 or 0. This parameter depends on emi_option and emi_selected_inst |
getAdditionalValueA() |
Get value_a. | |
setAdditionalValueA() |
string |
Set value_a. |
getAdditionalValueB() |
Get value_b. | |
setAdditionalValueB() |
string |
Set value_b. |
getAdditionalValueC() |
Get value_c. | |
setAdditionalValueC() |
string |
Set value_c. |
getAdditionalValueD() |
Get value_d. | |
setAdditionalValueD() |
string |
Set value_d. |
* = Required and ** = Dependently Required.
License
统计信息
- 总下载量: 65
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2023-04-01