地址sql 不允许保存更改调用接口,如有需要请登录微信支付商户平台更改配置

微信小店微信支付功能常见问题
1、微信支付和财付通的关系?
微信支付是以绑定银行卡为基础的支付服务,由财付通提供支付牌照和银行通道的技术支持。用户使用微信支付绑定银行卡,和微信号对应QQ使用财付通的绑定无关。
同时,用户使用微信号对应QQ登录财付通,无法查看微信支付绑定的银行卡和对应的交易记录。
对于用户,主要认知的是微信支付品牌。对于商户,除了拥有微信公众帐号的商户身份,还会有微信公众平台分配一个财付通的商户号,用于结账收款。
2、微信支付如何绑定银行卡?如何支付?
用户首次绑定银行卡时,输入银行卡号和持卡人信息,验证银行预留手机号,即可绑定。用户还需设置支付密码(非银行取款密码),后续购买不用再绑卡,验证支付密码即可直接支付。微信支付的绑定和支付流程,都是标准的快捷支付流程。
3、微信支付可以绑定的银行卡数量?
支持绑定13家银行,22个卡种的银行卡,包括储蓄卡和信用卡都可以。目前正在不断接入银行,覆盖范围会越来越大。
4、微信除了提供商户的支付接口,还有其他接口能力吗?
除了支付接口,微信还会提供订单查询、退款、退款查询、对账单下载等支付相关的接口,和财付通提供给商户的接口能力一样。不少商户担心退款和对账的接口,这些都是可以提供的。具体参考《财付通支付网关商户开发指南》。
5、微信支付的支付类型是?
微信支付使用的是即时到帐接口,暂不支持担保交易类型交易。
6、收货地址共享的地址格式是?
微信收货地址是基于三级的国标数据,地区对应是国标三级地区码,如&广东省-广州市-天河区&,对应的是510630。
7、微信支付的安全性如何保证?
有以下手段保证支付安全:
绑定银行卡需要验证实名信息和银行预留手机号;绑定银行卡后设置支付密码,交易需要验证此支付密码,大额支付还需要验证手机短信;
微信认证商户网页是安全的支付环境,会有微信安全支付的认证标题,提示用户;  
支付后台有腾讯的大数据支撑,海量的数据和云端的计算能够及时判定用户的支付行为存在的风险性,如异地支付、非常用设备支付、QQ号被盗等情况,会分析和拦截异常支付行为;
7*24小时客户服务,加上微信客服,将及时为用户排忧解难;同时为微信支付开辟的专属客服通道,将以最快的速度响应用户的提出问题并做出处理判断;
8、接入微信支付,商户担心网页会被假冒和钓鱼?
微信会认证安全商户的网页,提示&微信安全支付&;不安全或者高风险的网页,微信会弹出中间页提示不安全并拦截,未受安全认证的网页内填写相关帐号或者支付,也会提示有系统&网页内提示不要输入QQ密码或请勿支付&。
9、商户接入微信支付的成本高吗?
对于已有H5商城的商户接入JS
API支付,前端页面上加微信支付按钮即可,支付成功后,后台接收通知发货;对于接入Native(原生)支付,商户后台增加一个下单接口,接收微信的下单请求即可。开发成本较低,不需要改变已有的流程。
9、商户使用微信支付需要有一个财付通商户号,能否使用已有的商户号?
由于支付权限和支付费率的差异,不能使用已有的财付通商户号,需要在微信公众平台重新申请开通。微信公众号红包接口开发PHP开发 CA证书出错,请登陆微信支付商户平台下载证书
微信红包接口调试过程中一直提示&CA证书出错,请登陆微信支付商户平台下载证书&,经反复调试,大致解决方法如下:
1.首先确保CA证书的路径是否正确,一定得是绝对路径,因为是PHP开发的,这里需要三个pem证书
2.确保服务器支持,新浪云的sae,经测试支持不是很好,一直报错,换用其他服务器后,一次通过
POST红包证书的代码部分如下:
function post( $strXml) {
$url='https://api.mch./mmpaymkttransfers/sendredpack';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
//因为微信红包在使用过程中需要验证服务器和域名,故需要设置下面两行
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
// 只信任CA颁布的证书
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); // 检查证书中是否设置域名,并且是否与提供的主机名匹配
curl_setopt($ch, CURLOPT_SSLCERT,'/var/www/html/hongbao/apiclient_cert.pem');
curl_setopt($ch, CURLOPT_SSLKEY,'/var/www/html/hongbao/apiclient_key.pem');
curl_setopt($ch, CURLOPT_CAINFO, '/var/www/html/hongbao/rootca.pem'); // CA根证书(用来验证的网站证书是否是CA颁布)
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $strXml);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
$res = curl_exec($ch);
curl_close($ch);
> 本站内容系网友提交或本网编辑转载,其目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请及时与本网联系,我们将在第一时间删除内容!
最近做微信公众号,用php,发现二维码里面有appid 和secret 中间有个&符号,用安卓和wp都可以扫出来,但是用苹果,它会自动将&符号屏蔽掉,解决方法是::::将从微信scan_waitmsg接口获取的字符串做判断,有&则不变,没有则加上...这是苹果app的原因应该是..
现有的微信卡券接口文档中,签名是用api_ticket作为加密参数,但使用api_ticket会提示“签名错误”,导致卡券无法正常领取, 解决办法是把api_ticket替换为公众号的appSecret即可,如下: $signature
= sha1($timestamp.$api_ticket.$card_id); 改为: $signature
欢迎大家扫描关注PHPthinking官方微信订阅号,我们将给您定期发送质量博文.新闻趣事.网站公告等等,同时还有PHPthinking准备的每日微信红包(金额不等,已发出百元红包)等着你!官网地址:/
欢迎大家扫描关注PHPthinking官方微信订阅号,我们将给您定期发送质量博文.新闻趣事.网站公告等等,同时还有PHPthinking准备的每日微信红包(金额不等,已发出百元红包)等着你!官网地址:/
农历新年将至,支付宝红包打了一仗,微信在朋友圈屏蔽了它的分享,但单防守还不行,进攻才是最好的防守.昨日,微信支付现金红包接口正式开放,只需开通微信支付,即可接入现金红包.微信公众号也可以发放现金红包了! 通过现金红包接口,公众号开发者可以策划相关运营活动,向用户发放微信支付现金红包,更好的达到品牌推广及回馈用户的效果. 1.商户调用接口时,通过指定发送对象以 ...
一.前言 当下微信公众号几乎已经是每个公司必备的,但是大部分微信公众账号用户体验都欠佳,特别是涉及到用户绑定等,需要用户进行复杂的操作才可以和网站绑定,或者很多公司直接不绑定,而是每次都让用户填写账号密码.作为微信接口开发人员我们知道网页授权可以用作微信网页用作安全登录,带参数二维码的使用用作记录用户来源,模板消息用作购物消费等消息的通知,但是很少看到有综合 ...
开发和调试之殇 微信公众号的开发,说简单也简单,说麻烦也麻烦,麻烦的不是开发过程,而是搭建开发环境的过程.只是俗话说得好,磨刀不误砍柴工,我们有必要花点时间来研究下怎样攻破微信公众号的开发环.说白了,公众号的开发就是基于HTML/CSS/JS的移动端Web App的开发.但微信公众号和普通的移动Web App开发还略有不同,由于非常多情况下我们会调用公众号的 ...
转自://wx_bind/ 最近由于工作需要,接触了微信公众号的开发.业务上要求绑定微信用户和系统用户,以便用户在一次绑定后能够通过系统用户的身份去使用一些功能.我关注的招行信用卡公众号实现了这个功能,所以估计还是可行的,在网上搜索了一下,发现这个问题没什么好的答案,很多都说取不到微信用户名实现不了,甚 ...摘要: 关键字:微信公众平台 微信支付 Native原生支付作者:方倍工作室原文:/txw1958/p/wxpay-native.html在这篇微信公众平台开发教程中,我们将介绍如何开发实现微信支付的Native功能。本文分为以下三个部分:生成Native支付UR...
posted @&&方倍工作室 阅读(1) |&&
摘要: 关键字:微信公众平台 微信支付 全网发布 作者:方倍工作室原文:/txw1958/p/wxpay-publish.html在这篇微信公众平台开发教程中,我们将介绍如何开发实现微信支付的全网发布功能。本文分为以下三个部分:微信支付目录设置发货接口的调通维权接...
posted @&&方倍工作室 阅读(1048) |&&
摘要: 本文介绍微信支付中如何标记客户投诉的处理状态。一、APIApi 的 url 为:https://api./payfeedback/update?access_token=xxxxx&openid=XXXX&feedbackid=xxxxUrl 中的参数包含目前微信公众平台凭...
posted @&&方倍工作室 阅读(343) |&&
摘要: 本文介绍微信支付中如何获得维权通知。一、维权通知URL在 微信支付开发(1) 微信支付URL配置已提到,维权通知URL为/wxpay/rights.php二、用户维权系统接口用户在公众号进行支付贩买行为出现异常时,通常会投诉到腾讯客服,因此微信侧需要即时了...
posted @&&方倍工作室 阅读(4086) |&&
摘要: 本文介绍微信支付中如何获得告警通知。一、告警通知为了及时通知商户异常,提高商户在微信平台的服务质量。微信后台会向商户推送告警通知,包括发货延迟、调用失败、通知失败等情况,通知的地址是商户在申请支付时填写的告警通知URL,在&公众平台-服务-服务中心-商户功能-商户基本资料-告警通知URL&可以查看。...
posted @&&方倍工作室 阅读(2658) |&&
摘要: 本文介绍微信支付中发货通知功能的实现。一、发货通知为了更好地跟踪订单的情况,需要第三方在收到最终支付通知之后,调用发货通知API告知微信后台该订单的发货状态。发货时间限制:虚拟、服务类24小时内,实物类72小时内。请在收到支付通知后,按时发货,并使用发货通知接口将相关信息同步到微信后台。若平台在规定...
posted @&&方倍工作室 阅读(3525) |&&
摘要: 本文介绍微信支付中订单查询功能的实现。作者:方倍工作室地址:/txw1958/p/wxpay-order-query.html一、订单查询因为某一方技术的原因,可能导致商户在预期时间内都收不到最终支付通知,此时商户可以通过该API来查询订单的详细支付状态。...
posted @&&方倍工作室 阅读(4707) |&&
摘要: 本文介绍如何使用JS API支付时如何获得交易通知。一、交易通知用户在成功完成支付后,微信后台通知(POST)商户服务器(notify_url)支付结果。商户可以使用notify_url的通知结果进行个性化页面的展示。对后台通知交互时,如果微信收到商户的应答不是success或超时,微信不为通知失败...
posted @&&方倍工作室 阅读(3331) |&&
摘要: 本文介绍如何使用JS API支付接口完成微信支付。一、JS API支付接口(getBrandWCPayRequest)微信JS API只能在微信内置浏览器中使用,其他浏览器调用无效。微信提供getBrandWCPayRequest接口供商户前端网页调用,调用之前微信会鉴定商户支付权限,若商户具有调起...
posted @&&方倍工作室 阅读(7118) |&&
摘要: 本文介绍微信支付账号体系各参数。商户在微信公众平台提交申请资料以及银行账户资料,资料审核通过并签约后,可以获得表6-4所示帐户(包含财付通的相关支付资金账户),用于公众帐号支付。帐号作用appId公众帐号身份的唯一标识。审核通过后,在微信发送的邮件中查看。appSecret公众帐号支付请求中用于加密...
posted @&&方倍工作室 阅读(3585) |&&
摘要: 本文介绍微信支付申请时如何设置授权目录及URL。在申请微信支付时,第一项就会碰到下图的配置。下面就对这一设置进行讲解!一、选择支付类型目前有两种支付类型JS API网页支付Native原生支付如果没有特殊要求,两种都勾选。二、支付授权目录目前可以选择http还是https协议,没有特别要求,建议选择...
posted @&&方倍工作室 阅读(8106) |&&
阅读(...) 评论()坑爹的微信支付v3,其实没有那么坑 - 推酷
坑爹的微信支付v3,其实没有那么坑
研究微信开发一年多了,每个新接口,都会第一时间进行研究。微信支付开放很久,一直没机会接触到支付接口,等了好久终于从朋友那儿搞到了接口,从此开始了我两天多的支付接口的研究。
拿到这个接口文档的第一个想法就是这也没什么难的嘛, 和支付宝、财付通、网银在线等一些传统接口的思路逻辑都是一样的,觉得差不多最多一个下午就可以搞定,结果第一步调用统一支付接口就给来了个下马威,不管怎么改,就一直返回签名错误。第一次遇到签名错误,首先想到的是应该是没有正确理解签名的生成规则,又从头看了几次签名的生成规则,每次都是的理解都是一样的,试了改几次还是不行。 这一次已经开始怀疑腾讯的文档写的有问题,一边找其他资料一边在心里骂腾讯写文档的作者。在园子里看到了
后,更加确认是微信的文档的问题。现在想想当时的想法太幼稚了,大部分自信心爆棚的人,在遇到解决不了的问题时总是会怀疑是不是别人给的东西不对,而不会从自身找问题,一句话总结就是 一到便秘就怪地球没引力 。(各位看官请勿对号入座,纯属个人见解,勿喷)。
现在说正题。。
从开始遇到错误到最后解决签名的问题,总结的问题就是我在生成签名的时候把参数进行了编码,而官方给的开发文档并没有说要做url编码,另外一个就是我进入了一个死胡同,总觉得自己的理解与实现过程没有问题,但最后当我把之前写的代码完全放弃,推倒重做后,问题终于解决。兴奋之极。下面从头说下我的理解与解决方法。
官方文档中接口调用规则:
?& 认证方式:HTTPS 认证,退款和冲正接口调用需要商户证书(证书在审核邮件附件
?& 请求采用 POST 方式
?& 提交和返回结果采用 XML 格式
?& 字符集默认使用 UTF-8,请勿使用其它字符集
?& 商户与微信之间的交互(特别是 Native 回调和支付通知回调),都需要验证签名
?& 处理返回时先判断协议返回错误码,再判断业务返回错误码,最后判断交易状态
下面是官方的签名生成方法
a.对所有传入参数按照字段名的 ASCII 码 从小到大排序(字典序) 后,使用 URL 键值对的格式(即 key1=value1&key2=value2…)拼接成字符串 string1, 注意: 值为空的参数不参与签名 ;
b. 在 string1 最 后 拼 接 上 key=Key( 商 户 支 付 密 钥 ) 得 到 stringSignTemp 字 符 串 , 并 对 stringSignTemp 进行 md5 运算,再将得到的字符串所有字符转换为大写,得到 sign 值
下面是我所理解的签名生成规则:
1,所有的参数都是小写的
2,参数的值不需要做任何处理,包括url编码
3,确保必须的参数不能为空,且是正确无误的。
下面是示范过程:
要传入的参数分别为:appid, mch_id, nonce_str, body, attach, out_trade_no, total_fee, spbill_create_ip, notify_url, trade_type, openid(jsapi必须)& , product_id(native必须) 。
首先将键值对存入&Dictionary&string,string&中,其次根据key值升序排序,代码如下:& & var dictemp = dic.OrderBy(d =& d.Key);
然后将键值对转换成url形式后,在末尾链接上key值,例如:appid=****&attach=****…………&key=******,最后进行md5加密并将加密后的字符串转换成大写。这里需要特别注意的是,md5加密是需要将字符集转换成utf-8,否则中文商品描述会出现乱码。
public static string MD5(string pwd)
MD5 md5 = new MD5CryptoServiceProvider();
byte[] data = System.Text.Encoding.UTF8.GetBytes(pwd);
byte[] md5data = puteHash(data);
md5.Clear();
string str = &&;
for (int i = 0; i & md5data.L i++)
str += md5data[i].ToString(&x&).PadLeft(2, '0');
生成签名后将sign=签名 &键值对添加到生成签名时生成的dictemp中,然后将dictemp转换成xml,post到
,返回值也是xml,最后对xml进行解析,为了保证安全性,需将解析后的键值对进行签名校验。
1 &xml&&appid&&![CDATA[******]]&&/appid&&mch_id&&![CDATA[******]]&&/mch_id&&nonce_str&&![CDATA[b48cfbebd4c9df66f0e47]]&&/nonce_str&&body&&![CDATA[神六]]&&/body&&out_trade_no&&![CDATA[ggggg673526]]&&/out_trade_no&&total_fee&&![CDATA[1000000]]&&/total_fee&&spbill_create_ip&&![CDATA[59.174.203.41]]&&/spbill_create_ip&&notify_url&&![CDATA[http://wxpay.ttyouni.net/aspx/order/notify.aspx]]&&/notify_url&&trade_type&&![CDATA[JSAPI]]&&/trade_type&&openid&&![CDATA[ozJkDj6yXuUsxIgS4xiJbtZMv2XQ]]&&/openid&&sign&&![CDATA[7CBA5A6BFF210BDA8C1AA33E9D803711]]&&/sign&&/xml&
校验签名无误后,下一步就是取出预支付id prepay_id,然后调用微信支付js,注意:调用微信支付js之前也需要将所有参与调用的参数进行签名,且这里的参与签名的参数需要验证遵守大小写(腾讯有的时候真的很脑残,一会全小写,一会有大写有小写)。生成签名后就可以调用微信支付js了,代码如下:
1 var WxPay= {
Pay: function (appId, timeStamp, nonceStr, package, signType, paySign,callback) {
WeixinJSBridge.invoke('getBrandWCPayRequest', {
&appId&: appId,
//公众号名称,由商户传入
&timeStamp&:timeStamp,
//时间戳,自 1970 年以来的秒数
&nonceStr&: nonceStr, //随机串
&package&: package,
&signType&: signType,
//微信签名方式
&paySign&: paySign //微信签名
}, function (res) {
if (res.err_msg == &get_brand_wcpay_request:ok&) {
callback();
// 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg 将在用户支付成功后返回 ok,但并不保证它绝对可靠。
微信支付js
为了方便调用,我将微信支付js写到了一个单独的js文件,然后在页面中载入,生成签名用ajax调用。调用代码如下:
1 &script&
$(function () {
$(&#submit&).click(function () {
$.get(&WxPay.ashx?action=jspayparam&, {
body: $(&#body&).val(),
total_fee: $(&#price&).val(),
out_trade_no: $(&#order&).val(),
trade_type: &JSAPI&,
msgid:&&%=openid%&&
}, function (data) {
WxPay.Pay(data.appId, data.timeStamp, data.nonceStr, data.package, data.signType, data.paySign, function () {
alert(&支付成功&);
}, &json&);
支付js调用
这里我只传入了一些和商品相关的参数,其他和商品无法的参数写到了后台代码中。后台收到请求后,将appid,mch_id等参数拼接成键值对进行进一步的处理,然后将处理后的结果返回给前台。
void GetJsPayParam(HttpContext context)
JsEntities jsEntities = new JsEntities()
appId = appid,
nonceStr = WxPayHelper.Utils.GetRandom(),
package = string.Format(&prepay_id={0}&, GetPrepayId(context)),
signType = &MD5&,
timeStamp = WxPayHelper.Utils.ConvertDateTimeInt(DateTime.Now).ToString()
string url,
WxPayHelper.Utils.GetUnifyUrlXml&JsEntities&(jsEntities, key, out url, out sign);
jsEntities.paySign =
context.Response.Write(JsonConvert.SerializeObject(jsEntities));
获取js支付参数
下面是生成键值对的方法,由于请求支付的过程中,到处需要生成签名,所以我将各个请求参数都写成了一个个类,然后使用泛型类和反射动态生成字典键值对,请求url和xml。代码如下:
public static string GetUnifyUrlXml&T&(T t,string key,out string url,out string _sign)
Type type = typeof (T);
Dictionary&string,string& dic = new Dictionary&string, string&();
PropertyInfo[] pis = type.GetProperties();
#region 组合url参数到字典里
foreach (PropertyInfo pi in pis)
object val = pi.GetValue(t, null);
if (val != null)
dic.Add(pi.Name, val.ToString());
#endregion
//字典排序
var dictemp = dic.OrderBy(d =& d.Key);
#region 生成url字符串
StringBuilder str = new StringBuilder();
foreach (var item in dictemp)
str.AppendFormat(&{0}={1}&&, item.Key, item.Value);
#endregion
var ourl= str.ToString().Trim('&');
string tempsign = ourl + &&key=&+
//md5加密后,转换成大写
string sign = MD5(tempsign).ToUpper();
//将签名添加到字典中
dic.Add(&sign&, sign);
url = str.AppendFormat(&sign={0}&,sign).ToString();
//生成请求的内容,并返回
return parseXML(dic);
生成键值对,url,xml
到这里应该就可以满足jsapi的需求了, 后期会将native和其他接口分享给大家。
如果你觉得本人对你有帮助,请大方的扫下面的二维码悬赏一下吧。
新建了个微信支付及微信开发的QQ群,欢迎大家加入一起交流微信开发技术。
已发表评论数()
已收藏到推刊!
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
没有分页内容
图片无法显示
视频无法显示
与原文不一致

我要回帖

更多关于 sql 不允许保存更改 的文章

 

随机推荐