require './config.php'; use Thenbsp\Wechat\Util\Util; use Thenbsp\Wechat\Util\Json; use Thenbsp\Wechat\Util\Cache; try { $cache = new Cache('../Storage'); } catch (\Exception $e) { exit($e->getMessage()); } if (!($request = @file_get_contents('php://input'))) { exit('Invalid Request'); } /** * 微信服务器请求过来的数据 */ $request = Util::XML2Array($request); $cache->set('payment_notify', $request); // 微信服务器会在支付成功后该求该 URL,以 XML 的方式提交此次支付信息,具体信息类似: // { // "appid":"wx345f3830c28971f4", // "bank_type":"CFT", // "cash_fee":"1", // "fee_type":"CNY", // "is_subscribe":"Y", // "mch_id":"1241642202", // "nonce_str":"fTbkMTXgMmnvTaO1", // "openid":"oWY-5jjLjo7pYUK86JPpwvcnF2Js", // "out_trade_no":"124164220220150803161536", // "result_code":"SUCCESS", // "return_code":"SUCCESS", // "sign":"4B8948BD3E831394C956B5DFA8AAEB1E",
<?php require './config.php'; use Thenbsp\Wechat\Util\Util; use Thenbsp\Wechat\Util\Json; use Thenbsp\Wechat\Util\Cache; try { $cache = new Cache('../Storage'); } catch (\Exception $e) { exit($e->getMessage()); } if ($request = @file_get_contents('php://input')) { $content = Util::XML2Array($request); $cache->set('payment_notify', Json::encode($content)); } // 微信服务器会在支付成功后该求该 URL,以 XML 的方式提交此次支付信息,具体信息类似: // { // "appid":"wx345f3830c28971f4", // "bank_type":"CFT", // "cash_fee":"1", // "fee_type":"CNY", // "is_subscribe":"Y", // "mch_id":"1241642202", // "nonce_str":"fTbkMTXgMmnvTaO1", // "openid":"oWY-5jjLjo7pYUK86JPpwvcnF2Js", // "out_trade_no":"124164220220150803161536", // "result_code":"SUCCESS", // "return_code":"SUCCESS", // "sign":"4B8948BD3E831394C956B5DFA8AAEB1E", // "time_end":"20150803161547", // "total_fee":"1",
/** * 获取统一下单结果 */ public function getResponse() { $signGenerator = new SignGenerator($this->bag); $signGenerator->onSortAfter(function ($bag) { $bag->set('key', $this->key); }); // 生成签名 $sign = $signGenerator->getResult(); // 生成签名后移除 Key $this->bag->remove('key'); // 调置签名 $this->bag->set('sign', $sign); $body = Util::array2XML($this->bag->all()); $response = Request::post(static::UNIFIEDORDER_URL, $body, false); $response = Util::XML2Array($response); if (isset($response['result_code']) && $response['result_code'] === 'FAIL') { throw new PaymentException($response['err_code'] . ': ' . $response['err_code_des']); } if (isset($response['return_code']) && $response['return_code'] === 'FAIL') { throw new PaymentException($response['return_code'] . ': ' . $response['return_msg']); } return $response; }
/** * 获取统一下单结果 */ public function getResponse() { $params = $this->order->getParams(); $params['appid'] = $this->business->getParams('appid'); $params['mch_id'] = $this->business->getParams('mch_id'); ksort($params); $sign = http_build_query($params); $sign = urldecode($sign) . '&key=' . $this->business->getParams('mch_key'); $sign = strtoupper(md5($sign)); $params['sign'] = $sign; $request = Util::array2XML($params); $response = $this->curl->post(static::UNIFIEDORDER_URL, $request); if (empty($response)) { throw new PaymentException(sprintf('Get Unifiedorder Failure: %s', $this->curl->error())); } $object = Util::XML2Array($response); if (isset($object['result_code']) && $object['result_code'] === 'FAIL') { throw new PaymentException($object['err_code'] . ': ' . $object['err_code_des']); } if (isset($object['return_code']) && $object['return_code'] === 'FAIL') { throw new PaymentException($object['return_code'] . ': ' . $object['return_msg']); } return $object; }