<?php $this->head(); ?> </head> <body> <?php $this->beginBody(); ?> <?php use app\models\Wechat; use app\models\MyWechat; Yii::$app->wx->setParameterComm(); Yii::$app->wx->setParameter("body", urlencode("testjsjsjsjsa")); Yii::$app->wx->setParameter("out_trade_no", Wechat::generateOutTradeNo()); Yii::$app->wx->setParameter("total_fee", "1"); Yii::$app->wx->setParameter("spbill_create_ip", "127.0.0.1"); ?> <script language="javascript"> function callpay() { WeixinJSBridge.invoke('getBrandWCPayRequest',<?php echo Yii::$app->wx->create_biz_package(); ?> ,function(res){ WeixinJSBridge.log(res.err_msg); alert(res.err_code+res.err_desc+res.err_msg); if(res.err_msg == 'get_brand_wcpay_request:ok') { alert('ok');
public function actionPaynotifyv2() { U::W(['actionPaynotify', $_GET, $_POST]); // receive the pay notify from wx server and save the order to db // POST data if (Yii::$app->wx->localTest) { $postStr = <<<EOD <xml> <OpenId><![CDATA[111222]]></OpenId> <AppId><![CDATA[wx79c2bf0249ede62a]]></AppId> <IsSubscribe>1</IsSubscribe> <TimeStamp>1369743908</TimeStamp> <NonceStr><![CDATA[YvMZOX28YQkoU1i4NdOnlXB1]]></NonceStr> <AppSignature><![CDATA[a9274e4032a0fec8285f147730d88400392acb9e]]></AppSignature> <SignMethod><![CDATA[sha1]]></SignMethod > </xml> EOD; /* [0] => Array ( [r] => wap/paynotify [bank_billno] => 201408016461876 [bank_type] => 3006 [discount] => 0 [fee_type] => 1 [input_charset] => UTF-8 [notify_id] => 6qgi2XQy3Lg65VTEMfLiX-6o3Yh7d-e8gIVdcWQmUjCH9enV3oNg-8-aWOjbjk2xYbFmi4c0ec5RzldyH7CqFswIdDmAXv7Z [out_trade_no] => 53db6263258cc [partner] => 1220047701 [product_fee] => 1 [sign] => 9C83069BE5AFB74E9A353FC6CD190D05 [sign_type] => MD5 [time_end] => 20140801174831 [total_fee] => 1 [trade_mode] => 1 [trade_state] => 0 [transaction_id] => 1220047701201408013245460110 [transport_fee] => 0 ) // Note: this OpenId and AppId is money receiver woso, not xiangyang! [1] => Array ( [OpenId] => oSHFKsycXkOO3JNwifurCR7Z9-qc [AppId] => wx79c2bf0249ede62a [IsSubscribe] => 0 [TimeStamp] => 1406886511 [NonceStr] => 2AyW087NTmQxIXuf [AppSignature] => a52c16bb2291995b1441b3255f4e3f2a048e8c3c [SignMethod] => sha1 ) */ $_GET['out_trade_no'] = Wechat::generateOutTradeNo(); $_GET['sign'] = 'sign'; $_GET['trade_mode'] = 1; $_GET['trade_state'] = 0; $_GET['partner'] = '1209999999'; $_GET['bank_type'] = 'WX'; $_GET['totel_fee'] = 19900; $_GET['fee_type'] = 1; $_GET['notify_id'] = Wechat::generateOutTradeNo(); $_GET['transaction_id'] = '1209999999' . date('Ymd') . substr(uniqid(), -10); $_GET['time_end'] = date("YmdHis"); } else { $postStr = Yii::$app->wx->getPostStr(); } if (empty($postStr)) { U::W(['No postStr from wx server', __METHOD__, $GLOBALS]); exit; } $arr = (array) simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); //we should check $arr signature first if (Yii::$app->wx->debug) { U::W([$_GET, $arr]); } if (empty($arr['AppId'])) { U::W(['No AppId from wx server', __METHOD__, $postStr]); exit; } // GET data (!isset($_GET['bank_type'])) || if (!isset($_GET['out_trade_no']) || !isset($_GET['sign']) || !isset($_GET['trade_mode']) || !isset($_GET['trade_state']) || !isset($_GET['partner']) || !isset($_GET['total_fee']) || !isset($_GET['fee_type']) || !isset($_GET['notify_id']) || !isset($_GET['transaction_id']) || !isset($_GET['time_end'])) { U::W(['Invalid GET data from wx server...', __METHOD__, $_GET, $_POST]); exit; } //$attach = Yii::$app->request->get('attach', ''); $order = MOrder::findOne($_GET["out_trade_no"]); if ($order === null) { U::W(['oid does not exist!', __METHOD__, $_GET, $_POST]); return 'success'; } if ($_GET['trade_state'] == 0) { $order->status = MOrder::STATUS_SUCCEEDED; } else { U::W(['status error', __METHOD__, $_GET, $_POST]); } $order->notify_id = $_GET['notify_id']; $order->partner = $_GET['partner']; $order->time_end = $_GET['time_end']; $order->total_fee = $_GET['total_fee']; $order->trade_state = $_GET['trade_state']; $order->transaction_id = $_GET['transaction_id']; $order->appid_recv = $arr['AppId']; $order->openid_recv = $arr['OpenId']; $order->issubscribe_recv = $arr['IsSubscribe']; $order->pay_kind = MOrder::PAY_KIND_WECHAT; $order->save(false); if ($_GET['trade_state'] == 0) { Yii::$app->wx->clearGh(); Yii::$app->wx->setAppId($arr['AppId']); $arr = Yii::$app->wx->WxPayDeliverNotify($arr['OpenId'], $_GET['transaction_id'], $_GET["out_trade_no"]); //U::W($arr); try { Yii::$app->wx->clearGh(); Yii::$app->wx->setGhId($order->gh_id); $arr = Yii::$app->wx->WxMessageCustomSend(['touser' => $order->openid, 'msgtype' => 'text', 'text' => ['content' => $order->getWxNotice(true)]]); //U::W($arr); } catch (\Exception $e) { U::W($e->getCode() . ':' . $e->getMessage()); } } else { U::W(['trade_state is not 0', __METHOD__, $_GET, $_POST]); } return 'success'; }