php-cpm / omnipay-wechatpay
Wechat gateway for Omnipay payment processing library
Requires
- omnipay/common: ~3.0
- php-http/guzzle6-adapter: ^1.1
Requires (Dev)
- omnipay/tests: ~3.0
This package is auto-updated.
Last update: 2024-12-06 10:07:13 UTC
README
本项目基于Omnipay 3.0分支开发,依赖版本较新,也可能会带来不稳定的可能。
增加子商户模式 增加沙箱模式 子商户模式支持小程序的sub_appid和sub_openid传递
WechatPay driver for the Omnipay PHP payment processing library
Omnipay is a framework agnostic, multi-gateway payment processing library for PHP 5.3+. This package implements WechatPay support for Omnipay.
Installation
Omnipay is installed via Composer. To install, simply add it
to your composer.json
file:
"php-cpm/omnipay-wechatpay": "^3.0",
And run composer to update your dependencies:
$ composer update -vvv
Basic Usage
The following gateways are provided by this package:
- WechatPay (Wechat Common Gateway) 微信支付通用网关
- WechatPay_App (Wechat App Gateway) 微信APP支付网关
- WechatPay_Native (Wechat Native Gateway) 微信原生扫码支付支付网关
- WechatPay_Js (Wechat Js API/MP Gateway) 微信网页、公众号、小程序支付网关
- WechatPay_Pos (Wechat Micro/POS Gateway) 微信刷卡支付网关
- WechatPay_Mweb (Wechat H5 Gateway) 微信H5支付网关
Usage
Create Order doc
//gateways: WechatPay_App, WechatPay_Native, WechatPay_Js, WechatPay_Pos, WechatPay_Mweb, WechatPay_Lite $gateway = Omnipay::create('WechatPay_App'); $gateway->setAppId($config['app_id']); $gateway->setMchId($config['mch_id']); $gateway->setApiKey($config['api_key']); $order = [ 'body' => 'The test order', 'out_trade_no' => date('YmdHis').mt_rand(1000, 9999), 'total_fee' => 1, //=0.01 'spbill_create_ip' => 'ip_address', 'fee_type' => 'CNY' ]; /** * @var Omnipay\WechatPay\Message\CreateOrderRequest $request * @var Omnipay\WechatPay\Message\CreateOrderResponse $response */ $request = $gateway->purchase($order); $response = $request->send(); //available methods $response->isSuccessful(); $response->getData(); //For debug $response->getAppOrderData(); //For WechatPay_App $response->getJsOrderData(); //For WechatPay_Js $response->getCodeUrl(); //For Native Trade Type
Notify doc
$gateway = Omnipay::create('WechatPay'); $gateway->setAppId($config['app_id']); $gateway->setMchId($config['mch_id']); $gateway->setApiKey($config['api_key']); $response = $gateway->completePurchase([ 'request_params' => file_get_contents('php://input') ])->send(); if ($response->isPaid()) { //pay success var_dump($response->getRequestData()); }else{ //pay fail }
Query Order doc
$response = $gateway->query([ 'transaction_id' => '1217752501201407033233368018', //The wechat trade no ])->send(); var_dump($response->isSuccessful()); var_dump($response->getData());
Close Order doc
$response = $gateway->close([ 'out_trade_no' => '201602011315231245', //The merchant trade no ])->send(); var_dump($response->isSuccessful()); var_dump($response->getData());
Refund doc
$gateway->setCertPath($certPath); $gateway->setKeyPath($keyPath); $response = $gateway->refund([ 'transaction_id' => '1217752501201407033233368018', //The wechat trade no 'out_refund_no' => $outRefundNo, 'total_fee' => 1, //=0.01 'refund_fee' => 1, //=0.01 ])->send(); var_dump($response->isSuccessful()); var_dump($response->getData());
QueryRefund doc
$response = $gateway->queryRefund([ 'refund_id' => '1217752501201407033233368018', //Your site trade no, not union tn. ])->send(); var_dump($response->isSuccessful()); var_dump($response->getData());
Shorten URL (for WechatPay_Native
) doc
$response = $gateway->shortenUrl([ 'long_url' => $longUrl ])->send(); var_dump($response->isSuccessful()); var_dump($response->getData()); var_dump($response->getShortUrl());
Query OpenId (for WechatPay_Pos
) doc
$response = $gateway->shortenUrl([ 'auth_code' => $authCode ])->send(); var_dump($response->isSuccessful()); var_dump($response->getData()); var_dump($response->getOpenId());
For general usage instructions, please see the main Omnipay repository.
Related
Support
If you are having general issues with Omnipay, we suggest posting on Stack Overflow. Be sure to add the omnipay tag so it can be easily found.
If you want to keep up to date with release anouncements, discuss ideas for the project, or ask more detailed questions, there is also a mailing list which you can subscribe to.
If you believe you have found a bug, please report it using the GitHub issue tracker, or better yet, fork the library and submit a pull request.