webapi 微信支付通知 接收_webapi接收微信小程序的图片并保存在 - CSDN
精华内容
参与话题
  • 一种实现个人微信二维码收款接口的方法

    万次阅读 热门讨论 2018-06-03 00:37:19
    只有企业资质才能申请微信支付接口,作为一名程序员要想实现自动收款除了想办法搞到企业资质申请官方的微信支付接口外还可以想办法通过个人收款码来实现。个人二维码收款码里面除了可以设计金额外还可以设置收款方的...

    只有企业资质才能申请微信支付接口,作为一名程序员要想实现自动收款除了想办法搞到企业资质申请官方的微信支付接口外还可以想办法通过个人收款码来实现。

    个人二维码收款码里面除了可以设计金额外还可以设置收款方的备注,这个收款方的备注在识别是哪个用户付款的时候会用到,需要与付款方的备注区分。


    个人收款码

    同一个金额按照不同的收款备注设置多个,然后保存到服务端,那么数据库有张表就保存了 收款备注,收款金额,收款二维码图片地址 ,收款状态这四个字段。姑且称之为收款码表。

    如果有一个用户要付款,就从收款码表中找到一个金额匹配且收款状态为可收款状态的二维码,这个二维码给到用户的同时需要把对应收款状态设置为支付中状态。

    在前台用户支付成功后,我们通过微信收款辅助工具(这个工具后面详细讲解),就可以获取到收款方备注,金额等信息。讲是收款方备注传给服务器,通过收款方备注服务器可以知道是哪个用户支付的。

    为了避免一个用户长时间占这某个二维码不支付,我们需要在前后台都控制每隔5分钟设置收款状态为可支付状态。

    这种实现办法适合小额,支付频率不高的场景。比如说我针对 1元这个金额生成了100个有不同收款备注信息的二维码,那么也就是说5分钟内最多只能有100个人同时支付,1分钟内20个同时支付。对于一些小网站可以满足需求。

    接下来说一下微信收款辅助工具,这个工具主要的功能是,当接收到通知栏里面有微信收款通知的时候打开通知信息,获取收款信息,然后把收款信息发送给服务器去处理。

    也就是说需要有一台手机24小时联网开着,实时的监听手机通知栏的信息。


    展开全文
  • PHP实现微信小程序支付

    千次阅读 2018-05-11 18:02:23
    相对于微信支付来说,只是小程序支付需要根据用户登录的标识(js_code)去获取openid PHP的SDK地址 :https://pay.weixin.qq.com/wiki/doc/api/download/WxpayAPI_php_v3.zip 流程图链接地址 :...
          相对于微信支付来说,只是小程序支付需要根据用户登录的标识(js_code)去获取openid

           PHP的SDK地址  :https://pay.weixin.qq.com/wiki/doc/api/download/WxpayAPI_php_v3.zip

            流程图链接地址  :https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_4&index=3

            微信小程序支付  :https://blog.csdn.net/wskaitt/article/details/80272004

           把SDK引入你的项目中

           在SDK中lib目录下的WxPay.Config.php中,修改你的配置项

           

           如果你同时需要微信支付 以及 小程序支付,那么要注意在调取统一支付接口的时候就需要注意了,小程序和你的公众号id并不一样,这时候就要修改SDK文件中的统一下单API了,在SDK中的lib目录下修改WxPay.Api.php文件中的unifiedOrder

           


          1.  用户在小程序中发起下单请求,服务端调用小程序登录API返回openid,根据处理的订单信息调用统一下单API

          2.  会返回预支付订单信息,调用SDK验证API再次签名。

          3.  返回给web支付参数(5个)

          4.  用户确认支付

          5.  微信官方异步通知我们用户的支付结果

          6.  根据微信通知的结果去处理我们的业务逻辑

          在这里可能有的小伙伴获取不到微信通知结果(这个原因暂时不清楚)

          在你设置的notify路径中 使用   file_get_contents("php://input");  来获取结果是没有问题的

          结果集是xml格式,可以使用一下方法将xml转换成array

          

          在做测试的时候,可把结果集转为json格式,输出到日志中,方便我们知道是否获取到通知结果

          根据获取到的结果集去处理订单状态。处理完成之后返回给微信一个SESSUCE 或者FAIL

          由于微信会在30分钟内异步通知8次。我本人在返回给微信接收状态的时候,微信还是一直给我通知

          

           以上代码未生效。所以我在处理的时候根据订单号加了一个缓存,在订单处理成功的时候,根据订单号创建一个缓存,设置的生效时间为1小时(微信通知只有30分钟,时间完全够),在入口位置判断是否存在这个订单,如果有的话就说明已经处理过了,直接返回不进行处理。这样就解决了我的问题。

           最后  在处理订单完之后,还需要通过前端调用一个接口,在平台返回给用户是否支付成功

           

    个人总结:只是想把自己如何去做微信支付梳理一下。第一次写文章,没做好的地方应该挺多的,还望各位能够多加指正。

                     有什么问题,可留言、私信。


    展开全文
  • 最近几天在做app的微信支付和支付宝支付,主要负责服务器接口。记录一下服务器这边的工作。 参考微信的官方文档链接:(有用的几个) 1 - 首先,如果想让app可以使用微信支付,必须先申请一个开放平台的...

    最近几天在做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比较。

    处理重复问题,微信可能会多次返回信息,要处理重复订单的问题,主要是解决统一下单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^ 







    展开全文
  • 最近客户有个需求:客户使用微信完成付款后会自动关注微信支付账号绑定的微信公众号这样的场景客户体验不好,提出就只想能使用微信支付功能不要自动关注公众号。 所以就有了以下解决方案; 一、在原有的公众号下申请...

    最近客户有个需求:客户使用微信完成付款后会自动关注微信支付账号绑定的微信公众号这样的场景客户体验不好,提出就只想能使用微信支付功能不要自动关注公众号。
    所以就有了以下解决方案;
    一、在原有的公众号下申请服务商(如图)按照流程完成申请:

    二、申请成功后公众号的商户信息中就会看到申请的服务商账号:

    三、使用你收到的微信支付服务商账号登录https://pay.weixin.qq.com/进入微信支付“服务商平台-服务商功能-子商户管理”,新增商户(按照要求提供资料完成新增)。

    如图点击‘开发配置’,本次只使用微信扫码支付所以是以此做介绍.

    设置好后在代码中调用描述:

    '设置需要传递参数

    wx_pay.setParameter "appid",APPID      '服务商的appid
    wx_pay.setParameter "mch_id",MCHID  '服务商的mchid
    wx_pay.setParameter "nonce_str",UCase(MakeRandStr(32))  '随机字符
    wx_pay.setParameter "sub_mch_id",SUB_MCHID    '服务商的子商户mchid (必须值)
    wx_pay.setParameter "body",productName&" 订单:"&out_trade_no   '商品描述
    wx_pay.setParameter "out_trade_no",out_trade_no    '商户订单号
    wx_pay.setParameter "attach",attach   '自定义数据,原样返回
    wx_pay.setParameter "total_fee",(total_fee)*100    '产品价格
    wx_pay.setParameter "trade_type",trade_type   '交易类型(JSAPI--公众号支付、NATIVE--原生扫码支付、APP--app支付,统一下单接口trade_type的传参可参考这里MICROPAY--刷卡支付)
    wx_pay.setParameter "spbill_create_ip","170.0.0.1"       'APP和网页支付提交用户端ip,Native支付填调用微信支付API的机器IP
    wx_pay.setParameter "notify_url",NOTIFY_URLs   '接收微信支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数。
    wx_pay.setParameter "product_id", out_trade_no   'trade_type=NATIVE,此参数必传。此id为二维码中包含的商品ID,商户自行定义。
    wx_pay.setParameter "device_info","WEB" '终端设备号(门店号或收银设备ID),注意:PC网页或公众号内支付请传"WEB"
    wx_pay.setParameter "time_start",wx_pay.GetDateTime    开始时间

    然后用来加密使用的key值也是微信服务商对应的api密钥值.(注意这个key容易搞混不是服务商的子商户的api密钥).


     

    展开全文
  • PHP实现微信扫码支付

    千次阅读 2018-05-11 18:02:01
    刚开始听到要接微信支付的时候,感觉头大啊,瞬间感觉很难(非常心累,第一次开发的小伙伴是不是也有这个赶脚?)。 不过难受归难受,代码还是要码的。回想一下支付宝的支付流程,然后在和微信官方的支付流程对比一下...
  • 最近开发微信小程序中用到了微信支付功能,接口开发用的ASP.NET WEB API;在支付成功后,接口接受到微信服务器的支付通知结果,处理完数据,接口返回给微信服务数据时出现了问题。微信服务器识别不到返回的数据,...
  • 微信H5支付

    万次阅读 热门讨论 2019-06-22 12:04:44
    微信H5支付
  • Java微信支付开发之查询订单

    千次阅读 2017-09-13 22:43:24
    该接口提供所有微信支付订单的查询,商户可以通过查询订单接口主动查询订单状态,完成下一步的业务逻辑。
  • 微信支付开发流程及注意事项

    千次阅读 2019-07-30 08:54:47
    无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!...扫码支付扫码支付是商户系统按微信支付协议生成支付二维码,用户再用微信“扫...
  • 需求: 安卓,ios端集成微信支付,PHPer(我)要提供一个接口给微信调用,(支付完成后调用),如果成功,就返回success,如果失败就返回fail, 环境说明:thinkphp 框架开发, 微信的接口说明文档:...
  • 微信h5支付微信外浏览器支付实现

    万次阅读 热门讨论 2020-05-26 15:51:50
    h5支付的资料还真叫个少,不过找到一个好的方式,按着大神的步骤去实现还真就ok了,话不多说,开始准备吧 看一下官方文档还是很必要的,知道必不可少的参数是什么:...首先需要APPID,微信支付商户号mch_id,API密...
  • 微信支付接口开发的安全规范

    千次阅读 2017-06-13 17:18:52
    第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。 特别注意以下重要...
  • 微信公众号支付(一)统一下单

    万次阅读 2018-01-18 20:12:35
    微信公众号申请微信支付后,接着申请微信支付商户平台,公众号上面已经标明“公众平台微信支付公众号支付授权目录、扫码支付回调URL配置入口已于8月1日迁移至商户平台(pay.weixin.qq.com)。迁移后,原有配
  • 微信支付全部详细流程

    万次阅读 2018-07-09 01:53:45
    微信支付时序图 官方文档:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_51、什么是时序图 是一种UML交互图,描述了对象之间传递消息的时间顺序, 用来表示用例中的行为顺序, 是强调消息时间顺序...
  • 开发者在使用APICloud提供的来自第三方开放平台-微信开放平台的相关模块时,需要开发者自行到微信开放平台申请相应的appId(urlScheme),并将该appId以feature的形式配置到您项目的config文件中。 该appId的申请与...
  • 微信JSAPI支付

    万次阅读 2018-03-22 17:52:11
    1、微信支付的流程如下三张手机截图,我们在微信网页端看到的支付,表面上看到的是 “点击支付按钮 - 弹出支付框 - 支付成功后出现提示页面”,实际上的核心处理过程是:点击支付按钮时,执行一个Ajax到后台后台通过...
  • java微信app支付-统一下单

    万次阅读 热门讨论 2016-03-18 18:54:59
    估计大多数人和我一样吧,每次要使用腾讯的开发api,都有一种想上吊的感觉,尤其是微信支付和支付宝对比起来文档确实差距还是有点大的 关于微信支付的申请我就不多说了,网上有很多,我们直接来说一下微信支付 微信...
  • C#微信支付(六)—— 通知回调

    千次阅读 2018-09-14 09:51:08
    这是重头戏了,修改订单状态一般就是两个地方,一个是前台轮训后发现微信订单完成后修改状态,另一个就是通知回调那了。... /// 负责接收微信支付后台发送的支付结果并对订单有效性进行验证,将验证结果...
  • 微信公众账号开发

    万次阅读 2014-02-27 15:00:52
    微信开发 微信公众平台开发(82) 天气预报 摘要: 在这篇教程中,我们将介绍如何在微信公众平台上开发天气预报功能。我们将使用中国天气网的气象数据接口来获取天气信息。这篇教程将介绍以下内容:获取...
  • 经过一周的摧残,终于完成了微信支付,做完总结一下,觉得其实并不难,主要是网上没有一个明确的教程. 本文是基于C#语言上进行开发,其实本人是做java的,但由于最近接手维护的项目是C#的,所以也强制让自己简单的熟悉一遍...
1 2 3 4 5 ... 20
收藏数 2,298
精华内容 919
关键字:

webapi 微信支付通知 接收