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 框只允许输入数字, 只允许输入小 ...
随机推荐
- python 数据清洗之字符串处理
在数据分析中,特别是文本分析中,字符处理需要耗费极大的精力, 因而了解字符处理对于数据分析而言,也是一项很重要的能力. 字符串处理方法 首先我们先了解下都有哪些基础方法 首先我们了解下字符串的拆分sp ...
- JavaEE XML DOM创建之DOM4J
DOM4J创建xml文档 @author ixenos 1 写出内容到xml文档 XMLWriter writer = new XMLWriter(OutputStream, OutputForamt ...
- 极路由器刷机安装ss插件最新教程
极路由器系统升级后,旧的插件已不可用,这里是最新极路由器刷机教程,可实现绑定ss代理账号的功能. 获取root权限 安装开发者插件,获取root权限,请先登录极路由器后台(电脑浏览器访问 192.16 ...
- CodeForces 340E Iahub and Permutations
容斥原理,组合数. 找出有$cnt$个数字还有没放,那么总方案数就是$cnt!$. 总方案数里面包含了正确的和非正确的,我们需要将非正确的删去. 先删去$1$个数字$a[i]=i$的情况,发现会多删, ...
- openstack私有云布署实践【11.1 计算nova - compute节点配置(科兴环境)】
这里我只使用kxcompute1节点配置为示例,其它节点的配置基本是一样的,只是声明的管理IP不同而已 计算节点 # yum install openstack-nova-compute sysf ...
- string 数字序列大小比较
string 数字序列大小比较 string.compare string a = "022"; string b="1"; 比较结果 '022' < ' ...
- C# 语言规范_版本5.0 (第6章 转换)
1. 转换 转换(conversion) 使表达式可以被视为一种特定类型.转换可导致将给定类型的表达式视为具有不同的类型,或其可导致没有类型的表达式获得一种类型.转换可以是隐式的 (implicit) ...
- Ubuntu 14.04 绑定固定 IP
参考百度经验首先用root用户登录,然后输入你的root密码,如果不用root登录可以在命令之前添加sudo:然后编辑interfaces 文件,该文件位于/etc/network/下面, 执行如下命 ...
- Pelican搭建静态博客
前言 一直以来都希望拥有属于自己的个人博客,随性发点信息,写点技术感想,记录自己的生活,重要的是不受广告的影响.不被河蟹.不会担心有一天被莫名其妙地消失. 之前看过一篇文章:"像黑客一样写博 ...
- LINQ_to_SQL语法及实例大全
LINQ To SQL 语法及实例大全 2011/4/5 目录 LINQ to SQL语句(1)之Where. 2 Where操作... 2 1.简单形式:... 2 2.关系条件形式:... 2 3 ...