自己的HTML5商城可否不在微信上可否发邮件里打开调用微信上可否发邮件支付

其他回答(3)
园豆:1093
园豆:1093
你好,请问你找到答案了吗,能分享一下吗,我现在也在做这种微信支付,可不知道该参考哪个文档
https://pay./wiki/doc/api/wap.php?chapter=15_4
这个是非微信浏览器打开微信支付的文档
&&&您需要以后才能回答,未注册用户请先。微信支付开发(APP)的各种坑,.net和iOS的各种陷阱,解决.net调用下单接口提示无权限,解决iOS跳转到微信支付页面中间只有一个确定按钮
时间: 07:04:14
&&&& 阅读:23754
&&&& 评论:
&&&& 收藏:0
标签:直入主题之前,请容我吐槽一下微*的官方东西:ASDFQ%#$%$#$%^#$%DSFQ#$%.......;吐槽玩了!大家心照就好。
要完成手机APP跳转到微信的APP进行微信支付,需要进行如下操作:
1、先去微信的开放平台()进行开发者账号的注册。
2、新建一个APP应用,然后填写必填信息提交审核。
3、进入APP应用,在接口信息中,进行申请&获得微信支付能力&的功能,期间会提交相关的公司营业信息证明等。
通过以上三点,然后经过漫长的等待之后,基本都可以申请下来的,这里不细说申请细节了,讲个大概,基本都能应付。
基本的对接流程在这里有细说()
在进行服务端对接之前,需要用到如下信息:
/* 微信app key 这两个就是我们上面申请的APP得到的*/W_APP_IDW_APP_SECRET//商户号W_MCH_ID--这个也是需要登录商户平台进行获得//API密钥,在商户平台设置W_API_KEY--这个需要登录商户平台进行获得
商户平台的登录地址()
一、.net服务端的对接:
1、直接上微信的SDK列表下载.net的SDK()
2、要先知道一点,下载回来的SDK是没有具体包含&统一下单API&的,只包含了这个&刷卡支付、微信内网页支付、扫码支付&
3、下载回来的SDK中,第一次运行是运行不了的,需要对代码进行设置
  1)对上面四个参数进行配置,具体在lib\Config.cs文件中
  2)屏蔽掉lib\HttpService.cs的代理访问:(这东西基本可以不用使用到)
4、通过以上的几步配置,基本可以运行了
5、还有一个点,我们点击Default.aspx页面上的按钮,链接过去的地址要注意一下,其实不是我们的测试工程,而是paysdk.的,这个需要改成是我们的测试功能才行(这个是比较吭的)。
6、如何对接&统一下单API&,最基本的做法就是打开business\JsApiPay.cs文件,然后拷贝GetUnifiedOrderResult方法直接用,但是如果拷贝这个方法用的时候,会提示&无权限调用&。其实最根本的错误在于我们传递的trade_type为JSAPI导致的,所以拷贝过来使用的时候,需要做如下的更新:(为什么要这样了,原因很简单,这个方法的用途本来就是给JSAPI的,我们是要使用trade_type为APP进行调用,这些参数当然要变拉)
只要这些字段即可,其余的可有可无,都不影响,到了这点,你运行&统一下单&功能,就会返回prepay_id了,也就是支付ID。
至此,通过这些设置,基本都可能成功。
二、iOS的对接,最常用的致命弱点就是,我把官方的请求地址换成了自己之后,点击支付测试,跳转到微信支付的页面时,中间就只出现了一个&确定&按钮,点击之后返回到原APP,提示&支付失败,xxx -2&这样的提示。
1、如果你有这些提示了,我可以很肯定的告诉你,你的sign错了,而且是用错了,你不应该直接用服务端返回的sign,这个根本不是一回事。
2、切记,客户端的sign字段,是要自己生成的。
3、还要切记,服务端返回的那一串json,最有用而且最优价值的就唯一一个prepay_id,其余的基本不需要。
4、官方的iOS SDK中,包含了两个方法(sendpay_demo、sendpay),这也是最容易错的,我们在对接的时候,选择sendpay的方法,也就是这个:
这个方法的东西其实是不完整,最明显,我们把网络请求改了之后,再把所用到的参数赋值,然后就没有然后了,根本调不起来,压根就没反应,原因是缺少了package参数值,这个是固定的(Sign=WXPay)
5、改了第四点之后,肯定是能调用起来的了,但是确不能支付,sign错误导致的,至此,你应该把注意力集中到sendpay_demo的方法中去,不要再使用sendpay方法了
只需要把刚才获取的prepay_id替换掉,立马就能正常使用支付功能,如下位置的参数替换成我们网络请求返回的的就行了:
总结,希望此篇文章对正在做微信支付对接的哥们有帮助,也让大家少走一些弯路,如果觉得合适,可以顺手点个赞,以此鼓励鼓励。thanks标签:
&&国之画&&&& &&&&chrome插件&&
版权所有 京ICP备号-2
迷上了代码!基于H5的微信支付开发详解
这里我附上此次开发中的完整代码供大家阅读:
控制器:Wxpay.php
defined('BASEPATH')&OR&exit('No&direct&script&access&allowed');&
class&Wxpay&extends&MY_Controller&{&
&&&&public&function&__construct()&{&
&&&&&&&&parent::__construct();&
&&&&&&&&$this-&load-&model('wxpay_model');&
&&&&public&function&index()&{&
&&&&&&&&$this-&smarty['wxPayUrl']&=&$this-&wxpay_model-&retWxPayUrl();&
&&&&&&&&$this-&displayView('wxpay/index.tpl');&
&&&&public&function&confirm($orderId)&{&
&&&&&&&&$this-&ensureLogin();&
&&&&&&&&$order&=&$this-&wxpay_model-&get($orderId);&
&&&&&&&&$this-&_verifyUser($order);&
&&&&&&&&$orderData&=&$this-&returnOrderData[$orderId];&
&&&&&&&&$wxJsApiData&=&$this-&wxpay_model-&wxPayJsApi($orderData);&
&&&&&&&&$this-&smartyData['wxJsApiData']&=&json_encode($wxJsApiData,&JSON_UNESCAPED_UNICODE);&
&&&&&&&&$this-&smartyData['order']&=&$orderData;&
&&&&&&&&$this-&displayView('wxpay/confirm.tpl');&
&&&&public&function&pay_callback()&{&
&&&&&&&&$postData&=&'';&
&&&&&&&&if&(file_get_contents("php://input"))&{&
&&&&&&&&&&&&$postData&=&file_get_contents("php://input");&
&&&&&&&&}&else&{&
&&&&&&&&&&&&return;&
&&&&&&&&}&
&&&&&&&&$payInfo&=&array();&
&&&&&&&&$notify&=&$this-&wxpay_model-&wxPayNotify($postData);&
&&&&&&&&if&($notify-&checkSign&==&TRUE)&{&
&&&&&&&&&&&&if&($notify-&data['return_code']&==&'FAIL')&{&
&&&&&&&&&&&&&&&&$payInfo['status']&=&FALSE;&
&&&&&&&&&&&&&&&&$payInfo['msg']&=&'通信出错';&
&&&&&&&&&&&&}&elseif&($notify-&data['result_code']&==&'FAIL')&{&
&&&&&&&&&&&&&&&&$payInfo['status']&=&FALSE;&
&&&&&&&&&&&&&&&&$payInfo['msg']&=&'业务出错';&
&&&&&&&&&&&&}&else&{&
&&&&&&&&&&&&&&&&$payInfo['status']&=&TRUE;&
&&&&&&&&&&&&&&&&$payInfo['msg']&=&'支付成功';&
&&&&&&&&&&&&&&&&$payInfo['sn']=substr($notify-&data['out_trade_no'],8);&
&&&&&&&&&&&&&&&&$payInfo['order_no']&=&$notify-&data['out_trade_no'];&
&&&&&&&&&&&&&&&&$payInfo['platform_no']=$notify-&data['transaction_id'];&
&&&&&&&&&&&&&&&&$payInfo['attach']=$notify-&data['attach'];&
&&&&&&&&&&&&&&&&$payInfo['fee']=$notify-&data['cash_fee'];&
&&&&&&&&&&&&&&&&$payInfo['currency']=$notify-&data['fee_type'];&
&&&&&&&&&&&&&&&&$payInfo['user_sign']=$notify-&data['openid'];&
&&&&&&&&&&&&}&
&&&&&&&&}&
&&&&&&&&$returnXml&=&$notify-&returnXml();&
&&&&&&&&echo&$returnXml;&
&&&&&&&&$this-&load-&library('RedisCache');&
&&&&&&&&if($payInfo['status']){&
&&&&&&&&&&&&
&&&&&&&&&&&&$this-&model-&order-&onPaySuccess($payInfo['sn'],&$payInfo['order_no'],&$payInfo['platform_no'],'',&$payInfo['user_sign'],&$payInfo);&
&&&&&&&&&&&&$this-&redis-&RedisCache-&set('order:payNo:'.$payInfo['order_no'],'OK',5000);&
&&&&&&&&}else{&
&&&&&&&&&&&&
&&&&&&&&&&&&$this-&model-&order-&onPayFailure($payInfo['sn'],&$payInfo['order_no'],&$payInfo['platform_no'],'',&$payInfo['user_sign'],&$payInfo,&'订单支付失败&['.$payInfo['msg'].']');&
&&&&&&&&}&
&&&&public&function&returnOrderData($orderId,&$data&=&'')&{&
&&&&&&&&$order&=&$this-&wxpay_model-&get($orderId);&
&&&&&&&&if&(0&===&count($order))&return&&
&&&&&&&&if&(emptyempty($data))&{&
&&&&&&&&&&&&$this-&load-&library('RedisCache');&
&&&&&&&&&&&&&
&&&&&&&&&&&&$orderData&=&$this-&rediscache-&getJson("order:orderData:".$orderId);&
&&&&&&&&&&&&if&(emptyempty($orderData))&{&
&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&$this-&load-&model('order_model');&
&&&&&&&&&&&&&&&&$order&=&$this-&order_model-&get($orderId);&
&&&&&&&&&&&&&&&&if&(0&===&count($order))&{&
&&&&&&&&&&&&&&&&&&&&return&&
&&&&&&&&&&&&&&&&}&
&&&&&&&&&&&&&&&&$data&=&$order;&
&&&&&&&&&&&&}&else&{&
&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&return&$orderData;&
&&&&&&&&&&&&}&
&&&&&&&&}&
&&&&&&&&$orderData['id']&=&$data['id'];&
&&&&&&&&$orderData['fee']&=&$data['fee'];&
&&&&&&&&$orderData['user_id']&=&$data['user_id'];&
&&&&&&&&$orderData['sn']&=&$data['cn'];&
&&&&&&&&$orderData['order_no']&=&substr(md5($data['sn'].$data['fee']),&8,&8).$data['sn'];&
&&&&&&&&$orderData['fee']&=&$data['fee'];&
&&&&&&&&$orderData['time']&=&$data['time'];&
&&&&&&&&$orderData['goods_name']&=&$data['goods_name'];&
&&&&&&&&$orderData['attach']&=&$data['attach'];&
&&&&&&&&$this-&rediscache-&set("order:orderData:".$orderId,&$orderData,&3600*24);&
&&&&&&&&$this-&rediscache-&set("order:payNo:".$orderData['order_no'],&"NO",&3600*24);&
&&&&&&&&return&$orderData;&
&&&&private&function&_verifyUser($order)&{&
&&&&&&&&if&(emptyempty($order))&show_404();&
&&&&&&&&if&(0&===&count($order))&show_404();&
&&&&&&&&if&($order['user_id']&==&$this-&uid)&return;&
&&&&&&&&show_error('只能查看自己的订单');&
控制器:Wxpay.php&
模型:Wxpay_model.php
defined('BASEPATH')&OR&exit('No&direct&script&access&allowed');&
class&Wxpay_model&extends&CI_Model&{&
&&&&public&function&__construct()&{&
&&&&&&&&parent::__construct();&
&&&&public&function&retWxPayUrl()&{&
&&&&&&&&$jsApi&=&new&JsApi_handle();&
&&&&&&&&return&$jsApi-&createOauthUrlForCode();&
&&&&public&function&wxPayJsApi($data)&{&
&&&&&&&&$jsApi&=&new&JsApi_handle();&
&&&&&&&&$payData&=&$this-&returnData($data);&
&&&&&&&&$code&=&$_GET['code'];&
&&&&&&&&$jsApi-&setCode($code);&
&&&&&&&&$openid&=&$jsApi-&getOpenId();&
&&&&&&&&$unifiedOrderResult&=&null;&
&&&&&&&&if&($openid&!=&null)&{&
&&&&&&&&&&&&&
&&&&&&&&&&&&$unifiedOrderResult&=&$this-&getResult($payData,&'JSAPI',&$openid);&
&&&&&&&&&&&&&
&&&&&&&&&&&&$returnMessage&=&$this-&returnMessage($unifiedOrder,&'prepay_id');&
&&&&&&&&&&&&if&($returnMessage['resultCode'])&{&
&&&&&&&&&&&&&&&&$jsApi-&setPrepayId($retuenMessage['resultField']);&
&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&$returnMessage['resultData']&=&$jsApi-&getParams();&
&&&&&&&&&&&&}&&
&&&&&&&&&&&&return&$returnM&
&&&&&&&&}&
&&&&public&function&returnData($data)&{&
&&&&&&&&$payData['sn']&=&$data['sn'];&
&&&&&&&&$payData['body']&=&$data['goods_name'];&
&&&&&&&&$payData['out_trade_no']&=&$data['order_no'];&
&&&&&&&&$payData['total_fee']&=&$data['fee'];&
&&&&&&&&$payData['attach']&=&$data['attach'];&
&&&&&&&&return&$payD&
&&&&public&function&getResult($payData,&$trade_type,&$openid&=&null)&{&
&&&&&&&&$unifiedOrder&=&new&UnifiedOrder_handle();&
&&&&&&&&if&($opneid&!=&null)&{&
&&&&&&&&&&&&$unifiedOrder-&setParam('openid',&$openid);&
&&&&&&&&}&
&&&&&&&&$unifiedOrder-&setParam('body',&$payData['body']);&&&
&&&&&&&&$unifiedOrder-&setParam('out_trade_no',&$payData['out_trade_no']);&&
&&&&&&&&$unifiedOrder-&setParam('total_fee',&$payData['total_fee']);&&&&&
&&&&&&&&$unifiedOrder-&setParam('attach',&$payData['attach']);&&&
&&&&&&&&$unifiedOrder-&setParam('notify_url',&base_url('/Wxpay/pay_callback'));&
&&&&&&&&$unifiedOrder-&setParam('trade_type',&$trade_type);&&
&&&&&&&&return&$unifiedOrder-&getResult();&
&&&&public&function&returnMessage($unifiedOrderResult,$field){&
&&&&&&&&$arrMessage=array("resultCode"=&0,"resultType"=&"获取错误","resultMsg"=&"该字段为空");&
&&&&&&&&if($unifiedOrderResult==null){&
&&&&&&&&&&&&$arrMessage["resultType"]="未获取权限";&
&&&&&&&&&&&&$arrMessage["resultMsg"]="请重新打开页面";&
&&&&&&&&}elseif&($unifiedOrderResult["return_code"]&==&"FAIL")&
&&&&&&&&{&
&&&&&&&&&&&&$arrMessage["resultType"]="网络错误";&
&&&&&&&&&&&&$arrMessage["resultMsg"]=$unifiedOrderResult['return_msg'];&
&&&&&&&&}&
&&&&&&&&elseif($unifiedOrderResult["result_code"]&==&"FAIL")&
&&&&&&&&{&
&&&&&&&&&&&&$arrMessage["resultType"]="订单错误";&
&&&&&&&&&&&&$arrMessage["resultMsg"]=$unifiedOrderResult['err_code_des'];&
&&&&&&&&}&
&&&&&&&&elseif($unifiedOrderResult[$field]&!=&NULL)&
&&&&&&&&{&
&&&&&&&&&&&&$arrMessage["resultCode"]=1;&
&&&&&&&&&&&&$arrMessage["resultType"]="生成订单";&
&&&&&&&&&&&&$arrMessage["resultMsg"]="OK";&
&&&&&&&&&&&&$arrMessage["resultField"]&=&$unifiedOrderResult[$field];&
&&&&&&&&}&
&&&&&&&&return&$arrM&
&&&&public&function&wxPayNotify($xml)&{&
&&&&&&&&$notify&=&new&Wxpay_server();&
&&&&&&&&$notify-&saveData($xml);&
&&&&&&&&if&($notify-&checkSign()&==&false)&{&
&&&&&&&&&&&&$notify-&setReturnParameter("return_code","FAIL");&
&&&&&&&&&&&&$notify-&setReturnParameter("return_msg","签名失败");&
&&&&&&&&}&else&{&
&&&&&&&&&&&&$notify-&checkSign=TRUE;&
&&&&&&&&&&&&$notify-&setReturnParameter("return_code","SUCCESS");&
&&&&&&&&}&
&&&&&&&&return&$&
class&JsApi_handle&extends&JsApi_common&{&
&&&&public&$&
&&&&public&$&
&&&&public&$&
&&&&public&$prepay_&
&&&&public&$curl_&
&&&&function&__construct()&
&&&&&&&&$this-&curl_timeout&=&WxPayConf::CURL_TIMEOUT;&
&&&&public&function&createOauthUrlForCode()&{&
&&&&&&&&$redirectUrl&=&"/wxpay/confirm/".$orderId."?showwxpaytitle=1";&
&&&&&&&&$urlParams['appid']&=&WxPayConf::APPID;&
&&&&&&&&$urlParams['redirect_uri']&=&$redirectU&
&&&&&&&&$urlParams['response_type']&=&'code';&
&&&&&&&&$urlParams['scope']&=&'snsapi_base';&
&&&&&&&&$urlParams['state']&=&"STATE"."#wechat_redirect";&
&&&&&&&&$queryString&=&$this-&ToUrlParams($urlParams,&false);&
&&&&&&&&return&"https://open./connect/oauth2/authorize?".$queryS&
&&&&public&function&setCode($code)&{&
&&&&&&&&$this-&code&=&$&
&&&&public&function&setPrepayId($prepayId)&
&&&&&&&&$this-&prepay_id&=&$prepayId;&
&&&&public&function&getParams()&
&&&&&&&&$jsApiObj["appId"]&=&WxPayConf::APPID;&
&&&&&&&&$timeStamp&=&time();&
&&&&&&&&$jsApiObj["timeStamp"]&=&"$timeStamp";&
&&&&&&&&$jsApiObj["nonceStr"]&=&$this-&createNoncestr();&
&&&&&&&&$jsApiObj["package"]&=&"prepay_id=$this-&prepay_id";&
&&&&&&&&$jsApiObj["signType"]&=&"MD5";&
&&&&&&&&$jsApiObj["paySign"]&=&$this-&getSign($jsApiObj);&
&&&&&&&&$this-&parameters&=&json_encode($jsApiObj);&
&&&&&&&&return&$this-&&
&&&&public&function&getOpenId()&{&
&&&&&&&&$url&=&$this-&createOauthUrlForOpenid();&
&&&&&&&&$ch&=&curl_init();&
&&&&&&&&curl_setopt($ch,&CURL_TIMEOUT,&$this-&curl_timeout);&
&&&&&&&&curl_setopt($ch,&CURL_URL,&$url);&
&&&&&&&&curl_setopt($ch,&CURL_SSL_VERIFYPEER,&FALSE);&
&&&&&&&&curl_setopt($ch,&CURL_SSL_VERIFYHOST,&FALSE);&
&&&&&&&&curl_setopt($ch,&CURL_HEADER,&FALSE);&
&&&&&&&&curl_setopt($ch,&CURL_RETURNTRANSFER,&TRUE);&
&&&&&&&&$res&=&curl_exec($ch);&
&&&&&&&&curl_close($ch);&
&&&&&&&&$data&=&json_decode($res);&
&&&&&&&&if&(isset($data['openid']))&{&
&&&&&&&&&&&&$this-&openid&=&$data['openid'];&
&&&&&&&&}&else&{&
&&&&&&&&&&&&return&null;&
&&&&&&&&}&
&&&&&&&&return&$this-&&
&&&&public&function&createOauthUrlForOpenid()&{&
&&&&&&&&$urlParams['appid']&=&WxPayConf::APPID;&
&&&&&&&&$urlParams['secret']&=&WxPayConf::APPSECRET;&
&&&&&&&&$urlParams['code']&=&$this-&&
&&&&&&&&$urlParams['grant_type']&=&"authorization_code";&
&&&&&&&&$queryString&=&$this-&ToUrlParams($urlParams,&false);&
&&&&&&&&return&"https://api./sns/oauth2/access_token?".$queryS&
class&UnifiedOrder_handle&extends&Wxpay_client_handle&{&
&&&&public&function&__construct()&{&
&&&&&&&&$this-&url&=&"https://api.mch./pay/unifiedorder";&
&&&&&&&&$this-&curl_timeout&=&WxPayConf::CURL_TIMEOUT;&
class&Wxpay_server_handle&extends&JsApi_common{&
&&&&public&$&&
&&&&public&$returnP&&&&
&&&&public&function&saveData($xml)&{&
&&&&&&&&$this-&data&=&$this-&xmlToArray($xml);&&
&&&&public&function&checkSign()&{&
&&&&&&&&$tmpData&=&$this-&&
&&&&&&&&unset($temData['sign']);&
&&&&&&&&$sign&=&$this-&getSign($tmpData);&
&&&&&&&&if&($this-&data['sign']&==&$sign)&{&
&&&&&&&&&&&&return&true;&
&&&&&&&&}&
&&&&&&&&return&false;&
&&&&function&setReturnParameter($parameter,&$parameterValue)&
&&&&&&&&$this-&returnParameters[$this-&trimString($parameter)]&=&$this-&trimString($parameterValue);&
&&&&function&returnXml()&
&&&&&&&&$returnXml&=&$this-&createXml();&
&&&&&&&&return&$returnX&
class&Wxpay_client_handle&extends&JsApi_common{&
&&&&public&$&&
&&&&public&$&&
&&&&public&$&&
&&&&public&$&&
&&&&public&$curl_&&
&&&&public&function&setParam($param,&$paramValue)&{&
&&&&&&&&$this-&params[$this-&tirmString($param)]&=&$this-&trimString($paramValue);&
&&&&public&function&getResult()&{&
&&&&&&&&$this-&postxml();&&
&&&&&&&&$this-&result&=&$this-&xmlToArray($this-&response);&
&&&&&&&&return&$this-&&
&&&&public&function&postxml()&{&
&&&&&&&&$xml&=&$this-&createXml();&
&&&&&&&&$this-&response&=&$this-&postXmlCurl($xml,&$this-&curl,&$this-&curl_timeout);&
&&&&&&&&return&$this-&&
&&&&public&function&createXml()&{&
&&&&&&&&$this-&params['appid']&=&WxPayConf::APPID;&&
&&&&&&&&$this-&params['mch_id']&=&WxPayConf::MCHID;&&
&&&&&&&&$this-&params['nonce_str']&=&$this-&createNoncestr();&&&&
&&&&&&&&$this-&params['sign']&=&$this-&getSign($this-&params);&&&
&&&&&&&&return&$this-&arrayToXml($this-&params);&&
class&JsApi_common&{&
&&&&function&__construct()&{&
&&&&public&function&trimString($value)&{&
&&&&&&&&$ret&=&null;&
&&&&&&&&if&(null&!=&$value)&{&
&&&&&&&&&&&&$ret&=&trim($value);&
&&&&&&&&&&&&if&(strlen($ret)&==&0)&{&
&&&&&&&&&&&&&&&&$ret&=&null;&
&&&&&&&&&&&&}&
&&&&&&&&}&&
&&&&&&&&return&$&
&&&&public&function&createNoncestr($length&=&32)&{&
&&&&&&&&$chars&=&"abcdefghijklmnopqrstuvwxyz";&
&&&&&&&&$str&=&'';&
&&&&&&&&for&($i&=&0;&$i&&&$&$i++)&{&
&&&&&&&&&&&&$str&.=&substr($chars,&mt_rand(0,&strlen($chars)&-&1),&1);&
&&&&&&&&}&
&&&&&&&&return&$&
&&&&public&function&ToUrlParams($urlParams,&$needUrlencode)&{&
&&&&&&&&$buff&=&"";&
&&&&&&&&ksort($urlParams);&
&&&&&&&&foreach&($urlParams&as&$k&=&&$v)&{&
&&&&&&&&&&&&if($needUrlencode)&$v&=&urlencode($v);&
&&&&&&&&&&&&$buff&.=&$k&.'='.&$v&.'&';&
&&&&&&&&}&
&&&&&&&&$reqString&=&'';&
&&&&&&&&if&(strlen($buff)&&&0)&{&
&&&&&&&&&&&&$reqString&=&substr($buff,&0,&strlen($buff)&-&1);&
&&&&&&&&}&
&&&&&&&&return&$reqS&
&&&&public&function&getSign($obj)&{&
&&&&&&&&foreach&($obj&as&$k&=&&$v)&{&
&&&&&&&&&&&&$params[$k]&=&$v;&
&&&&&&&&}&
&&&&&&&&ksort($params);&
&&&&&&&&$str&=&$this-&ToUrlParams($params,&false);&&&
&&&&&&&&$str&=&$str."$key=".WxPayConf::KEY;&
&&&&&&&&$str&=&md5($str);&
&&&&&&&&$result&=&strtoupper($str);&
&&&&&&&&return&$&
&&&&public&function&arrayToXml($arr)&{&
&&&&&&&&$xml&=&"&xml&";&
&&&&&&&&foreach&($arr&as&$k&=&&$v)&{&
&&&&&&&&&&&&if&(is_numeric($val))&{&
&&&&&&&&&&&&&&&&$xml&.=&"&".$key."&".$key."&/".$key."&";&
&&&&&&&&&&&&}&else&{&
&&&&&&&&&&&&&&&&$xml&.=&"&".$key."&&![CDATA[".$val."]]&&/".$key."&";&
&&&&&&&&&&&&}&
&&&&&&&&}&
&&&&&&&&$xml&.=&"&/xml&";&
&&&&&&&&return&$&
&&&&public&function&xmlToArray($xml)&{&
&&&&&&&&$arr&=&json_decode(json_encode(simplexml_load_string($xml,&'SinpleXMLElement',&LIBXML_NOCDATA)),&true);&
&&&&&&&&return&$&
&&&&public&function&postXmlCurl($xml,&$url,&$second&=&30)&{&
&&&&&&&&$ch&=&curl_init();&
&&&&&&&&curl_setopt($ch,&CURL_TIMEOUT,&$second);&
&&&&&&&&curl_setopt($ch,&CURL_URL,&$url);&
&&&&&&&&curl_setopt($ch,&CURL_SSL_VERIFYHOST,&FALSE);&
&&&&&&&&curl_setopt($ch,&CURL_SSL_VERIFYPEER,&FALSE);&
&&&&&&&&curl_setopt($ch,&CURL_HEADER,&FALSE);&
&&&&&&&&curl_setopt($ch,&CURL_RETURNTRANSFER,&TRUE);&
&&&&&&&&curl_setopt($ch,&CURL_POST,&TRUE);&
&&&&&&&&curl_setopt($ch,&CURL_POSTFIELDS,&$xml);&
&&&&&&&&$res&=&curl_exec($ch);&
&&&&&&&&if&($res)&{&
&&&&&&&&&&&&curl_close($ch);&
&&&&&&&&&&&&return&$&
&&&&&&&&}&else&{&
&&&&&&&&&&&&$error&=&curl_errno($ch);&
&&&&&&&&&&&&echo&"curl出错,错误码:$error"."&br&";&
&&&&&&&&&&&&echo&"&a&href='http://curl.haxx.se/libcurl/c/libcurl-errors.html'&错误原因查询&/a&&/br&";&
&&&&&&&&&&&&curl_close($ch);&
&&&&&&&&&&&&return&false;&
&&&&&&&&}&
class&WxPayConf&{&
&&&&const&APPID&=&'wx654a22c';&
&&&&const&MCHID&=&'';&
&&&&const&MCHNAME&=&'KellyCen的博客';&
&&&&const&KEY&=&'0000000';&
&&&&const&APPSECRET&=&'000';&
&&&&const&SSLCERT_PATH&=&'/home/WxPayCacert/apiclient_cert.pem';&
&&&&const&SSLKEY_PATH&=&'/home/WxPayCacert/apiclient_key.pem';&
&&&&const&SSLCA_PATH&=&'/home/WxPayCacert/rootca.pem';&
&&&&const&CURL_TIMEOUT&=&30;&
模型:Wxpay_model.php&
视图:index.tpl
&!doctype&html&&&&
&head&lang="zh-CN"&&&&
&meta&http-equiv="Content-Type"&content="text/&charset=utf-8"&/&&
&!--&Make&sure&that&we&can&test&against&real&IE8&--&&
&meta&http-equiv="X-UA-Compatible"&content="IE=8"&/&&
&title&&/title&&
&a&href="{$wxPayUrl}"&微信支付&/a&&
&/body&&&&
视图:index.tpl&
&视图:confirm.tpl
&!doctype&html&&&&
&head&lang="zh-CN"&&&&
&meta&http-equiv="Content-Type"&content="text/&charset=utf-8"&/&&
&!--&Make&sure&that&we&can&test&against&real&IE8&--&&
&meta&http-equiv="X-UA-Compatible"&content="IE=8"&/&&
&title&&/title&&
&a&href="javascript:callpay();"&id="btnOrder"&点击支付&/a&&
&/body&&&&
&script&type="text/javascript"&&
&&&&var&wxJsApiData&=&{$wxJsApiData};&
&&&&function&onBridgeReady()&
&&&&&&&&{&
&&&&&&&&&&&&&
&&&&&&&&&&&&WeixinJSBridge.invoke(&
&&&&&&&&&&&&&&&&'getBrandWCPayRequest',&
&&&&&&&&&&&&&&&&$.parseJSON(wxJsApiData.resultData),&
&&&&&&&&&&&&&&&&function(res){&
&&&&&&&&&&&&&&&&&&&&if(res.err_msg&==&"get_brand_wcpay_request:ok"&){&
&&&&&&&&&&&&&&&&&&&&&&&&window.location.href="/wxpay/paysuccess/"+{$order.sn};&&
&&&&&&&&&&&&&&&&&&&&}&
&&&&&&&&&&&&&&&&}&&
&&&&&&&&&&&&);&
&&&&&&&&}&
&&&&&&&&function&callpay()&
&&&&&&&&{&&
&&&&&&&&&&&&if(!wxJsApiData.resultCode){&
&&&&&&&&&&&&&&&&alert(wxJsApiData.resultType+","+wxJsApiData.resultMsg+"!");&
&&&&&&&&&&&&&&&&return&false;&
&&&&&&&&&&&&}&
&&&&&&&&&&&&if&(typeof&WeixinJSBridge&==&"undefined"){&
&&&&&&&&&&&&&&&&if(&document.addEventListener&){&
&&&&&&&&&&&&&&&&&&&&document.addEventListener('WeixinJSBridgeReady',&onBridgeReady,&false);&
&&&&&&&&&&&&&&&&}else&if&(document.attachEvent){&
&&&&&&&&&&&&&&&&&&&&document.attachEvent('WeixinJSBridgeReady',&onBridgeReady);&
&&&&&&&&&&&&&&&&&&&&document.attachEvent('onWeixinJSBridgeReady',&onBridgeReady);&
&&&&&&&&&&&&&&&&}&
&&&&&&&&&&&&}else{&
&&&&&&&&&&&&&&&&onBridgeReady();&
&&&&&&&&&&&&}&
&&&&&&&&}&
&/script&&
视图:confirm.tpl&
里面所用到的一些自定义函数可以在我上一篇博文里找找,那里已经提供了代码参考了
现在我们的线上项目是微信支付,支付宝支付,网银支付信用卡支付的功能都有,并且PC和WAP端都分别对应有。所以整一个支付系统模块还算比较完整,后期有时间我会总结和分享下其他的支付接口开发的博文,希望有兴趣的博友可以关注下哦!!
本次分享和总结就到此
如果此博文中有哪里讲得让人难以理解,欢迎留言交流,若有讲解错的地方欢迎指出。
有好的文章希望站长之家帮助分享推广,猛戳这里
本网页浏览已超过3分钟,点击关闭或灰色背景,即可回到网页}

我要回帖

更多关于 微信可否上传 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信