Пример #1
0
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",
Пример #2
0
<?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",
Пример #3
0
 /**
  * 获取统一下单结果
  */
 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;
 }
Пример #4
0
 /**
  * 获取统一下单结果
  */
 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;
 }