tomato-technologies/tomato-omipay

OmiPay for Laravel项目

v1.0.2 2019-01-07 06:34 UTC

This package is not auto-updated.

Last update: 2024-09-24 17:02:02 UTC


README

安装

composer require tomato-technologies/tomato-omipay

Laravel 5.5使用包自动发现,因此不需要您手动添加ServiceProvider。

Laravel 5.5+

如果您不使用自动发现,请在config/app.php中的providers数组中添加ServiceProvider。

Tomato\OmiPay\ServiceProvider::class,

如果您想更容易地访问Pusher或Event类,请在app.php中的外观中添加以下内容

'TomatoOmiPay' => Tomato\OmiPay\Facade::class,

使用方法

在使用之前,请记得在.env文件中设置您的OMIPAY_MERCHANT_NOOMIPAY_MERCHANT_KEY。商户号应包含"M",例如:"000034"。

如果您想获取更多关于此包装器的配置,可以通过运行以下Artisan命令之一将配置文件拉入您的应用程序

php artisan vendor:publish --provider="Tomato\OmiPay\ServiceProvider"

示例代码

创建QR订单

    $qrRequest=new \Tomato\OmiPay\Requests\Payment\QROrderRequest();
    $qrRequest->setOrderName("Test Product 1");
    $qrRequest->setCurrency("AUD");
    $qrRequest->setAmount(1*100);//1 dollar
    $qrRequest->setNotifyUrl(route("opmipay-notification"));
    $qrRequest->setOutOrderNo("10001");
    $qrRequest->setPlatform("ALIPAY");
    $result=\TomatoOmiPay::qrOrder($qrRequest);

    var_dump($result);

您将在var_dump($result)中看到以下内容,然后使用pay_url重定向用户进行支付

array (size=8)
  'order_no' => string 'TR1812060010011263009795' (length=24)
  'qrcode' => string 'https://qr.alipay.com/bax06022po8u7fm93zxp200b' (length=46)
  'pay_url' => string 'https://www.omipay.com.cn/Omipay/H5Pay/QRcode_Pay.html?paycode=TR1812060010011263009795&m_number=0010011263&platform=WECHATPAY&timestamp=1544088240364&nonce_str=jinwuwc8hyzi67itxwf9x0fjxjz00q&sign=F49FC0DFFB81EDF639AB8BF4A0FE7252' (length=229)
  'platform' => string 'ALIPAY' (length=6)
  'error_msg' => null
  'msg' => null
  'success' => boolean true
  'return_code' => string 'SUCCESS' (length=7)

如何接收OmiPay通知的示例

只有经过验证的请求会在此事件上触发,因此不需要检查签名。

在您的EventServiceProvider中监听omipay.got-notification并将其映射到您自己的处理程序。

'omipay.got-notification'=>[
            'App\Http\Controllers\Site\HomeController@onOmipayNotice'
        ],

以下是示例处理程序,$data是一个包含所有请求数据的数组(https://www.omipay.com.au/Help/API_new.html#nine)。

    public function onOmipayNotice($data=[]){
        \Log::info(json_encode($data));
    }

变更日志

2018年12月19日更新

对于任何支持"redirect_url"的Omipay订单,此包将包括"redirect_url"到"pay_url",例如

之前

    $qrRequest=new \Tomato\OmiPay\Requests\Payment\QROrderRequest();
    $qrRequest->setOrderName("Test Product 1");
    $qrRequest->setCurrency("AUD");
    $qrRequest->setAmount(1*100);//1 dollar
    $qrRequest->setNotifyUrl(route("opmipay-notification"));
    $qrRequest->setOutOrderNo("10001");
    $qrRequest->setPlatform("ALIPAY");
    $result=\TomatoOmiPay::qrOrder($qrRequest);
    
    $redirectURL=route("thank-you-page",["order_id"=>10001]);
    $directCusomterToURL=data_get($result,"pay_url")."&redirect_url=".urlencode($redirectURL);

之后

    $qrRequest=new \Tomato\OmiPay\Requests\Payment\QROrderRequest();
    $qrRequest->setOrderName("Test Product 1");
    $qrRequest->setCurrency("AUD");
    $qrRequest->setAmount(1*100);//1 dollar
    $qrRequest->setNotifyUrl(route("opmipay-notification"));
    $qrRequest->setRedirectUrl(route("thank-you-page",["order_id"=>10001]))
    $qrRequest->setOutOrderNo("10001");
    $qrRequest->setPlatform("ALIPAY");
    $result=\TomatoOmiPay::qrOrder($qrRequest);
 
    $directCusomterToURL=data_get($result,"pay_url");