PHPackages                             orq/wxpay - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Payment Processing](/categories/payments)
4. /
5. orq/wxpay

ActiveLibrary[Payment Processing](/categories/payments)

orq/wxpay
=========

PHP WeChat Pay library

v1.0.0(6y ago)0701MITPHP

Since Aug 5Pushed 6y ago1 watchersCompare

[ Source](https://github.com/rockysynergy/wxpay)[ Packagist](https://packagist.org/packages/orq/wxpay)[ RSS](/packages/orq-wxpay/feed)WikiDiscussions master Synced 3d ago

READMEChangelogDependenciesVersions (2)Used By (1)

wxpay
=====

[](#wxpay)

微信支付开发PHP库

安装
==

[](#安装)

`composer require orq/wxpay`

手册
==

[](#手册)

公众号支付
-----

[](#公众号支付)

1. [开发文档](https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_1)
2. 代码调用示例：

```
// 提交订单表单，后台获取支付params后，调用
$.post('/make_order', function (res) {
	jsApiCall(res);
});

// 支付
        //====微信支付
        //调用微信JS api 支付
		let jsApiCall = function jsApiCall(jsApiParameters) {
			WeixinJSBridge.invoke(
				'getBrandWCPayRequest',
				jsApiParameters,
				function (res) {
					WeixinJSBridge.log(res.err_msg);
					switch (res.err_msg){
						case 'get_brand_wcpay_request:cancel':
							alert('请尽快完成支付');
							break;
						case 'get_brand_wcpay_request:fail':
							alert('支付失败')
							break;
						case 'get_brand_wcpay_request:ok':
							alert('已提交审核，通过审核的会员请再次登录发布供需和优品');
							window.location = 'http://whlm.fs007.com.cn/?wd.html';
							break;
					}
					//alert(res.err_code+res.err_desc+res.err_msg);
				}
			);
		};

        let callpay = function callpay() {
            if (typeof WeixinJSBridge == "undefined"){
                alert('uuuuu');
                if( document.addEventListener ){
                    document.addEventListener('WeixinJSBridgeReady', jsApiCall, false);
                }else if (document.attachEvent){
                    document.attachEvent('WeixinJSBridgeReady', jsApiCall);
                    document.attachEvent('onWeixinJSBridgeReady', jsApiCall);
                }
            }else{
                alert("ok");
                jsApiCall(jsApiParameters);
            }
        };
```

```
    // 支付

    public function makeOrder() {
        $prepay_id = $this->makeUnifiedOder($order, 'test_prod', $_GET['code']);
        $JsApi = new \Orq\Wxpay\JsApi();
        $jsApi->setPrepayId($prepay_id);
        return response()->json(json_decode($jsApi->getParameters(), true));
    }

    /**
     * 统一下单
     */
    protected function makeUnifiedOder($order, $item_title, $code) {
        $pay_amount = $order->pay_amount * 100;
        $unifiedOrder = new \Orq\Wxpay\UnifiedOrder();
        $JsApi = new \Orq\Wxpay\JsApi();
        $jsApi->setCode($code);
        $openId = $JsApi->getOpenId();

		$unifiedOrder->setParameter("openid", $openID);
		$unifiedOrder->setParameter("body", $item_title);//商品描述
		//自定义订单号，此处仅作举例
		// $timeStamp = time();
		$unifiedOrder->setParameter("out_trade_no", $order->no);//商户订单号
		$unifiedOrder->setParameter("total_fee", $pay_amount);//总金额以分位单位必须是整数
		$unifiedOrder->setParameter("notify_url",\Orq\Wxpay\$this->config->getAppSecret()NOTIFY_URL);//通知地址
		$unifiedOrder->setParameter("trade_type","JSAPI");//交易类型
		//非必填参数，商户可根据实际情况选填
        // file_put_contents('Debug.txt', date('Y-m-d H:i:s').' Finished settingData:'."\r\n", FILE_APPEND);

        $prepay_id = $unifiedOrder->getPrepayId();
        // file_put_contents('Debug.txt', date('Y-m-d H:i:s').' prepay_id '.$prepay_id."\r\n", FILE_APPEND);
        return $prepay_id;
    }

    // 假如已经有openId则可以使用这个来统一下单
	protected function makeUnifiedOder($order, $item_title) {
		$unifiedOrder = new \Orq\Wxpay\UnifiedOrder();
		$unifiedOrder->setParameter("openid", session('openid'));//用户openid
		$unifiedOrder->setParameter("body", $item_title);//商品描述
		//自定义订单号，此处仅作举例
		$timeStamp = time();
		$unifiedOrder->setParameter("out_trade_no", $order->no);//商户订单号
		$unifiedOrder->setParameter("total_fee", $order->pay_amount_);//总金额
		$unifiedOrder->setParameter("notify_url",$this->config->getAppSecret()NOTIFY_URL);//通知地址
		$unifiedOrder->setParameter("trade_type","JSAPI");//交易类型
		//非必填参数，商户可根据实际情况选填

		$prepay_id = $unifiedOrder->getPrepayId();
        return $prepay_id;
    }

    // 支付通知处理
        public function handleNotify() {
            $str = file_get_contents('php://input');

            $arr = \Orq\Wxpay\Utility::xmlToArray($str);
            $okMsg = ['return_code'=>'SUCCESS', 'return_msg'=>'OK'];

            $orderRepository = new OrderRepository();
            $order = $orderRepository->findByOrderNumber($arr['out_trade_no']);
            if (!$order || $order->getPayStatus()->getKey() == '2') {
                    return \Orq\Wxpay\Utility::arrayToXml($okMsg);
            }

            $sign = $arr['sign'];
            $aSign = \Orq\Wxpay\Utility::getSign(array_diff_key($arr, ['sign'=>'']));
            if ($aSign === $sign) {
                if ($arr['total_fee'] == $order->getPayAmount()*100) {
                    try {
                        $order->setPayStatus('2');
                        $order->setUpdatedAt(date('Y-m-d H:i:s'));
                        $orderRepository->updateOrder($order);
                        return $util->arrayToXml($okMsg);
                    } catch (RepositoryException $e) {
                        Log::error('更新订单支付状态失败！OrderNumber: '.$order->getOrderNumber().' Message: '.$e->getMessage());
                    }
                }
            } else {
                throw new \Exception('签名不符');
            }
        }
```

###  Health Score

26

—

LowBetter than 43% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity8

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity58

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

2370d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/1762050?v=4)[Rocky Ou](/maintainers/rockysynergy)[@rockysynergy](https://github.com/rockysynergy)

---

Top Contributors

[![rockysynergy](https://avatars.githubusercontent.com/u/1762050?v=4)](https://github.com/rockysynergy "rockysynergy (4 commits)")

### Embed Badge

![Health badge](/badges/orq-wxpay/health.svg)

```
[![Health](https://phpackages.com/badges/orq-wxpay/health.svg)](https://phpackages.com/packages/orq-wxpay)
```

###  Alternatives

[omnipay/paypal

PayPal gateway for Omnipay payment processing library

3156.8M53](/packages/omnipay-paypal)[eduardokum/laravel-boleto

Biblioteca com boletos para o laravel

626351.9k2](/packages/eduardokum-laravel-boleto)[tbbc/money-bundle

This is a Symfony bundle that integrates moneyphp/money library (Fowler pattern): https://github.com/moneyphp/money.

1961.9M](/packages/tbbc-money-bundle)[2checkout/2checkout-php

2Checkout PHP Library

83740.3k2](/packages/2checkout-2checkout-php)[smhg/sepa-qr-data

Generate QR code data for SEPA payments

61717.2k5](/packages/smhg-sepa-qr-data)[omnipay/dummy

Dummy driver for the Omnipay payment processing library

271.2M33](/packages/omnipay-dummy)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
