微信支付宝开放平台商户app支付商户与微信公众平台jsapi支付商户是一个商户吗

微信APP支付接入商户接入申请流程
微信APP支付接入商户接入申请流程
查看: 1748|
摘要: 随着微信公众号升级为服务号,很多商户希望能接入微信支付方便其粉丝对产品的直接购买,然而粉丝在微信后台找不到微信支付相关接口,难以完成这一直接付费,所以成功接入微信支付功能是每位商户的必胜法宝。
随着号升级为服务号,很多商户希望能接入微信支付方便其粉丝对产品的直接购买,然而粉丝在微信后台找不到微信支付相关接口,难以完成这一直接付费,所以成功接入微信支付功能是每位商户的必胜法宝。微信APP支付接入商户服务中心1. 申请流程指引1.1 申请流程图1.2 申请接入步骤详细说明1.2.1 到添加移动应用目前仅对通过移动应用审核的APP开放微信支付申请入口,请登录微信开放平台,添加移动应用,等待审核。1.2.2 申请支付功能,提交相关资料在微信开放平台-管理中心,为通过审核的移动应用申请支付功能;提交相关的资料,并等待微信支付审核,微信团队会在7个工作日给出审核结果,结果会发送到开放平台通知中心和邮箱中;通知中心:邮箱:商户在填写“业务审核资料”时设置的。通过审核后,商户将收到邮件通知,邮件中包含重要开发参数,请牢记申请时填写的邮箱地址(如上图示)。1.2.3 进入开发阶段,签订合作协议通过微信支付审核后,系统会自动为商户生成《微信支付协议》,协议中各项关键信息已经自动生成,下载、盖章后,按照要求的地址寄回即可。待微信审核协议无误后,加盖我司公章后,尽快寄回给商户。注意:请在协议上加盖骑缝章。2. 开放类目如下类型的移动应用可申请接入微信APP支付:办公、教育、娱乐、财务、美食、运动、医疗、生活、购物、导航、新闻、摄影、社交、体育、旅游、工具。3. 资费标准3.1 费率收取标准及办法商户使用微信支付服务时,需按照腾讯规定的标准交纳微信支付手续费。费率及收费方式在商户签署的《微信支付协议》中作具体约定。4. 常见商户接入问题4.1 我提交完申请资料之后一直没有通过审核,为什么?在收到商户提交的申请资料之后,微信审核团队会在7个工作日以内通知审核结果。若审核被驳回,商户可登录微信开放平台查看驳回原因,请根据驳回原因调整填写内容,并再次提交,微信审核团队将继续进行审核。4.2 个人开发的移动应用可以申请微信APP支付吗?仅接受公司主体的移动应用申请微信APP支付权限。4.3 交纳的支付手续费,会否开具发票或收据吗?会开具支付手续费发票。4.4 《微信支付协议》附件是否需要寄回?在线下载的《微信支付协议》包含协议正文和两份附件,附件无需填写盖章,仅随协议正文寄回即可。
上一篇:下一篇:ThinkPHP整合微信支付之JSAPI模式 - ThinkPHP框架
目前微信是很火的,微信支付目前很少在网上能看到一系列详细的demo,因此,花一点时间来做一下关于微信支付系列教程,本次教程是JSAPI模式支付,其他的还会继续写下去首先,下载微信支付的demo,我们根据微信上的demo来整合到TP中。
介绍下我们这里需要用到的几个文件:
在demo文件夹中:
js_api_call.php:提供了微信jsapi的主要功能
log_.php:提供打印日志功能
notify_url.php:异步通知功能
notify_url.log:异步通知日志
qrcode.js:生成二维码js插件
接下来介绍下WxPayPubHelper文件夹下的文件:
cacert 文件夹是存放微信证书的(PS:具体我还没怎么用证书,虽然下载下来了,证书请在微信商户平台上下载)
SDKRuntimeException.php:这个就是处理异常的、
WxPay.pub.config.php:这个是做一些配置的,稍后会详细讲解
WxPayPubHelper.php:这个其实就是微信支付的工具类,对于初学者只要知道怎么用他里面的方法就够了
OK,了解了微信官方提供的文件,我们就可以开始整合到TP中了,废话不多说,这就开始!
step1:将demo中的WxPayPubHelper整个文件夹都复制到TP的Vendor目录下,像我这样:
step2:配置WxPay.pub.config.php文件:
这里的配置都有注释,如果还有不懂或者配置出现问题可以留言提问
同时我把微信的这个配置放到了TP的config中,这一步大家可以随意&?php
return&array(
&&&&//'配置项'=&'配置值'
&&&&define('WEB_HOST',&'这是您的网站域名地址'),
&&&&/*微信支付配置*/
&&&&'WxPayConf_pub'=&array(
&&&&&&&&'APPID'&=&&'您的APPID',
&&&&&&&&'MCHID'&=&&'您的商户ID',
&&&&&&&&'KEY'&=&&'商户秘钥',
&&&&&&&&'APPSECRET'&=&&'您的APPSECRET',
&&&&&&&&'JS_API_CALL_URL'&=&&WEB_HOST.'/index.php/Home/WxJsAPI/jsApiCall',
&&&&&&&&'SSLCERT_PATH'&=&&WEB_HOST.'/ThinkPHP/Library/Vendor/WxPayPubHelper/cacert/apiclient_cert.pem',
&&&&&&&&'SSLKEY_PATH'&=&&WEB_HOST.'/ThinkPHP/Library/Vendor/WxPayPubHelper/cacert/apiclient_key.pem',
&&&&&&&&'NOTIFY_URL'&=&&&WEB_HOST.'/index.php/Home/WxJsAPI/notify',
&&&&&&&&'CURL_TIMEOUT'&=&&30
);step3:将生成二维码的js放在Public目录下(这里目前用不到,在用扫码支付的情况才用到这个js),将日志文件放在Public目录下:像我这样:
step4:创建控制器:这里创建了一个WxJsAPIController的控制器,这里大家随便起名字,只要这个跟你们在公众平台上的设置相对应就可以(公众平台设置稍后介绍)
下面是控制器的代码部分了,首先初始化控制器,将WxPayPubHelper导入/**
&&&&&*&初始化
&&&&public&function&_initialize()
&&&&&&&&//引入WxPayPubHelper
&&&&&&&&vendor('WxPayPubHelper.WxPayPubHelper');
&&&&}接下来是使用统一支付接口,获取prepay_id的方法:&public&function&jsApiCall()
&&&&&&&&//使用jsapi接口
&&&&&&&&$jsApi&=&new&\JsApi_pub();
&&&&&&&&//=========步骤1:网页授权获取用户openid============
&&&&&&&&//通过code获得openid
&&&&&&&&if&(!isset($_GET['code']))
&&&&&&&&&&&&//触发微信返回code码
&&&&&&&&&&&&$url&=&$jsApi-&createOauthUrlForCode(C('WxPayConf_pub.JS_API_CALL_URL'));
&&&&&&&&&&&&Header(&Location:&$url&);
&&&&&&&&}else
&&&&&&&&&&&&//获取code码,以获取openid
&&&&&&&&&&&&$code&=&$_GET['code'];
&&&&&&&&&&&&$jsApi-&setCode($code);
&&&&&&&&&&&&$openid&=&$jsApi-&getOpenId();
&&&&&&&&//=========步骤2:使用统一支付接口,获取prepay_id============
&&&&&&&&//使用统一支付接口
&&&&&&&&$unifiedOrder&=&new&\UnifiedOrder_pub();
&&&&&&&&//设置统一支付接口参数
&&&&&&&&//设置必填参数
&&&&&&&&//appid已填,商户无需重复填写
&&&&&&&&//mch_id已填,商户无需重复填写
&&&&&&&&//noncestr已填,商户无需重复填写
&&&&&&&&//spbill_create_ip已填,商户无需重复填写
&&&&&&&&//sign已填,商户无需重复填写
&&&&&&&&$unifiedOrder-&setParameter(&openid&,$openid);//商品描述
&&&&&&&&$unifiedOrder-&setParameter(&body&,&贡献一分钱&);//商品描述
&&&&&&&&//自定义订单号,此处仅作举例
&&&&&&&&$timeStamp&=&time();
&&&&&&&&$out_trade_no&=&C('WxPayConf_pub.APPID').$timeS
&&&&&&&&$unifiedOrder-&setParameter(&out_trade_no&,$out_trade_no);//商户订单号
&&&&&&&&$unifiedOrder-&setParameter(&total_fee&,&1&);//总金额
&&&&&&&&$unifiedOrder-&setParameter(&notify_url&,C('WxPayConf_pub.NOTIFY_URL'));//通知地址
&&&&&&&&$unifiedOrder-&setParameter(&trade_type&,&JSAPI&);//交易类型
&&&&&&&&//非必填参数,商户可根据实际情况选填
&&&&&&&&//$unifiedOrder-&setParameter(&sub_mch_id&,&XXXX&);//子商户号
&&&&&&&&//$unifiedOrder-&setParameter(&device_info&,&XXXX&);//设备号
&&&&&&&&//$unifiedOrder-&setParameter(&attach&,&XXXX&);//附加数据
&&&&&&&&//$unifiedOrder-&setParameter(&time_start&,&XXXX&);//交易起始时间
&&&&&&&&//$unifiedOrder-&setParameter(&time_expire&,&XXXX&);//交易结束时间
&&&&&&&&//$unifiedOrder-&setParameter(&goods_tag&,&XXXX&);//商品标记
&&&&&&&&//$unifiedOrder-&setParameter(&openid&,&XXXX&);//用户标识
&&&&&&&&//$unifiedOrder-&setParameter(&product_id&,&XXXX&);//商品ID
&&&&&&&&$prepay_id&=&$unifiedOrder-&getPrepayId();
&&&&&&&&//=========步骤3:使用jsapi调起支付============
&&&&&&&&$jsApi-&setPrepayId($prepay_id);
&&&&&&&&$jsApiParameters&=&$jsApi-&getParameters();
&&&&&&&&$this-&assign('jsApiParameters',$jsApiParameters);
&&&&&&&&$this-&display('pay');
&&&&&&&&//echo&$jsApiP
&&&&}这里都是复制微信demo的,改改名字罢了,没什么其他的
接下来是异步通知方法,也是复制的微信demo上的&public&function&notify()
&&&&&&&&//使用通用通知接口
&&&&&&&&$notify&=&new&\Notify_pub();
&&&&&&&&//存储微信的回调
&&&&&&&&$xml&=&$GLOBALS['HTTP_RAW_POST_DATA'];
&&&&&&&&$notify-&saveData($xml);
&&&&&&&&//验证签名,并回应微信。
&&&&&&&&//对后台通知交互时,如果微信收到商户的应答不是成功或超时,微信认为通知失败,
&&&&&&&&//微信会通过一定的策略(如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&$returnX
&&&&&&&&//==商户根据实际情况设置相应的处理流程,此处仅作举例=======
&&&&&&&&//以log文件形式记录回调信息
//&&&&&&&&&$log_&=&new&Log_();
&&&&&&&&$log_name=&__ROOT__.&/Public/notify_url.log&;//log文件路径
&&&&&&&&log_result($log_name,&【接收到的notify通知】:\n&.$xml.&\n&);
&&&&&&&&if($notify-&checkSign()&==&TRUE)
&&&&&&&&&&&&if&($notify-&data[&return_code&]&==&&FAIL&)&{
&&&&&&&&&&&&&&&&//此处应该更新一下订单状态,商户自行增删操作
&&&&&&&&&&&&&&&&log_result($log_name,&【通信出错】:\n&.$xml.&\n&);
&&&&&&&&&&&&}
&&&&&&&&&&&&elseif($notify-&data[&result_code&]&==&&FAIL&){
&&&&&&&&&&&&&&&&//此处应该更新一下订单状态,商户自行增删操作
&&&&&&&&&&&&&&&&log_result($log_name,&【业务出错】:\n&.$xml.&\n&);
&&&&&&&&&&&&}
&&&&&&&&&&&&else{
&&&&&&&&&&&&&&&&//此处应该更新一下订单状态,商户自行增删操作
&&&&&&&&&&&&&&&&log_result($log_name,&【支付成功】:\n&.$xml.&\n&);
&&&&&&&&&&&&}
&&&&&&&&&&&&//商户自行增加处理流程,
&&&&&&&&&&&&//例如:更新订单状态
&&&&&&&&&&&&//例如:数据库操作
&&&&&&&&&&&&//例如:推送支付完成信息
&&&&}这里我把记录日志的类写到了function.php中:function&&log_result($file,$word)
&&&&$fp&=&fopen($file,&a&);
&&&&flock($fp,&LOCK_EX)&;
&&&&fwrite($fp,&执行日期:&.strftime(&%Y-%m-%d-%H:%M:%S&,time()).&\n&.$word.&\n\n&);
&&&&flock($fp,&LOCK_UN);
&&&&fclose($fp);
}好了 其实控制器的方法就这么多,没什么其他的了,下面看一下页面,直接上代码吧:&!DOCTYPE&html&
&&&&&meta&http-equiv=&content-type&&content=&text/charset=utf-8&/&
&&&&&title&微信安全支付&/title&
&&&&&script&type=&text/javascript&&
&&&&&&&&//调用微信JS&api&支付
&&&&&&&&function&jsApiCall()
&&&&&&&&&&&&WeixinJSBridge.invoke(
&&&&&&&&&&&&&&&&'getBrandWCPayRequest',
&&&&&&&&&&&&&&&&&?php&echo&$jsApiP&?&,
&&&&&&&&&&&&&&&&function(res){
&&&&&&&&&&&&&&&&&&&&WeixinJSBridge.log(res.err_msg);
&&&&&&&&&&&&&&&&&&&&alert(res.err_code+res.err_desc+res.err_msg);
&&&&&&&&&&&&&&&&&&&&//alert(&{$jsApiParameters}&);
&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&);
&&&&&&&&function&callpay()
&&&&&&&&&&&&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{
&&&&&&&&&&&&&&&&jsApiCall();
&&&&&&&&&&&&}
&&&&&/script&
&&&&&/br&&/br&&/br&&/br&
&&&&&div&align=&center&&
&&&&&&&&&button&style=&width:210&height:30&background-color:#FE6714;&border:0px&#FE6714&&cursor:&&&color:&&font-size:16&&type=&button&&onclick=&callpay()&&&贡献一下&/button&
&&&&&/div&
&/html&无须改动什么,直接复制就好
接下来是微信公众平台上的配置了,这里我遇到过问题,如果有在这里遇到问题的同学请留言,比如出现了access_deined或者access_notallowed等问题,这都可能是因为这里配置不对。
请看配置过程截图:
点击修改进入配置:
好了,可以测试了:下面是我的测试截图:
用微信扫描二维码
微信上点击贡献一下出现支付页面:
到此为止,微信JSAPI支付功能就全部做好了
当然,如果你是第一次做,肯定会遇到各种问题,
如果你是新手,遇到的问题都不知道为什么,
及时你做过了再做我相信还是可能由于细节上的疏忽会出现问题
不过不要烦躁,耐心的去发现问题
有问题请留言,下面还会介绍微信扫码支付模式一,模式二的详细教程
微信支付教程扫码模式一:
微信支付教程扫码模式二:
微信支付教程刷卡支付:
欢迎大家吐槽,转载请说明出处,请支持原创,谢谢!
我们的微信开发群:一群:
兴趣群:,代码已放在群文件中
欢迎大家加入讨论问题
积分:1613
ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。【微信支付】使用说明
目前平台支持包括微信平台等支付接口,由于微信支付涉及公众平台、支付平台等参数设置,以下将相关设置方法说明如下:
1、平台微信支付开启:
进入平台,电商系统--在线支付设置中开启微信支付
鉴别微信支付新老版本的三种方法:
1. 9月中旬后申请的微信支付应该为新版,
2. 申请微信支付时发来两个通知邮件是老版,
3. 申请微信支付时微信发来的邮件中带有“paysignKey”字样是老版!
因为微信端的新版微信支付错误提示不完整且不易读,
测试新版微信支付时,如果出现任何问题请先认真检查配置项是不是完全填写正确。
由于这个支付系统申请是12月份,所以选择新版微信支付,参数如下:
2、以上四个参数
Appid: &公众账号ID
Mchid: &商户号
Key: & &商户支付密钥Key
Appsecret: &JSAPI接口中获取openid
从哪里获取:
Appid: &公众账号ID
进入微信公众帐号后台:https://mp.
Mchid: &商户号
公众号后台,微信支付(前提是你必须申请了微信支付才会有这个菜单显示)
Key: & &商户支付密钥Key
这个参数是在另一个平台:https://pay. (微信支付平台,凡申请了微信支付都会有这个平台)
Appsecret: &JSAPI接口中获取openid
3、填写微信公众平台开发配置:
这个比较重要,不然支付会出错
1)公众号支付
JS API网页支付 包括全部在微信内点击浏览器H5页面进行的支付场景
支付授权目录
支付授权目录: http://访问地址/wxpay/ & (你的程序安装目录, 如果你的程序安装在二级目录, 请记得填写完整)
共享收货地址 写上是&
Native原生支付
支付回调URL: http://访问地址/wxpay/index.php
警告通知URL: &http://访问地址/wxpay/warning/index.php
这个比较重要,不然支付会出错!
确认保存后,你就可以开启微信支付之旅了!!!!
出现这个问题的请进入https://mp./ 微信公众管理后台
微信支付常见问题:
getBrandWCPayRequest:fail_nopermission to execute undefined出现此问题的原因是:微信支付的开发配置中的测试授权目录或授权目录没有设置正确
缺少必填参数openid!Appsecret 填写不对。可以检查或者重置Appsecret
点击支付按钮,调用JSAPI没反应?尝试发起支付的页面url,不在支付授权目录下,请检查url 与支付授权目录是否对应
点击支付按钮,提示“access_not_allow”参与测试人员的微信号没有在白名单中,将测试用户加入白名单。操作在 “mp.——微信支付——支付测试”
点击支付按钮,提示“access_denied”尝试发起支付的页面url,不在支付授权目录下,请检查url 与支付授权目录是否对应
点击支付页面链接后,没有反应?在开发调试阶段,测试链接需要在公众号内点击打开。操作方法可以是:白名单用户在公众号内向公众号发一条消息,消息内容即为测试链接,然后点击打开。
点击支付按钮,提示“当前公众号没有权限支付本次交易”请确认使用的APPID 是否正确,确认在MP 平台前三项审核结果均为“审核通过”。
点击支付按钮,提示“众账号支付使用了无效的商户号,无法发起该笔交易”请检查是否使用了正确的商户号,确认MP 平台前三项审核结果均为“审核通过”。
点击支付按钮,提示“该公众号支付签名无效,无法发起该笔交易”调起支付的签名错误,请检查相关签名
package中的参数partner或者prepay_id为空授权目录写错
Copyright &安徽仁科信息科技有限公司 微商360版本所有
& 24H服务热线:& 企业QQ: & 电话:3
服务中心:合肥万和新城广场1#6F

我要回帖

更多关于 公众号 开放平台 支付 的文章

 

随机推荐