Пример #1
0
$business->appsecret(APPSECRET);
$business->mch_id(MCHID);
$business->mch_key(MCHKEY);
$order = new Order();
$order->body('iphone 6 plus');
$order->out_trade_no(date('Y-m-dHis') . mt_rand(10000, 99999));
$order->total_fee('1');
$order->openid($request['openid']);
$order->notify_url('Your notify url');
$unifiedorder = new Unifiedorder($business, $order);
$response = $unifiedorder->getResponse();
/**
 * 响应订单
 */
$params = array('return_code' => 'SUCCESS', 'result_code' => 'SUCCESS', 'return_msg' => 'return message', 'appid' => $request['appid'], 'err_code_des' => 'err code description', 'mch_id' => $request['mch_id'], 'nonce_str' => $request['nonce_str'], 'prepay_id' => $response['prepay_id']);
$signGenerator = new SignGenerator($params);
$signGenerator->onSortAfter(function ($that) {
    $that->addParams('key', MCHKEY);
});
$params['sign'] = $signGenerator->getResult();
$xml = Util::array2XML($params);
echo $xml;
// {
//     "appid":"wx345f3830c28971f4",
//     "openid":"oWY-5jjLjo7pYUK86JPpwvcnF2Js",
//     "mch_id":"1241642202",
//     "is_subscribe":"Y",
//     "nonce_str":"fhKb6Fkzm3UJrX95",
//     "product_id":"2015080618052364076",
//     "sign":"1ED0F1A052F5212009E7C5DB89C57789"
// }
Пример #2
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;
 }
Пример #3
0
$requestBag->set('trade_type', 'NATIVE');
// NATIVE 时不需要 Openid
/**
 * 统一下单
 */
$unifiedorder = new Unifiedorder($requestBag, MCHKEY);
try {
    $response = $unifiedorder->getResponse();
} catch (PaymentException $e) {
    exit($e->getMessage());
}
/**
 * 响应订单参数包
 */
$responseBag = new Bag();
$responseBag->set('appid', $request['appid']);
$responseBag->set('mch_id', $request['mch_id']);
$responseBag->set('nonce_str', $request['nonce_str']);
$responseBag->set('prepay_id', $response['prepay_id']);
$responseBag->set('return_code', 'SUCCESS');
$responseBag->set('result_code', 'SUCCESS');
$responseBag->set('return_msg', 'return message');
$responseBag->set('err_code_des', 'err code description');
$signGenerator = new SignGenerator($responseBag);
$signGenerator->onSortAfter(function ($bag) use($unifiedorder) {
    $bag->set('key', $unifiedorder->getKey());
});
$responseBag->set('sign', $signGenerator->getResult());
$responseBag->remove('key');
$xml = Util::array2XML($responseBag->all());
echo $xml;
Пример #4
0
 /**
  * 发送响应
  */
 public function send()
 {
     $response = $this->bag->all();
     $response = Util::array2XML($response);
     echo $response;
 }
Пример #5
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;
 }