コード例 #1
0
ファイル: UnifiedOrderTest.php プロジェクト: codelint/wechat
 public function testGetPrepareId()
 {
     $unifiedOrder = new UnifiedOrder();
     $unifiedOrder->init($this->config);
     $unifiedOrder->setParameter('out_trade_no', time());
     $unifiedOrder->setParameter('total_fee', 1);
     $unifiedOrder->setParameter('body', 'pay 1 fen');
     $unifiedOrder->setParameter('trade_type', 'JSAPI');
     $_SERVER['REMOTE_ADDR'] = '127.0.0.1';
     $unifiedOrder->setParameter('openid', $this->config['open_id']);
     $unifiedOrder->setParameter('notify_url', 'http://m.qiaocat.com');
     $res = $unifiedOrder->getResult();
     $this->assertEquals('SUCCESS', $res['return_code']);
 }
コード例 #2
0
ファイル: Api.php プロジェクト: wayhood/wxpay
 /**
  * 
  * 统一下单,UnifiedOrder中out_trade_no、body、total_fee、trade_type必填
  * appid、mchid、spbill_create_ip、nonce_str不需要填入
  * @param UnifiedOrder $inputObj
  * @param int $timeOut
  * @throws Exception
  * @return 成功时返回,其他抛异常
  */
 public static function unifiedOrder($inputObj, $timeOut = 6)
 {
     $url = "https://api.mch.weixin.qq.com/pay/unifiedorder";
     //检测必填参数
     if (!$inputObj->IsOut_trade_noSet()) {
         throw new Exception("缺少统一支付接口必填参数out_trade_no!");
     } else {
         if (!$inputObj->IsBodySet()) {
             throw new Exception("缺少统一支付接口必填参数body!");
         } else {
             if (!$inputObj->IsTotal_feeSet()) {
                 throw new Exception("缺少统一支付接口必填参数total_fee!");
             } else {
                 if (!$inputObj->IsTrade_typeSet()) {
                     throw new Exception("缺少统一支付接口必填参数trade_type!");
                 }
             }
         }
     }
     //关联参数
     if ($inputObj->GetTrade_type() == "JSAPI" && !$inputObj->IsOpenidSet()) {
         throw new Exception("统一支付接口中,缺少必填参数openid!trade_type为JSAPI时,openid为必填参数!");
     }
     if ($inputObj->GetTrade_type() == "NATIVE" && !$inputObj->IsProduct_idSet()) {
         throw new Exception("统一支付接口中,缺少必填参数product_id!trade_type为JSAPI时,product_id为必填参数!");
     }
     //异步通知url未设置,则使用配置文件中的url
     if (!$inputObj->IsNotify_urlSet()) {
         $inputObj->SetNotify_url(Config::NOTIFY_URL);
         //异步通知url
     }
     $inputObj->SetAppid(Config::APPID);
     //公众账号ID
     $inputObj->SetMch_id(Config::MCHID);
     //商户号
     $inputObj->SetSpbill_create_ip($_SERVER['REMOTE_ADDR']);
     //终端ip
     //$inputObj->SetSpbill_create_ip("1.1.1.1");
     $inputObj->SetNonce_str(self::getNonceStr());
     //随机字符串
     //签名
     $inputObj->SetSign();
     $xml = $inputObj->ToXml();
     $startTimeStamp = self::getMillisecond();
     //请求开始时间
     $response = self::postXmlCurl($xml, $url, false, $timeOut);
     $result = Results::Init($response);
     self::reportCostTime($url, $startTimeStamp, $result);
     //上报请求花费时间
     return $result;
 }
コード例 #3
0
<?php 
/**
 * Native(原生)支付-模式二-demo
 * ====================================================
 * 商户生成订单,先调用统一支付接口获取到code_url,
 * 此URL直接生成二维码,用户扫码后调起支付。
 * 
*/
include_once "./WxPayHelper/WxPayHelper.php";
//使用统一支付接口
$unifiedOrder = new UnifiedOrder();
//设置统一支付接口参数
//设置必填参数
//appid已填,商户无需重复填写
//mch_id已填,商户无需重复填写
//noncestr已填,商户无需重复填写
//spbill_create_ip已填,商户无需重复填写
//sign已填,商户无需重复填写
$unifiedOrder->setParameter("body", "贡献一分钱");
//商品描述
//自定义订单号,此处仅作举例
$timeStamp = time();
$out_trade_no = WxPayConf::APPID . "{$timeStamp}";
$unifiedOrder->setParameter("out_trade_no", "{$out_trade_no}");
//商户订单号
$unifiedOrder->setParameter("total_fee", "1");
//总金额
$unifiedOrder->setParameter("notify_url", WxPayConf::NOTIFY_URL);
//通知地址
$unifiedOrder->setParameter("trade_type", "NATIVE");
//交易类型
コード例 #4
0
$jsApi = new JsApi();
//=========步骤1:网页授权获取用户openid============
//通过code获得openid
if (!isset($_GET['code'])) {
    //触发微信返回code码
    $url = $jsApi->createOauthUrlForCode(WxPayConf::JS_API_CALL_URL);
    Header("Location: {$url}");
} else {
    //获取code码,以获取openid
    $code = $_GET['code'];
    $jsApi->setCode($code);
    $openid = $jsApi->getOpenId();
}
//=========步骤2:使用统一支付接口,获取prepay_id============
//使用统一支付接口
$unifiedOrder = new UnifiedOrder();
//设置统一支付接口参数
//设置必填参数
//appid已填,商户无需重复填写
//mch_id已填,商户无需重复填写
//noncestr已填,商户无需重复填写
//spbill_create_ip已填,商户无需重复填写
//sign已填,商户无需重复填写
$unifiedOrder->setParameter("openid", "{$openid}");
//商品描述
$unifiedOrder->setParameter("body", "贡献一分钱");
//商品描述
//自定义订单号,此处仅作举例
$timeStamp = time();
$out_trade_no = $jsApi->wxPayConfig->APPID . "{$timeStamp}";
$unifiedOrder->setParameter("out_trade_no", "{$out_trade_no}");
コード例 #5
0
if (!isset($_GET['code'])) {
    //触发微信返回code码
    $url = $jsApi->createOauthUrlForCode(WxPayConf::JS_API_CALL_URL . "?confirm=" . $_POST['orderid'] . "_" . $_POST['amount']);
    //error_log("url: ".$url);
    header("Location: {$url}");
} else {
    //获取code码,以获取openid
    $code = $_GET['code'];
    $confirm = explode("_", $_GET['confirm']);
    //error_log("confirm: ".$confirm[1]);
    $jsApi->setCode($code);
    $openid = $jsApi->getOpenId();
}
//=========步骤2:使用统一支付接口,获取prepay_id============
//使用统一支付接口
$unifiedOrder = new UnifiedOrder();
//设置统一支付接口参数
//设置必填参数
//appid已填,商户无需重复填写
//mch_id已填,商户无需重复填写
//noncestr已填,商户无需重复填写
//spbill_create_ip已填,商户无需重复填写
//sign已填,商户无需重复填写
$unifiedOrder->setParameter("openid", $openid);
//openid
$unifiedOrder->setParameter("body", "充值杀价币");
//商品描述
$unifiedOrder->setParameter("out_trade_no", $confirm[0]);
//商户订单号
$unifiedOrder->setParameter("total_fee", $confirm[1] * 100);
//总金额