html中的js监听付款按钮--触发ajax调用php后台--得到的json数据---交给安卓原生处理
//01
var pay_status = new Object();
$(".sure_pay").on("touchstart",function(){ var order_id = $('#order_id').val(); payLinkShape("showShape");
var payType=1;//默认是微信支付,用来储存支付象征标识
/*点击获取支付方式start*/
$('.payBox input').on('ifChecked', function(event){
if(event.type == "ifChecked"){
clsName=$(this).attr("class");
}
})
/*点击获取支付方式end*/
switch (clsName)
{
case "weix":
payType=1;
break;
case "zfb":
payType=2;
break;
case "company":
payType=0;
break;
} //console.log('clsName ==');
//console.log(clsName);
//console.log('order_id ='+order_id);
$.ajax({
url:"/order/pay_order_wx?order_id="+order_id,
type:'GET',
data:"{}",
dataType:"json",
success: function(jsonPayinfo){
console.log('success ==');
console.log(jsonPayinfo);
if(jsonPayinfo.return_code == 'SUCCESS' && jsonPayinfo.result_code == 'SUCCESS')
{
jsonPayinfo=JSON.stringify(jsonPayinfo);
//console.log(jsonPayinfo);
payLinkShape();
var u = navigator.userAgent;
//TripMobile.tripPay(payType,jsonPayinfo);
if (u.indexOf('Android') > -1 || u.indexOf('Linux') > -1) {
//安卓手机
TripMobile.tripPay(payType,jsonPayinfo);
//console.log(payType);
//console.log(jsonPayinfo);
} else if (u.indexOf('iPhone') > -1) {
//苹果手机
//jakilllog(payType,jsonPayinfo);
}
}else{
console.log('进来这里了');
return false;
}
}, error: function (XMLHttpRequest, textStatus, errorThrown) {
//console.log('error +++');
//console.log(XMLHttpRequest);
//console.log(textStatus);
//console.log(errorThrown); }
}); })
////////////02调用微信支付
public function pay_order_wx($order_id)
{ $orderModel = M("order");
$get_data = I('get.'); $where['order_id'] = $get_data['order_id'];
$orderinfo = $orderModel->where($where)->find(); require_once( APP_PATH."../thinkphp/ThinkPHP/Library/Vendor/WxPay/lib/WxPay.Api.php");
require_once( APP_PATH."../thinkphp/ThinkPHP/Library/Vendor/WxPay/lib/WxPay.Config.php");
require_once( APP_PATH."../thinkphp/ThinkPHP/Library/Vendor/WxPay/lib/WxPay.Data.php");
require_once( APP_PATH."../thinkphp/ThinkPHP/Library/Vendor/WxPay/lib/WxPay.Exception.php");
require_once( APP_PATH."../thinkphp/ThinkPHP/Library/Vendor/WxPay/JsApiPay.php"); //$tools = new JsApiPay();
//$openId = $tools->GetOpenid();
//②、统一下单 $input = new WxPayUnifiedOrder();
$input->SetBody( '差旅费用');
$input->SetAttach("test");
$input->SetOut_trade_no( $orderinfo['order_num'].date("YmdHis") );//8位订单号,加上14位时间 if( TRIP_MODE == 'DEV' || TRIP_MODE == 'TEST' ){
$input->SetTotal_fee("1");//开发环境,和测试环境.默认付款0.01元
}else{
$input->SetTotal_fee( $orderinfo['order_true_total_money'] * 100 ); //微信支付以分为单位。
}
//我们数据库100.16元.会被转成 100.16分 $input->SetTime_start(date("YmdHis"));
$input->SetTime_expire(date("YmdHis", time() + 600));
$input->SetGoods_tag("test"); $input->SetNotify_url( "http://{$_SERVER['HTTP_HOST']}/api/wxpay/on_wxpay_complete.html");
$input->SetTrade_type("APP");
$order = WxPayApi::unifiedOrder($input); $timeStamp = time();
$returnorder['appid'] = "wx9xxxxxx4f7dde7";
$returnorder['partnerid'] = "13999999991";
$returnorder['noncestr'] = md5($order['nonce_str']);
$returnorder['timestamp'] = $timeStamp;
$returnorder['prepayid'] = $order['prepay_id'];
$returnorder['package'] = "Sign=WXPay"; //签名步骤一:
ksort($returnorder);
$sign = "";
foreach ($returnorder as $k => $v)
{
if($k != "sign"){
$sign .= $k . "=" . $v . "&";
}
}
$sign = trim($sign, "&"); //签名步骤二:在string后加入KEY
$sign = $sign . "&key=".WxPayConfig::KEY;
//$sign = $sign . "&key=".'xxxxxxxxxxx'; //签名步骤三:MD5加密
$sign = md5($sign);
//签名步骤四:所有字符转为大写
$sign = strtoupper($sign);
$returnorder['sign'] = $sign; $returnorder['return_code'] = $order['return_code'];
$returnorder['return_msg'] = 'OK';
$returnorder['result_code'] = $order['result_code'];
D('Tlog')->log( "微信支付订单 orderid=".$order_id. ' result'.json_encode_ex($order) );
$this->ajaxReturn($returnorder,'json'); } ////////03接收微信回调
public function on_wxpay_complete( )
{
// $info = $_REQUEST; if( APP_DEBUG ) \Think\Log::write('WxNotify: RAW_POST: '.$GLOBALS["HTTP_RAW_POST_DATA"], 'DEBUG' ); $rowpost = $GLOBALS["HTTP_RAW_POST_DATA"]; vendor('XmlParser.XML','','.class.php'); $qr = XML_unserialize( $rowpost ); mylog1('$qr =='.json_encode_ex($qr)); //记录日志,将所有的第三方通知消息都记录日志
$curtime = date('Ymd H:i:s');
$ordernumber = $qr['xml']['out_trade_no'];
$ordernumber = substr( $qr['xml']['out_trade_no'], 0, 12 );
file_put_contents( C('LOGPATH_ORDER_NITIFY')."/Wxpay_{$ordernumber}.txt", "\n\n$curtime \n".json_encode_ex($qr),FILE_APPEND ); /*
array(1) {
["xml"] => array(17) {
["appid"] => string(18) "wx9999999dde7"
["attach"] => string(4) "test"
["bank_type"] => string(3) "CFT"
["cash_fee"] => string(1) "1"
["fee_type"] => string(3) "CNY"
["is_subscribe"] => string(1) "N"
["mch_id"] => string(10) "1346077501"
["nonce_str"] => string(32) "ermeg0d01gv7k4aqppwrmtqfn1yohgy0"
["openid"] => string(28) "ok4np999999b7X90JmwDc"
["out_trade_no"] => string(26) "20160524010520160526193042"
["result_code"] => string(7) "SUCCESS"
["return_code"] => string(7) "SUCCESS"
["sign"] => string(32) "0ECB9999999DF9B859C45"
["time_end"] => string(14) "20160526193052"
["total_fee"] => string(1) "1"
["trade_type"] => string(3) "APP"
["transaction_id"] => string(28) "4099999999993752"
}
}
*/ if( 'SUCCESS' == $qr['xml']['result_code'] && 'SUCCESS' == $qr['xml']['return_code'] )
{ //支付成功
html中的js监听付款按钮--触发ajax调用php后台--得到的json数据---交给安卓原生处理的更多相关文章
- js中对arry数组的各种操作小结 瀑布流AJAX无刷新加载数据列表--当页面滚动到Id时再继续加载数据 web前端url传递值 js加密解密 HTML中让表单input等文本框为只读不可编辑的方法 js监听用户的键盘敲击事件,兼容各大主流浏览器 HTML特殊字符
js中对arry数组的各种操作小结 最近工作比较轻松,于是就花时间从头到尾的对js进行了详细的学习和复习,在看书的过程中,发现自己平时在做项目的过程中有很多地方想得不过全面,写的不够合理,所以说啊 ...
- 原 JS监听回车事件
原 JS监听回车事件 发表于2年前(2014-06-04 10:16) 阅读(6101) | 评论(0) 11人收藏此文章, 我要收藏 赞0 1月16日厦门 OSC 源创会火热报名中,奖品多多哦 ...
- js监听输入框值的即时变化onpropertychange、oninput
js监听输入框值的即时变化onpropertychange.oninput 很多情况下我们都会即时监听输入框值的变化,以便作出即时动作去引导浏览者增强网站的用户体验感. // // 要达到的效果 ...
- JS监听组合按键
有些时候,我们需要在网页上,增加一些快捷按键,方便用户使用一些常用的操作,比如:保存,撤销,复制.粘贴等等. 下面简单梳理一下思路: 我们所熟悉的按键有这么集中类型: 单独的按键操作,如:delete ...
- js监听input等表单输入框的变化事件oninput
js监听input等表单输入框的变化事件oninput,手机页面开发中使用到文本框textarea输入字符监听文本框变化计算还可以输入多少字符,如果使用onkeyup的话是无法监听到输入法输入的文本变 ...
- jQuery中的事件监听方式及异同点
jQuery中的事件监听方式及异同点 作为全球最知名的js框架之一,jQuery的火热程度堪称无与伦比,简单易学的API再加丰富的插件,几乎是每个前端程序员的必修课.从读<锋利的jQuery&g ...
- 简单剖析Node中的事件监听机制(一)
使用js的class类简单的实现一个事件监听机制,不同于浏览器中的时间绑定与监听,类似于node中的时间监听,并且会在接下来的文章中去根据自己的理解去写一下Event模块中的原理. Node.js使用 ...
- 使用web3.js监听以太坊智能合约event
传送门: 柏链项目学院 使用web3.js监听以太坊智能合约event 当我们在前端页面调用合约时发现有些数据不会立即返回,这时还需要再调用更新数据的函数.那么这样的方法使用起来非常不便,监听ev ...
- 【转】keyCode对照表及JS监听组合按键
原文: http://blog.csdn.net/qq_21386275/article/details/67640576 有一些需求,html 页面上的input 框只允许输入数字, 只允许输入小 ...
随机推荐
- Genymotion下载失败解决方法
Genymotion下载虚拟机版本时会很慢,而且经常下载失败 解决方法如下: 1.先去选择下载你需要的版本,之后会下载(很慢),或者失败. 2.到C:\Users\yourname\AppData\L ...
- Git提交到多个远程仓库
在已经习惯使用git同步写代码,github无疑是最的托管平台,但是国内由于"你懂的"原因,速度很慢,有时无法访问,于是想把自己的代码同步到多个不同的远程仓库备份. 我的主要仓库: ...
- Unity 发布到IOS,Android的各种坑
Unity 发布到IOS的注意事项1.开发环境MAC环境:Xcode环境 7.2.1Unity环境:Unity5.32.基本说明首先,我说一下,这是我在对Unity发布到IOS的实际使用中,总结出来的 ...
- 十分钟学会 tmux
tmux 是一款终端复用命令行工具,一般用于 Terminal 的窗口管理.在 macOS 下,使用 iTerm2 能应付绝大多数窗口管理的需求. 如上图所示,iTerm2 能新建多个标签页(快捷键 ...
- CSU 1810 Reverse
湖南省第十二届大学生计算机程序设计竞赛$H$题 规律,递推. 这种问题一看就有规律.可以按位统计对答案的贡献.即第$1$位对答案作出了多少贡献,第$2$位对答案作出了多少贡献.....累加和就是答案. ...
- XTU 1245 Hamiltonian Path
$2016$长城信息杯中国大学生程序设计竞赛中南邀请赛$C$题 简单题. 注意题目中给出的数据范围:$1 \le ai < bi \le n$,说明这是一个有向无环图,并且哈密顿路一定是$1 \ ...
- zookeeper(2)-curator
一.Curator介绍 zookeeper的提交人也说过,curator对于zookeeper而言就像是guava对于java差不多,更加优雅高效. 而且之前的zookeeper原生API,往往因为2 ...
- 【类不类二】Python的类变量与实例变量
在研究类的时候,难免会有很多疑问,C论坛和博客园高手如云(不知道是不是也美女如云), 搜到了这篇博文,是介绍Python的类变量和实例变量的 ! 刚好在下对self.***这种形式的实例变 量不是很理 ...
- Scala文件操作
Scala中的文件操作基本可以依赖于Java的实现,包括输入.输出流的使用. object FileOps {def main(args: Array[String]) { val file = So ...
- 集成shareSDK的微信、QQ API导致cocoaPods找不到类symbol问题的解决方法
因为shareSDK的微信和QQ API都只支持32位的,而cocoaPods默认要支持64位的,所以如果在工程中导入这两个API会出问题. 解决方法我就不转载啦,原文在这里: http://blog ...