安装app后第一次调用微信中国银行在线支付白屏,选择取消中国银行在线支付白屏后,页面闪一下白屏,可能是什么原因导致的?

直入之前,请容我吐槽一下微*的官方东西:ASDFQ%#$%$#$%^FG@#$%DSFQ#$%.......;吐槽玩了!大家心照就好。要完成APP跳转到的APP进行微信支付,需要进行如下操作:1、先去微信的开放平台(http://open.)进行账号的注册。2、新建一个APP应用,然后填写必填信息提交审核。3、进入APP应用,在信息中,进行申请&获得微信支付能力&的功能,期间会提交相关的公司营业信息证明等。通过以上三点,然后经过漫长的等待之后,基本都可以申请下来的,这里不细说申请细节了,讲个大概,基本都能应付。基本的对接流程在这里有细说(https://pay./wiki/doc/api/app.php)在进行对接之前,需要用到如下信息:/* 微信app key 这两个就是我们上面申请的APP得到的*/ W_APP_ID W_APP_SECRET //商户号 W_MCH_ID--这个也是需要登录商户平台进行获得 //API密钥,在商户平台设置 W_API_KEY--这个需要登录商户平台进行获得商户平台的登录地址(https://pay./index.php)一、.net服务端的对接:1、直接上微信的SDK列表下载.net的SDK(https://pay./wiki/doc/api/download/WxPayAPI_CS_v3.zip)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的方法,也就是这个:这个方法的东西其实是不完整,最明显,我们把请求改了之后,再把所用到的参数赋值,然后就没有然后了,根本调不起来,压根就没反应,原因是缺少了参数值,这个是固定的(Sign=WXPay)5、改了第四点之后,肯定是能调用起来的了,但是确不能支付,sign错误导致的,至此,你应该把集中到sendpay_demo的方法中去,不要再使用sendpay方法了只需要把刚才获取的prepay_id替换掉,立马就能正常使用支付功能,如下位置的参数替换成我们网络请求返回的的就行了:总结,希望此篇对正在做微信支付对接的哥们有帮助,也让大家少走一些弯路,如果觉得合适,可以顺手点个赞,以此鼓励鼓励。thanks(啊啊啊九)
(科幻少年一点红)
第三方登录:基于H5的微信支付开发详解
这次总结一下用户在微信内打开网页时,可以调用微信支 付完成下单功能的模块开发,也就是在微信内的H5页面通过jsApi接口实现支付功能。当然了,微信官网上的微信支付开发文档也讲解的很详细,并且有实现 代码可供参考,有的朋友直接看文档就可以自己实现此支付接口的开发了。
为何我还写一篇微信支付接口的博文呢?第一,我们 必须知道,所谓的工作经验很多都是靠总结出来的,你只有总结了更多知识,积累了更多经验,你才能在该行业中脱颖而出,我个人觉得如今的招聘,很多都需要工 作经验(1年、3年、5年....),其实,工作时间的长久不能衡量一个人技术水平的高低,有的人一年的工作经验能拿3年工作经验的程序猿的工资,有的3 年工作经验的却有可能比别人只有一年工作经验的还低,所以说,总结才能让自己的知识体系,经验深度更牛逼更稳固(虽然写一篇博文挺花费时间的);第二,写 博文分享给大家还是挺有成就感的,首先是能让新手从我分享的博文中能学到东西,并且能快速将博文所讲解的技术运用到实际中来,所以我写的博文基本上能让新 人快速读懂并且容易理解,另外,技术大神的话,看到博文有讲解的不对之处,还可以指出,并且可以交流,何乐而不为呢,我们需要的就是分享和交流。
扯远了,直接进入该主题的详解。
现在的微信支付方式有N种,看下图,有刷卡支付、 公众号支付、扫码支付和APP支付,另外还有支付工具的开发,本博文选择的是公众号支付借口而开发进行讲解,其他几种支付接口开发基本上思路都是一样的, 只要你能看懂我这博文所讲解的基本思路,你基本上也能独自开发其他几个支付接口。
二、思路详解
我们可以拿微信支付接口文档里的业务流程时序图看 看,如下图,基本思路是这样子:首先在后台生成一个链接,展示给用户让用户点击(例如页面上有微信支付的按钮),用户点击按钮后,网站后台会根据订单的相 关信息生成一个支付订单,此时会调用统一下单接口,对微信支付系统发起请求,而微信支付系统受到请求后,会根据请求过来的数据,生成一个 预支付交易会话标识(prepay_id,就是通过这个来识别该订单的),我们的网站收到微信支付系统的响应后,会得到prepay_id,然后通过自己 构造微信支付所需要的参数,接着将支付所需参数返回给客户端,用户此时可能会有一个订单信息页,会有一个按钮,点击支付,此时会调用JSAPI接口对微信 支付系统发起 请求支付,微信支付系统检查了请求的相关合法性之后,就会提示输入密码,用户此时输入密码确认,微信支付系统会对其进行验证,通过的话会返回支付结果,然 后微信跳转会H5页面,这其中有一步是异步通知网站支付结果,我们网站需要对此进行处理(比如说异步支付结果通过后,需要更新数据表或者订单信息,例如标 志用户已支付该订单了,同时也需要更新订单日志,防止用户重复提交订单)。
三、代码讲解
本次开发环境用的是php5.6 + MySQL + Redis + Linux + Apache,所选用的框架的CI框架(这些环境不一定需要和我的一致,框架也可以自己选择,反正自己稍微修改下代码就能移植过去了)。
微信支付接口的开发代码我已经提前写好了,在这里我对其进行分析讲解,方便大家能轻松理解,当然,假如你有一定的基础,直接看代码就能理清所有流程了,并且我的代码基本上都写上了注释(对于新手来说,这一点比微信文档所提供的代码好一点)。
1、构造一个链接展示给用户
这里我们提前需要知道一个点,那就是请求统一下单接口需要微信用户的openid(详情可看这https://pay./wiki/doc/api/jsapi.php?chapter=9_1),而获取openid需要先获取code(详情可看这),所以我们需要构造一个获取code的URL:
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');&
在这先看看model里所写的几个类:model里有几个类:微信支付类、统一下单接口类、响应型接口基类、请求型接口基类、所有接口基类、配置类。为何要分那么多类而不在一个类里实现所有的方法的,因为,这样看起来代码逻辑清晰,哪个类该干嘛就干嘛。
这里我直接附上model的代码了,里面基本上每一个类每一个方法甚至每一行代码都会有解释的了,这里我就不对其展开一句句分析了:
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&
获取到code的URL后,将其分配到页面去,让用户去点击,用户进行点击后,就会从微信服务器获取到code,然后回调到redirect_uri所指的地址去。
注:相关网站建设技巧阅读请移步到频道。
看过本文的人还看过
最新图文推荐
最新专栏文章
大家感兴趣的内容
网友热评的文章}

我要回帖

更多关于 12306 app支付白屏 的文章

更多推荐

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

点击添加站长微信