微信第三方登录接口H5可以通过App发起微信支付请求吗

查看: 6851|回复: 6
hbuilder的移动端APP如何实现微信支付,求具体流程详解
& && & 我的HBuilder里的一个移动端APP项目已经有了支付宝,还要实现微信支付,不知道怎么做微信支付,什么公众号,审核,应用包签名都有,就是不知道该如何下手,菜鸟求大神详解!!!!!!!!
HBuilder 基座已实现H5 plus的支付API,现已集成支付宝快捷支付平台。使用支付功能前必须在支付宝网站开通”快捷支付“服务,并配置服务器生成订单信息。开发指导支付流程如下:
flow.png (75.12 KB, 下载次数: 11)
11:17 上传
plus API使用步骤:
1. 调用plus.payment.getChannels()获取系统支持的支付通道;
2. 调用plus.payment.request()发起支付请求。示例代码var channel=
// 1. 获取支付通道
function plusReady(){
& & // 获取支付通道
& & plus.payment.getChannels(function(channels){
& && &&&channel=channels[0];
& & },function(e){
& && &&&alert(&获取支付通道失败:&+e.message);
& & });
}
document.addEventListener('plusready',plusReady,false);
var ALIPAYSERVER='http://demo./helloh5/payment/alipay.php?total=';
var WXPAYSERVER='http://demo./helloh5/payment/wxpay.php?total=';
// 2. 发起支付请求
function pay(id){
& & // 从服务器请求支付订单
& & var PAYSERVER='';
& & if(id=='alipay'){
& && &&&PAYSERVER=ALIPAYSERVER;
& & }else if(id=='wxpay'){
& && &&&PAYSERVER=WXPAYSERVER;
& & }else{
& && &&&plus.nativeUI.alert(&不支持此支付通道!&,null,&捐赠&);
& && &&&
& & }
& & var xhr=new XMLHttpRequest();
& & xhr.onreadystatechange=function(){
& && &&&switch(xhr.readyState){
& && && && &case 4:
& && && && &if(xhr.status==200){
& && && && && & plus.payment.request(channel,xhr.responseText,function(result){
& && && && && && &&&plus.nativeUI.alert(&支付成功!&,function(){
& && && && && && && && &back();
& && && && && && &&&});
& && && && && & },function(error){
& && && && && && &&&plus.nativeUI.alert(&支付失败:& + error.code);
& && && && && & });
& && && && &}else{
& && && && && & alert(&获取订单信息失败!&);
& && && && &}
& && && && &
& && && && &default:
& && && && &
& && &&&}
& & }
& & xhr.open('GET',PAYSERVER);
& & xhr.send();
}复制代码注:第二步中获取到的订单数据需要在服务器通过支付宝平台获取PID和密钥生成。HBuilder应用配置分享插件添加方法具体步骤如下:
1. 双击应用的manifest.json文件,选中“使用第三方插件”
plugin.jpg (22.04 KB, 下载次数: 4)
11:17 上传
Ctrl+S保存。
点击manifest.json文件的“代码视图”,在permissions节点下添加Payment节点:
permissions.png (17.55 KB, 下载次数: 2)
11:17 上传
在plus -& distribute -& plugins 节点下添加payment节点:
11:17 上传
alipay节点下配置支付宝相关信息
scheme值为iOS平台调用支付宝的“快捷支付”应用返回时用到的标识,推荐使用小写字符串。
weixin节点下配置微信支付相关信息
appid值为在微信开放平台申请应用的AppID值。
支付宝功能申请
登录支付宝账号,签约申请“移动快捷支付”功能,操作流程参考:
获取PID,参考教程:
生成密钥(公钥和私钥),并提交到支付宝,参考教程:
服务器生成订单示例(PHP)
参考开源示例代码
微信支付功能申请
使用微信支付功能需到微信开放平台申请移动应用并开通支付功能
申请应用后可以获取AppID和AppSecret值。开通支付功能后可获取支付业务服务器配置数据
PARTNER:财付通商户号
PARTNER_KEY:财付通密钥
PAYSIGNKEY:支付签名密钥
  参考开源示例代码
这个我看过,可是看不懂,我就一菜鸟,麻烦具体一点
HBuilder 基座已实现H5 plus的支付API,现已集成支付宝快捷支付平台。使用支付功能前必须在支付宝网站开通 ...
这个我看过,可是看不懂,我就一菜鸟,麻烦具体一点。。。什么下哪个SDK,怎么用,然后做什么
这个我看过,可是看不懂,我就一菜鸟,麻烦具体一点。。。什么下哪个SDK,怎么用,然后做什么
你需要appid值为在微信开放平台申请应用的AppID值,服务器生成订单php,微信和支付宝是相通的!
你需要appid值为在微信开放平台申请应用的AppID值,服务器生成订单php,微信和支付宝是相通的!
我有APPID值,关键是我不知道先干撒再干撒怎么做
微信支付就第一次成功,后面就都支付失败了,换个支付帐号也是第一次成功,后面都失败的,是什么原因呢?日志返回[-100]:[payment微信:-1]General error]
网站推荐 /1
从即日起关注蚂蚁社区官方微信,奖励30蚂蚁币,每月我们会随机抽取3名关注者,奖励月度VIP会员(1000蚂蚁币)。
邮箱: QQ: 木子牛HTML5工作室 版权所有
Powered by X3.2(微信支付流程
Ps.支付前要先获取用户的 唯一标示id
H5:本项目中(前提:已登陆,微信浏览器)支付流程,由js调用商户服务器api进行统一下单操作, 并填写重定向地址, 获取统一下单地址后,调用商户服务器生成二维码api生成支付二维码(将下单url转换为二维码),用户点击二维码后js调用微信支付进行支付操作 接下来进行支付结果操作.
IOS:商户服务器发送请求至微信服务器进行统一下单 执行统一下单操作后 将预支付订单id及相关信息返回给ios客户端
客户端调用微信app进行支付操作 接下来进行支付结果操作.
查询支付结果可分为两种方式:
1.由微信服务器定时异步通知商户服务器
2.由商户服务器主动查询微信服务器实际支付结果
微信登录流程
H5:JS-SDK微信请求code并添加重定向参数 获取code后请求微信服务器换取access_token(过期后可刷新) 获取token后可获取用户个人信息
IOS:ios-SDK请求微信获取微信服务器获取code 获取code后获取access_token 通过token获取用户个人信息
(获取openid用户唯一标识 unionid用户所属商户平台下不同应用,可通过此id来区分用户的唯一性)
HarborChung
浏览: 48472 次
来自: 北京
web实时推送技术使用越来越广泛,但是自己开发又太麻烦了,我觉 ...
islandforus 写道按照你的这样写法,连接池获取不到怎 ...
按照你的这样写法,连接池获取不到怎么回事呢?
for (UserLogin e : userThird.va ...您所在的位置: &
基于H5的微信支付开发详解(3)
基于H5的微信支付开发详解(3)
这次总结一下用户在微信内打开网页时,可以调用微信支 付完成下单功能的模块开发,也就是在微信内的H5页面通过jsApi接口实现支付功能。当然了,微信官网上的微信支付开发文档也讲解的很详细,并且有实现 代码可供参考,有的朋友直接看文档就可以自己实现此支付接口的开发了。
这里我附上此次开发中的完整代码供大家阅读:
控制器:Wxpay.php
&?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
&?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&&&&&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&&&/head&&&body&&&&a&href=&{$wxPayUrl}&&微信支付&/a&&&/body&&&&&/html&&&视图:index.tpl&
&视图:confirm.tpl
&!doctype&html&&&&&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&&&/head&&&body&&&&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&&&/html&&&视图:confirm.tpl&
里面所用到的一些自定义函数可以在我上一篇博文里找找,那里已经提供了代码参考了
现在我们的线上项目是微信支付,支付宝支付,网银支付信用卡支付的功能都有,并且PC和WAP端都分别对应有。所以整一个支付系统模块还算比较完整,后期有时间我会总结和分享下其他的支付接口开发的博文,希望有兴趣的博友可以关注下哦!!
本次分享和总结就到此
如果此博文中有哪里讲得让人难以理解,欢迎留言交流,若有讲解错的地方欢迎指出。
【编辑推荐】【责任编辑: TEL:(010)】
内容导航&第 1 页: &第 2 页: &第 3 页:
关于&&&&的更多文章
你是不是总是拖延?你会不会非把一件要做的事拖到最后一刻才开始
随着云计算、物联网、大数据、移动互联网的大发展,你应该知道这些。
讲师: 138人学习过讲师: 11人学习过讲师: 55人学习过
又到周末了。昨天是感恩节,小编也是听同事说起,才想
离年末越来越近了,不知道各位有没有倦怠的感觉?本周
怎样尽可能的缩短浏览器上页面渲染的时间?我们可以从
本书通过大量实例代码,以ECMA-262版本3为基础,结合JavaScript 1.5和JavaScript 5.5,由浅入深、循序渐进地介绍了JavaScript知
51CTO旗下网站}

我要回帖

更多关于 微信第三方支付 的文章

更多推荐

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

点击添加站长微信