前言
之前有机会做微信支付的时候,我刚好辞职啦,这一次,有机会做了,今天花点时间来研究一下,不过到最后,需要微信审核一些东西,所以今天也做不成了,整理一下思路,等待微信审核吧,然后再继续研究…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
/*微信支付*/ public function actionWecahtPay($url){ $wecaht = new Wechats($this->actionConfig()); $timestamp = time();//时间戳 $nonceStr = $wecaht->generateNonceStr($length=16); //随机字符串 $package = $this->actionUnifiedorder($nonceStr);//统一下单接口 $signType = 'MD5'; $jsTicket = $wecaht->getJsTicket($this->actionConfig()['appid']); $string = "jsapi_ticket=$jsTicket&noncestr=$nonceStr×tamp=$timestamp&url=$url"; $signature = sha1($string); $signPackage = array( "appId" => $this->actionConfig()['appid'], "nonceStr" => $nonceStr, "timestamp" => $timestamp, 'package'=>$package, "url" => $url, "signature" => $signature, ); return $signPackage; } /*微信支付统一下单接口*/ public function actionUnifiedorder($nonceStr=''){ $TempArr = array( 'appid'=>$this->actionConfig()['appid'], 'mch_id'=>'',//商户ID 'device_info'=>'WEB',//终端设备号 'nonce_str'=>$nonceStr,//随机字符串 'body'=>'',//商品或支付单简要描述 'detail'=>'',//商品详情 'attach'=>'',//附加数据 'out_trade_no'=>'',//商户订单号 'fee_type'=>'',//货币类型 'total_fee'=>'',//订单总金额,单位为分 'spbill_create_ip'=>'',//APP和网页支付提交用户端ip 'time_start'=>'',//交易起始时间,格式为yyyyMMddHHmmss 'time_expire'=>'', 'goods_tag'=>'',//商品标记,代金券或立减优惠功能的参数 'notify_url'=>'',//接收微信支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数。 'trade_type'=>'',//交易类型,取值如下:JSAPI,NATIVE,APP, 'product_id'=>'',//商品ID,trade_type=NATIVE,此参数必传。此id为二维码中包含的商品ID,商户自行定义。 'limit_pay'=>'',//no_credit--指定不能使用信用卡支付 'openid'=>'',//用户标识,用户的openid ); ksort($TempArr); $TempSign = $this->actionToUrlParams($TempArr); $TempSign = sha1($TempSign); $TempArr['sign'] = $TempSign; $Result = https_request('https://api.mch.weixin.qq.com/pay/unifiedorder',$TempArr); } /*拼接字符串*/ public function actionToUrlParams($urlObj) { $buff = ""; foreach ($urlObj as $k => $v) { if($k != "sign"){ $buff .= $k . "=" . $v . "&"; } } $buff = trim($buff, "&"); return $buff; } |