Omnipay-WeChat

May 10, 2016 ยท View on GitHub

WeChat Payment driver for the Omnipay PHP payment processing library

Build Status Build Status Coverage Status Packagist Status Packagist Downloads

Deprecated We suggest you to use @lokielse's implementation of WeChatPay for Omnipay at lokielse/omnipay-wechatpay.

There's a pre-built Payment Gateway based on Omnipay at labs7in0/E-cash.

Installation

Omnipay is installed via Composer. To install, simply add it to your composer.json file:

{
    "require": {
        "labs7in0/omnipay-wechat": "dev-master"
    }
}

And run composer to update your dependencies:

$ curl -s http://getcomposer.org/installer | php
$ php composer.phar update

Basic Usage

The following gateways are provided by this package:

  • WeChat Express (WeChat NATIVE)

For general usage instructions, please see the main Omnipay repository.

Example

Make a payment

The WeChat NATIVE payment gateway return a URI which can be opened within WeChat In-App broswer, you can generate a QR code with the URI.

$omnipay = Omnipay::create('WeChat_Express');

$omnipay->setAppId('app_id'); // App ID of your WeChat MP account
$omnipay->setAppKey('app_key'); // App Key of your WeChat MP account
$omnipay->setMchId('partner_id'); // Partner ID of your WeChat merchandiser (WeChat Pay) account

$params = array(
    'out_trade_no' => time() . rand(100, 999), // billing id in your system
    'notify_url' => $notify_url, // URL for asynchronous notify
    'body' => $billing_desc, // A simple description
    'total_fee' => 0.01, // Amount with less than 2 decimals places
    'fee_type' => 'CNY', // Currency name from ISO4217, Optional, default as CNY
);

$response = $omnipay->purchase($params)->send();

$qrCode = new Endroid\QrCode\QrCode(); // Use Endroid\QrCode to generate the QR code
$qrCode
    ->setText($response->getRedirectUrl())
    ->setSize(120)
    ->setPadding(0)
    ->render();

Verify a payment (especially for asynchronous notify)

completePurchase for Omnipay-WeChat does not require the same arguments as when you made the initial purchase call. The only required parameter is out_trade_no (the billing id in your system) or transaction_id (the trade number from WeChat).

$omnipay = Omnipay::create('WeChat_Express');

$omnipay->setAppId('app_id'); // App ID of your WeChat MP account
$omnipay->setAppKey('app_key'); // App Key of your WeChat MP account
$omnipay->setMchId('partner_id'); // Partner ID of your WeChat merchandiser (WeChat Pay) account

$params = array(
    'out_trade_no' => $billing_id, // billing id in your system
    //or you can use 'transaction_id', the trade number from WeChat
);

$response = $omnipay->completePurchase($params)->send();

if ($response->isSuccessful() && $response->isTradeStatusOk()) {
    $responseData = $response->getData();

    // Do something here
}

Donate us

License

The MIT License (MIT)

More info see LICENSE