Authored by biao

update pay center for binding the pay interface. code review by LiangZhifeng

... ... @@ -3,7 +3,87 @@
* @author: 赵彪<bill.zhao@yoho.cn>
* @date: 2015/12/03
*/
var loading = require('../plugin/loading');
var loading = require('../plugin/loading'),
Hammer = require('yoho.hammer');
var theOrderCode = document.getElementById('ordercode').value;
var wxPayEl = document.getElementById('weixin'),
wxHammer = wxPayEl && new Hammer(wxPayEl);
var appIconPosition = {
baidu: '-2.7rem',
weixin: '-1.2rem',
QQ: '-5.4rem',
bank: '-4'
};
//隐藏微信分享选项
if (window.wx) {
wx.hideOptionMenu();
}
function onBridgeReady(){
document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() {
WeixinJSBridge.call('hideOptionMenu');
});
}
if (typeof WeixinJSBridge == "undefined"){
if ( document.addEventListener ) {
document.addEventListener ('WeixinJSBridgeReady', onBridgeReady, false);
} else if (document.attachEvent) {
document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
}
onBridgeReady();
}else{
onBridgeReady();
}
//调用微信JS api 支付
function jsApiCall(orderCode,jsApiParameters)
{
//防止重复操作弹框
WeixinJSBridge.invoke(
'getBrandWCPayRequest',
jsApiParameters,
function(res){
window.location.href = "/home/orders/detail?order_code="+orderCode;
}
);
}
//微信支付
function callpay(orderCode)
{
var jsApiParameters;
if (typeof WeixinJSBridge == "undefined"){
if( document.addEventListener ){
document.addEventListener('WeixinJSBridgeReady', jsApiCall, false);
}else if (document.attachEvent){
document.attachEvent('WeixinJSBridgeReady', jsApiCall);
document.attachEvent('onWeixinJSBridgeReady', jsApiCall);
}
}else{
$.ajax({
type:"GET",
url:"/shopping/pay/wechatwapapi?order_code="+orderCode,
dataType:"json",
success:function(res){
if(res.code == 200){
jsApiParameters = res.data.jsApiParameters;
jsApiCall(orderCode,jsApiParameters);
}else{
alert('微信支付调取失败');
}
},
error:function(){
alert('请刷新本页面,完成微信支付');
}
});
}
}
function isWXOpen() {
var ua = navigator.userAgent.toLowerCase();
... ... @@ -32,39 +112,23 @@ function handleForWX() {
}
}
function setIcon(div, appName) {
if (appName.indexOf('百度') !== -1) {
div.style.backgroundPositionY = '-2.7rem';
return false;
}
if (appName.indexOf('微信') !== -1) {
div.style.backgroundPositionY = '-1.2rem';
return false;
}
if (appName.indexOf('银联') !== -1) {
div.style.backgroundPositionY = '-4rem';
return false;
}
if (appName.indexOf('QQ') !== -1) {
div.style.backgroundPositionY = '-5.4rem';
return false;
}
function setAppIcon(el, position) {
el.style.backgroundPositionY = position;
}
function loadIcon() {
var boxs = document.getElementsByClassName('box');
var div = null;
var appName = null;
var appid = null;
[].forEach.call(boxs, function(box, index) {
div = box.getElementsByClassName('icon')[0].getElementsByTagName('div')[0];
if (div) {
appName = box.getElementsByClassName('app')[0].innerHTML;
setIcon(div, appName);
appid = box.getAttribute('id');
if (appid !== 'alipay') {
setAppIcon(div, appIconPosition[appid]);
}
}
});
}
... ... @@ -75,6 +139,12 @@ function showPage() {
pageList.style.visibility = 'visible';
}
if (wxHammer) {
wxHammer.on('tap', function() {
callpay(theOrderCode);
});
}
function main() {
handleForWX();
loading.hideLoadingMask();
... ...
{{> layout/header}}
<div class="pay-page yoho-page">
{{#if orderCode}}
<input id='ordercode' type="hidden" value="{{orderCode}}">
{{/if}}
<div class="payapp-list">
{{# payAppInfo}}
{{# payAppInfo}}
{{#if payLink}}
<a href="{{payLink}}">
<div class="box">
{{/if}}
<div class="box" id="{{appId}}">
<div class="icon">
{{#if appIcon}}
<img src="{{appIcon}}" alt="app图标">
... ... @@ -21,7 +26,9 @@
</div>
<div class="iconfont">&#xe604</div>
</div>
{{#if payLink}}
</a>
{{/if}}
{{/ payAppInfo}}
</div>
</div>
... ...
... ... @@ -642,7 +642,7 @@ class HomeController extends AbstractAction
$this->auditJumpLogin();
$backUrl = Helpers::url('/home');
$this->setTitle('我的订单');
$this->setNavHeader('我的订单', $backUrl);
... ... @@ -780,13 +780,14 @@ class HomeController extends AbstractAction
$this->setTitle('支付中心');
$this->setNavHeader('支付中心');
$orderCode = $this->get('order_code');
if (empty($orderCode)) {
$this->error();
}
$this->_view->display('pay', array(
'payCenterPage' => true,
'payAppInfo' => array(
0 => array(
'appIcon' => '',
... ...