移动支付php,银联手机支付服务端PHP端代码

1 开发前准备 先和银联手机支付签约,他们会给你测试的证书已经手机客户端的控件

2  将包里的文件(TESTMERCHANT.p12)经过openssl生成的密钥文件TESTMERCHANT.pm 默认密码是 1

3 PHP端程序

下订单程序

/*

* 银联支付

* */

//wap下订单接口(需要验证签名)

public function wapsendAction() {

header("Content-Type:text/html; charset=utf-8");

$request = $this->getRequest();

if(isset($_SESSION['uid'])){

if($request->isPost()){

$uid=intval($_SESSION['uid']);

$money = intval($request->getPost(money));//金额以元为单位

$beans = $money;

$arraymoney=array("1","10","30","100");

if(!in_array($money,$arraymoney)){

echo '1';//金额不对

exit();

}

}else{

echo '2';//不是POST请求

exit();

}

$payaction = new PayAction();

$rid = $payaction->insertRecharge($uid, 36, $money, $beans);

if($rid) {

$orderTime=date('YmdHis'); //交易开始日期时间

//$rid='00000123';//订单

$rid=str_pad($rid,'8','0',STR_PAD_LEFT);

//$money='000000000030';//金额str_pad(string,length,pad_string,pad_type)

$money= str_pad($money*100,'12','0',STR_PAD_LEFT);

//$bz='156';//币种

$terminal='00000001';//pos机

$shanghu='100011000110195';//商户代码

$shanghumc='我在找你';//商户名称

$string=$orderTime.$rid.$money.$terminal.$shanghu.$shanghumc;

$fp = fopen(ROOT_ACTION.'quickpay/TESTMERCHANT.pem', "r");

$priv_key = fread($fp, 8192);

fclose($fp);

$pkeyid = openssl_get_privatekey($priv_key);

openssl_sign($string, $signature, $pkeyid);

$len = strlen($signature);

$hexArray = "0123456789abcdef";

$str = $signature;

$result = "";

for($i=0;$i

if(ord($str[$i]) >= 128){

$byte = ord($str[$i]) - 256;

}else{

$byte =  ord($str[$i]);

}

$bytes[] = $byte ;

$byte = $byte & 0xff;

$result .= $hexArray[$byte >> 4];

$result .= $hexArray[$byte & 0xf];

}

echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'.$orderTime.''.$beans.'块钱订单'.$money.''.$result.'';

}else{

$payaction = new PayAction();

$str = '银联wap支付下订单失败uid='.$uid.'money='.$money.'rid='.$rid;

$payaction->Insert_errorpay($str,1,0);//1为银联1 为下订单失败

echo '3';//订单验证签名失败

exit;

}

}else{

echo '4';//登录后再下订单

exit();

}

}

现在再提供一个回调的函数就可以了。

public function wapback_notifyAction() {

$request = $this->getRequest();

if($request->isPost()){

$arr_ret = file_get_contents("php://input");

$payaction = new PayAction();

$xml = new SimpleXMLElement($arr_ret);

$orderid=$this->getAttr($arr_ret,'order') ;//获取订单id

$submitTime=$this->getDataForXML($arr_ret,'/cupMobile/transaction/submitTime');//获取交易时间

$moeney=$this->getDataForXML($arr_ret,'/cupMobile/transaction/billAmount');//获取金额

$accountNumber1=$this->getDataForXML($arr_ret,'/cupMobile/transaction/accountNumber1');//获取支付卡

$settleDate=date('Ymd'); //交易开始日期时间

$payaction->insertPayQQ(1,1,$arr_ret.'orderid'.$orderid['id']);

if($orderid['id']>0){

$orderNumbe=substr($orderid['id'],'2');

$payaction->updateRechargeStatus($orderNumbe);

echo '<?xml version="1.0" encoding="UTF-8"?>'.$submitTime.''.$submitTime.''.$moeney.''.$accountNumber1.'000000001'.$moeney.''.$settleDate.'';

}

}

}

这样就好了 另外附带2个xml操作函数

//xml获取属性值

function getAttr($str , $tag) {

preg_match_all("/(?:]*)>/im" , $str , $ary);

if(is_array($ary[1])) {

preg_match_all('/([a-zA_Z0-9]+?)\s*?(?:=)\s*?(?:[\'"]?)([a-zA_Z0-9_\-\.]*?)(?:[\'"])/im' , $ary[1][0] , $a);

for($i = 0 , $j = count($a[1]) ; $i < $j ; ++$i) {

$v[$a[1][$i]] = $a[2][$i];

}

return $v;

}

}

//xml获取指定节点的元素值

function getDataForXML($res_data,$node)

{

$xml = simplexml_load_string($res_data);

$result = $xml->xpath($node);

while(list( , $node) = each($result))

{

return $node;

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/344427.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【渝粤题库】陕西师范大学210022 学前儿童语言教育 作业(专升本)

《学前儿童语言教育》作业 一、填空题 学前儿童语言教育是研究儿童 的现象、 及其训练和 的一门科学&#xff0c;是学前教育师范院校 的一门应用性科目。学前儿童语言教育目标主要分为三个层次&#xff0c;即语言教育 、 和 。语言教育评价是语言教育 中的一个要素&#xff0c…

【渝粤题库】陕西师范大学292011 初级微观经济学 作业(高起专)

《初级微观经济学》作业 一、填空题 1.微观经济学的研究对象是————————————。 2.需求曲线向————倾斜&#xff0c;表明商品的价格与供给量成————变动。 3.支持价格是政府为了扶植某一行业的生产而规定的该行业产品的——————。 4&#xff0e;>1&…

【渝粤题库】陕西师范大学300011 历史文献学

《历史文献学》作业 一、名词解释 1&#xff0e;卜辞 2&#xff0e;旋风页 3&#xff0e;“经” 4&#xff0e;《史记》三家注 5&#xff0e;别集 6&#xff0e;校勘 7&#xff0e;载体文献 8&#xff0e;蝴蝶装 9&#xff0e;“朱丝栏”与“乌丝栏” 10&#xff0e;别史 11&am…

【渝粤题库】陕西师范大学500018 物理实验研究 作业(专升本)

《物理实验研究》作业 一、回答问题 什么是创新、具有那些特征&#xff1f;现代科技创新发展的主要特点有哪些&#xff1f;什么是创新性思维&#xff1f;创新思维的主要方法什么是创新技法本课程介绍的常用科技创新技法有哪些.奥斯本智力激励法及其基本原则组合型创新技法原理…

【渝粤题库】陕西师范大学720001 分子生物学

分子生物学作业 一、填空 DNA双螺旋直径为 &#xff08;1&#xff09; nm&#xff0c;每隔 &#xff08;2&#xff09; nm螺旋上升一圈。大肠杆菌DNA聚合酶Ⅲ的 &#xff08;3&#xff09; 活性使之具有 &#xff08;4&#xff09; 功能&#xff0c;极大地提高了DNA复制的保真…

企业知识库:从信息管理到知识创新的转变

在当今这个信息爆炸的时代&#xff0c;企业知识库的建设已经成为了企业持续发展的重要基石。从传统的信息管理到现代的知识创新&#xff0c;企业知识库的角色和功能也在不断地演变和升级。本文将探讨企业知识库的发展历程&#xff0c;以及如何实现从信息管理到知识创新的转变。…

php封装的数据库操作文件夹,PHP中对数据库操作的封装_php

现在我们把其封装在dbfz.inc中&#xff0c;其设计如下&#xff1a;$#60;?class dbInterface{ var $dbID1; //用于确定当前操作的数据库&#xff0c;当dbID为1代表mysql,当为 2代表 SQL Server&#xff0c;为3时为ODBC或其它。var $dbHost; //数据库所在主机域名var $dbUsernam…

Spring框架架构

这是Spring Framework Architecture的概述。 了解Spring Framework的各个组成部分如何组织以及如何相互联系。 如果您想了解什么是Spring框架及其功能&#xff0c;请阅读Spring框架简介 。 总览 Spring是一个模块化框架 。 它不是作为一个软件包或多个模块捆绑在一起的。 各种…

国家开放大学2021春1073法律文书答案

教育 教育 试卷代号&#xff1a;1073 2 0 2 1年春季学期期末统一考试 法律文书 试题答案及评分标准 &#xff08;供参考&#xff09; 2021年7月 一、单项选择题&#xff08;本大题共6小题&#xff0c;每小题3分&#xff0c;共18分。在每小题列出的四个备选答案中只 有一个符合…

【渝粤教育】广东开放大学 社会工作行政 形成性考核 (52)

选择题 题目&#xff1a;社会工作行政的一般环境是指从社会工作行政组织内部对社会工作行政的过程、方法等产生直接影响的各种因素的总和 题目&#xff1a;社会工作行政环境是指对社会工作行政的过程、方法、程序、效率、效果等产生影响的各种力量和条件因素的总和。 题目&…

php中n12br,PHP常见字符串操作函数与用法总结

一、字符串的格式化1、字符串的格式化trim()函数可以去除字符串的开始位置和结束位置的空格&#xff0c;并将结果字符串返回&#xff0c;默认情况下去除的字符是换行符和回车符(\n和\r),水平和垂直制表符(\t和X0B)ltrim()函数只从字符的开始处(左边)去除空格rtrim()函数只从函数…

php变量 声明提升,TypeScript:let和const变量声明

在开始介绍let和const变量声明前&#xff0c;有必要先了解下JavaScript里的var变量声明。var变量声明全局声明var声明在函数体外&#xff0c;所声明的变量为全局变量。var name "张三";var所声明的全局变量会作为window的一个属性&#xff0c;可以使用"."…

面向切面编程应用_应用面向方面的编程

面向切面编程应用1.引言 面向方面编程的主要目标是将跨领域关注点分离。 当我们谈论跨领域的关注时&#xff0c;我们指的是在我们的系统或应用程序中的多个地方使用的通用功能。 这些概念包括&#xff1a; 记录中 交易管理 错误处理 监控方式 安全 实现这种分离的方法是将…

【渝粤题库】陕西师范大学201541 合同法作业

《合同法》作业 一、单项选择题 李某将自己房屋租给张某使用&#xff0c;租给一段时间后&#xff0c;双方经过商议达成房屋买卖合同&#xff0c;则该房屋的所有权发生转移的特别生效要件是下列哪种行为&#xff1f; A.占有改定 B.简易交付 C.登记 D.公证 2&#xff0e;甲念高三…

php 字符串索引值,PHP:字符串索引不一致?

我创建了一个函数,该函数从硬编码的单词列表中随机生成一个短语.我有一个函数get_words(),该函数具有一串硬编码的单词,将其转换成一个数组,然后重新排列并返回.get_words()由generate_random_phrase()调用,它会反复遍历get_words()n次,并且在每次迭代时,将n个单词连接到最终的…

【渝粤题库】陕西师范大学202013 民法专论 作业

《民法专论》作业 一、单选题 1、为了保护民事主体的合法权益&#xff0c;调整民事关系&#xff0c;维护社会和经济秩序&#xff0c;适应 &#xff0c;弘扬社会主义核心价值观&#xff0c;根据宪法&#xff0c;制定本法。下划线处应填&#xff08;  &#xff09; A. 社会主义…

使用JUnit5对DynamoDB应用程序进行单元测试

在之前的文章中&#xff0c;我描述了新的Java 2 AWS SDK&#xff0c;它为调用不同AWS服务的Java客户端提供了非阻塞IO支持。 在本文中&#xff0c;我将介绍一种用于单元测试AWS DynamoDB调用的方法。 有几种方法可以启动DynamoDB的本地版本– 1. AWS提供了一个DynamoDB本地 …

【渝粤题库】陕西师范大学202421 教育管理心理学 作业 (专升本)

《教育管理心理学》作业 一、名词解释 人际知觉 2.态度 3&#xff0e;内化 4&#xff0e;社会知觉角色知觉 6&#xff0e;晕轮效应 7&#xff0e;激励因素 8&#xff0e;经济人退化 10&#xff0e;首因效应 11&#xff0e;激励 12&#xff0e;需要 13.保健因素 14. 挫折 15.制…

centos 安装php扩展gd,linux(centos)下为php添加添加GD扩展

yum -y install libjpeglibjpeg-devel libpng libpng-devel freetype freetype-devel 安装依赖库yum -y install libjpeg-devel1.首先切换到php源码目录&#xff1a;/usr/local/php-5.6.29/ext/gd2.利用phpize生成gd扩展文件,/usr/local/php/bin/mipsel-linux-phpize, ls 或者 …

【渝粤题库】陕西师范大学209013 计量经济学 作业

一、名词解释 1&#xff0e;偏回归系数 2&#xff0e;异方差性 3&#xff0e;虚拟变量 4&#xff0e;间接最小二乘法 5&#xff0e;调整的多元可决系数 6&#xff0e;序列相关性 7&#xff0e;滞后变量 8&#xff0e;行为方程 9&#xff0e;受约束回归 10&#xff0e;多重共线…