guanhui07/newebpay

Payment solution of NewebPay(藍新金流), implementing by pure PHP

v1.1.2 2021-07-19 14:35 UTC

This package is auto-updated.

Last update: 2024-11-27 10:27:52 UTC


README

程式版本 1.5
文件版本 1.0.4
Official Doc

feature

  • 多功能收款 MPG
  • 單筆交易狀態查詢
  • 信用卡取消授權
  • 信用卡請退款
  • 信用卡定期定額

How to use

信用卡定期定額

建立交易資訊 (BasicInfo)

  • $order: 你的訂單物件, 務必實作package 中的OrderInterface
  • $contact: 你的付款人物件, 務必實作package 中的ContactInterface
  • $periodStartType: 檢查卡號模式, 參閱文件p.13
  • $version: 串接程式版本
    • 帶入 1.0 版本,則[背面末三碼]將為必填欄位
    • 帶入 1.1 版本,則[背面末三碼]將為非必填
$info = new \fall1600\Package\Newebpay\Info\Period\BasicInfo($order, $payer, $periodStartType, $version);

選填參數

$info = new ReturnUrl($info, 'https://your.return.url');
$info = new NotifyUrl($info, 'https://your.notify.url');
$info = new BackUrl($info, 'https://your.back.url');
$info = new Memo($info, 'your memo here');

建立NewebPay 物件, 注入商店資訊, 帶著交易資訊前往藍新申請定期定額

  • $merchantId: 你在藍新商店代號
  • $hashKey: 你在藍新商店專屬的HashKey
  • $hashIv: 你在藍新商店專屬的HashIV
$newebpay = new NewebPay();
$newebpay
    ->setIsProduction(false) // 設定環境, 預設就是走正式機
    ->setMerchant(new Merchant($merchantId, $hashKey, $hashIv))
    ->issue($info);

請在你的訂單物件實作 OrderInterface

<?php

namespace Your\Namespace;

use fall1600\Package\Newebpay\Contracts\Period\OrderInterface;

class Order implements OrderInterface
{
    // your order detail...
}

請在你的付款人(假設是Member), 實作ContactInterface

<?php

namespace Your\Namespace;

use fall1600\Package\Newebpay\Contracts\Period\ContactInterface;

class Member implements ContactInterface
{
    // your member detail...
}

各種url 你分的清楚嗎?

多功能收款

建立交易資訊 (BasicInfo)

  • $merchantId: 你在藍新申請的商店代號
  • $notifyUrl: 用來接收藍新付款通知的callback url
  • $order: 你的訂單物件, 務必實作package 中的OrderInterface
  • $payer: 你的付款人物件, 務必實作package 中的PayerInterface
$info = new BasicInfo($merchantId, $notifyUrl, $order, $payer);

依場景開啟各種付款方式, 有需要再啟用即可

// 啟用信用卡
$info = new EnableCredit($info);
// 啟用3, 6, 12 期分期付款
$info = new PayInInstallments($info, '3,6,12');
// 啟用超商條碼
$info = new EnableBarcode($info);
// 啟用Google Pay
$info = new EnableGooglePay($info);
// 啟用Web ATM
$info = new EnableWebAtm($info);
// 搭配非即時交易, 設定藍新通知付款資訊的callback url, 以及繳費期限
$info = new OfflinePay($info, $customerUrl, $ttl);
// 在藍新交易完成後導回的網址
$info = new PayComplete($info, $returnUrl);
// 設定讓消費者在付款頁按下返回時可以回導的頁面
$info = new PayCancel($info, $clientBackUrl);

// 文件末有付款方式對應表

建立NewebPay 物件, 注入商店資訊, 帶著交易資訊前往藍新付款

  • $merchantId: 你在藍新商店代號
  • $hashKey: 你在藍新商店專屬的HashKey
  • $hashIv: 你在藍新商店專屬的HashIV
$newebpay = new NewebPay();
$newebpay
    ->setIsProduction(false) // 設定環境, 預設就是走正式機
    ->setMerchant(new Merchant($merchantId, $hashKey, $hashIv))
    ->checkout($info);

請在你的訂單物件實作 OrderInterface

<?php

namespace Your\Namespace;

use fall1600\Package\Newebpay\Contracts\OrderInterface;

class Order implements OrderInterface
{
    // your order detail...
}

請在你的付款人(假設是Member), 實作PayerInterface

<?php

namespace Your\Namespace;

use fall1600\Package\Newebpay\Contracts\PayerInterface;

class Member implements PayerInterface
{
    // your member detail...
}

解開來自藍新的交易通知

$isValid = $merchant->setRawData($request->all())->validateResponse(); //確認為true 後再往下走

// response 封裝了通知交易的結果, 以下僅列常用methods
$response = $merchant->getResponse();
// 付款成敗
$response->getStatus();
// 取得交易序號
$response->getTradeNo();
// 取得訂單編號, 就是OrderInterface 實作的getMerchantOrderNo
$response->getMerchantOrderNo();
// 付款時間
$response->getPayTime();

支付寶 (AliPay)

支付寶付款需提供的參數更多

  • $payer: 你的付款人物件, 務必實作package 中的AliPayPayerInterface
  • $numberOfProducts: 此訂單的品項數量(integer)
  • $product1: 第一個品項(實作AliPayProductInterface)
  • $product2: 第二個品項(實作AliPayProductInterface)
$info = new AliPayBasicInfo($merchantId, $notifyUrl, $order, $payer, $numberOfProducts);
$info = new EnableAliPay($info);

$info = new AliPayProduct($info, 1, $product1);
$info = new AliPayProduct($info, 2, $product2);

單筆交易查詢

$resp = $newebpay
    ->setMerchant($merchant)
    ->query($order);

各種url 你分的清楚嗎?

付款方式對應的物件