最近几天在做app的微信支付和支付宝支付,主要负责服务器接口。记录一下服务器这边的工作。

参考微信的官方文档链接:(有用的几个)

1 - 首先,如果想让app可以使用微信支付,必须先申请一个开放平台的账号

微信开放平台地址:微信开放平台地址 (点击打开)

同时,在开放平台页面顶部,有一个 资源中心,里面有各种文档(登录,授权等api在这个文档里面,通俗易懂,这点微信还是很不错的。)

2  -如果你完成了开放平台app的申请,就可以在app详情里面进行支付,登录(默认允许)等接口的申请,支付的话,要填一些资料,和汇款给对公账户的验证,如果你都完成了,微信就会发送一封邮件到你的邮箱,上面会记录着,商户号,商户id 等等信息,可以在微信商户平台登录,修改密钥获取证书等操作,链接甩上 : 点击打开链接  (支付等api在这个文档里面)

(ps:移动应用申请微信APP支付权限仅接受公司主体)

到这里,准备工作就算完成了。

支付流程步骤详解:

步骤1:用户在商户APP中选择商品,提交订单,选择微信支付。

这一步,app将相关订单信息提交给商户

步骤2:商户后台收到用户支付单,调用微信支付统一下单接口。参见【统一下单API】。

商户系统先调用该接口在微信支付服务后台生成预支付交易单,返回正确的预支付交易回话标识后再在APP里面调起支付。

步骤3:统一下单接口返回正常的prepay_id,再按签名规范重新生成签名后,将数据传输给APP。参与签名的字段名为appId,partnerId,prepayId,nonceStr,timeStamp,package。注意:package的值格式为Sign=WXPay

步骤4:商户APP调起微信支付。api参见本章节【app端开发步骤说明】(与服务器接口无关)

步骤5:商户后台接收支付通知。api参见【支付结果通知API】

步骤6:商户后台查询支付结果。,api参见【查询订单API】

遇到的问题:
1 商户用于接收微信的支付通知,链接是通过【统一下单API】中提交的参数notify_url设置,如果链接无法访问,商户将无法接收到微信通知,不能带参数,微信返回类型为post,xml格式
2 接收到支付通知首先要做签名验证,防止数据泄漏导致出现“假通知”,造成资金损失,就是收到的参数,除了sign字段之外的字段做签名之后,与收到的sign比较。
3 处理重复问题,微信可能会多次返回信息,要处理重复订单的问题,主要是解决【统一下单API】的订单号
4 另外,5里面要对6进行验证,验证无误,才可以在商户端对订单支付状态进行修改,防止假通知,或误操作。
上代码:(步骤5,6的)

<?php
/*** 通用通知接口demo* ====================================================* 支付完成后,微信会把相关支付和用户信息发送到商户设定的通知URL,* 商户接收回调信息后,根据需要设定相应的处理流程。* * 这里举例使用log文件形式记录回调信息。
*/require_once dirname(__FILE__).'/log_.php';// include_once("./log_.php");require_once '/xxxxxx.php';// include_once("../xxxxxx.php");//使用通用通知接口$notify = new Notify_pub();//存储微信的回调$xml = $GLOBALS['HTTP_RAW_POST_DATA']; $notify->saveData($xml);//将微信的请求xml转换成关联数组,以方便数据处理if (empty($data))return false;//验证签名,并回应微信。//对后台通知交互时,如果微信收到商户的应答不是成功或超时,微信认为通知失败,//微信会通过一定的策略(如30分钟共8次)定期重新发起通知,//尽可能提高通知的成功率,但微信不保证通知最终能成功。if($notify->checkSign() == FALSE){//设置两个数组的字段值 $notify->setReturnParameter("return_code","FAIL");//返回状态码$notify->setReturnParameter("return_msg","签名失败");//返回信息}else{$notify->setReturnParameter("return_code","SUCCESS");//设置返回码}$returnXml = $notify->returnXml();echo $returnXml;//==商户根据实际情况设置相应的处理流程,此处仅作举例=======//以log文件形式记录回调信息$log_ = new Log_();$log_name=dirname(__FILE__)"/notify_url.log";//log文件路径$log_->log_result($log_name,"【接收到的notify通知】:\n".$xml."\n");if($notify->checkSign() == TRUE){if ($notify->data["return_code"] == "FAIL"||empty($notify->data["return_code"])) {//此处应该更新一下订单状态,商户自行增删操作$log_->log_result($log_name,"【通信出错】:\n".$xml."\n");}elseif($notify->data["result_code"] == "FAIL"||empty($notify->data["result_code"])){//此处应该更新一下订单状态,商户自行增删操作$log_->log_result($log_name,"【业务出错】:\n".$xml."\n");}else{$check = new OrderQuery_pub();if(!$check->createXml()){$msg = '订单查询失败';$log_->log_result($log_name,"订单查询失败:\n".time()."\n");return false;}// if (empty($data['out_trade_no'])){//    // file_put_contents('/xxxxx/aaa.txt', '3');//     return false;// }ksort($data);reset($data);$payment = D('Payment')->getPayment('weixin');/* 检查支付的金额是否相符 *///商户逻辑}//签名验证$sign = array();foreach ($data as $key => $val) {if ($key != 'sign') {$sign[] = $key . '=' . $val;}}$sign[] = 'key=' . $payment['appkey'];//用&将sign元素拼接成字串 $signstr = strtoupper(md5(join('&', $sign)));if ($signstr != $data['sign']){$log_->log_result($log_name,"【签名失败】:\n""用于组件sign的数组为:=".$sign."\n");   return false;}//商户,对订单操作echo "SUCCESS";$log_->log_result($log_name,"【支付成功】:\n".$xml.time()."\n");die();}//商户自行增加处理流程,//例如:更新订单状态//例如:数据库操作//例如:推送支付完成信息}
?>

如果你觉得有用的话,顶一下吧 ! ^o^

服务器微信支付接口笔记-(与app端对接)相关推荐

  1. 微信支付api的服务器上,服务器微信支付接口笔记(与app端对接)

    到这里,准备工作就算完成了. 支付流程步骤详解: 步骤1:用户在商户APP中选择商品,提交订单,选择微信支付. 这一步,app将相关订单信息提交给商户 步骤2:商户后台收到用户支付单,调用微信支付统一 ...

  2. 微信支付接口,提示:调用支付jsapi缺少参数: $key0$

    下面是 官方给的 帮助文档. 支付返回签名错误 注意签名参数的大小写,支付密钥key要到商户平台设置,设置的规则是32位数字与字母大小写的组合.以下链接为签名过程. (https://pay.weix ...

  3. Magento微信支付接口开发小记

    姗姗来迟的Magento微信支付接口插件 半年之前,有朋友网站需要接入微信支付,是Magento站,于是花费了近二周时间,研究微信开发文档.示例代码,并初步制作了个支付模块,不巧的是,朋友的微信支付接 ...

  4. java后台提供ios微信支付接口

    提供微信支付接口,需要先在微信开放平台(https://open.weixin.qq.com/)申请账号,进行开发者资格认证通过后创建应用. 创建成功后会有对应应用的AppID和AppSecret这个 ...

  5. php 调用微信支付的时间戳,前端调用微信支付接口

    支付按钮的点击事件$(´.Save_Patient_Msg´).click(function(){ $(´.Save_Patient_Msg´).off(´click´); var hrdfId = ...

  6. Android_APP 微信支付接口开发

    1.首先说一下我们在开发微信支付接口的时候遇到最多和最疑惑的问题,那就是明明 appid.商户号.API密钥 都对照了好几遍确实是和自己的一样,并且也没有在Log日志中出现签名错误等信息,却始终调不起 ...

  7. 微信支付接口(公众号支付)+微信支付回调函数 附代码

    前段时间做微信支付,微信浏览器填写金额商品名之后提交跳转付款页面确认然后返回界面判断,今天来详细说下 国际惯例先贴代码 mcontroller.java public void wxpay() {if ...

  8. 微信支付接口怎么申请 微信支付接口申请教程

     微信支付接口:点击进去 一直让大家翘首以盼的微信最核心的杀手锏--"微信支付"终于开放申请了!今天微信团队在官网发布消息,微信公众平台支付功能已正式开放申请,已开通公众号的 ...

  9. 西米支付:微信支付接口(申请与介绍)

    据统计,2022年微信全球用户数超12.8亿,其中微信支付使用人数达到6亿,而且微信支付在中国移动支付的市场份额超过40%,无论是在线上购物,还是线下收款,都能看到微信支付的身影,微信支付已经融入到我 ...

最新文章

  1. 程序员面试题精选100题(25)-在从1到n的正数中1出现的次数[算法]
  2. 使用dwz框架配合MVC使用
  3. ue4集合类型_UE4-Sockets
  4. mybatis SqlMapConfig.xml properties
  5. XP命令合集(开始→运行→输入的命令集锦开始→运行→输入的命令集锦)
  6. [算法模板]高斯消元
  7. 通过PDB文件实现非嵌入式的c++反射
  8. Lenovo DS存储Linux下ISCSI 多路径映射配置
  9. sqlserver查询语句实例
  10. 制作QQ微信支付宝三合一收款码
  11. 【Hive】Establishing SSL connection without server‘s identity verification is not recommended. Accord
  12. python去除图片水印api,python去除图片水印(部分可)
  13. Mermaid知识点总结3 - Flowchart 2
  14. 计算机电脑为什么0无法输入,电脑浏览器网页无法输入文字该怎么办?
  15. pyscripter支持python什么版本_pyscripter 64位下载-pyscripter x64下载2.5.3 官方最新版-Python集成开发环境IDE西西软件下载...
  16. 数据载入、存储及文件格式(数据分析)
  17. 105道CSS 面试知识点总结
  18. 当 Python 遇到数据库,这个模块就变得超级好用
  19. No compiler is provided in this environment. Perhaps you are run
  20. msvcp140.dll丢失的详细修复教程

热门文章

  1. 售假涉黄违规经营 2000个违规微信小程序封停
  2. 经典物理建模钢琴-4Front TruePianos v1.9.8 WiN-MAC
  3. php tp5修改语句,tp5修改(实现即点即改)
  4. 橙单微服务的权限部分
  5. 软件设计师中级-数据库设计
  6. 用iPhone开高达:日本推出可驾驭的真实重型机甲
  7. Gin Web 网络框架
  8. linux软件管理及软件仓库
  9. 电商平台分析平台----需求六:实时统计之黑名单机制
  10. word 保存时 不能保存