主机参考:VPS测评参考推荐/专注分享VPS服务器优惠信息!若您是商家可以在本站进行投稿,查看详情!此外我们还提供软文收录、PayPal代付、广告赞助等服务,查看详情! |
我们发布的部分优惠活动文章可能存在时效性,购买时建议在本站搜索商家名称可查看相关文章充分了解该商家!若非中文页面可使用Edge浏览器同步翻译!PayPal代付/收录合作 |
本文介绍了微信支付下信用卡支付的发展过程。微信信用卡支付是指用户打开微信钱包的信用卡接口,商家扫码提交完成支付的支付过程。
1.信用卡支付API接口地址api.mch.weixin.qq.com/pay/micropay需要证书吗?
不需要。
输入参数名称变量名必需的类型示例值描述
对公账户IDappID为字符串(32)wx 888888888微信分配的对公账户ID(企业号corpid为appID),商户号mch_id为字符串(32)1900000109微信支付分配的商户号device_info无字符串(32)。013467007045764随机字符串nonce_str是字符串(32)5k 8264 iltk ch 16 CQ 2502 si 8 znm TM 67 vs随机字符串,长度不超过32位。推荐的随机数生成算法签名符号是字符串(32)c 380 bec 2 bfd 727 a 4b 6845133519 F3 ad 6的签名。详见签名生成算法产品说明body is String(128)image形象店-深圳腾达- QQ娃娃产品简单说明,此字段必须严格按照规范传输。具体请参考参数“产品明细无字符串(6000)”。商品详细信息& quot:[{ & quot;商品id & quot:& quotiphone6s _ 16G & quot,& quotwxpay _ goods _ id & quot:& quot1001 & quot,& quot商品名称& quot:& quotiPhone6s 16G & quot,& quot商品数量& quot:1 & quot;价格& quot:528800商品_类别& quot:& quot123456 & quot,& quotbody & quot:& quot苹果手机“},{ & quot商品id & quot:& quotiphone6s _ 32G & quot,& quotwxpay _ goods _ id & quot:& quot1002 & quot,& quot商品名称& quot:& quotiPhone6s 32G & quot,& quot数量& quot:1 & quot;价格& quot:608800商品_类别& quot:& quot123789 & quot,& quotbody & quot:& quot苹果手机“}】}详细的商品列表,JSON格式,在传输签名之前一定要使用CDATA标签保护Json文本字符串。
goods _ detail【】:└goods _ id字符串必填32产品编号└ wxpay_goods_id字符串可选32微信支付定义的统一产品编号└ goods_name字符串必填256产品名称└ goods_num Int必填数量└ price Int必填单价,单位为分钟└ goods_category字符串,可选32产品类别ID└ body字符串,可选1000个产品描述信息。
附加数据无字符串(127)表示附加数据,该数据按查询API和付款通知中的格式返回。该字段主要用于商户携带订单的自定义数据。商家订单号out_trade_no是字符串(32)121775250120140703323333368018,它在32个字符以内,可以包含字母。有关其他解释,请参见商家订单号、商品详细信息、详细信息、无字符串。
订单金额total_fee是Int888的订单总金额,单位是分钟,只能是整数。详细信息请参考付款金额货币类型fee _ type No String(16)CNY,三位数字母代码符合ISO4217,默认人民币:CNY。有关其他值的列表,请参考货币类型终端ipspbill_create_ip,它是字符串(16)8 . 8 . 8,机器IP商品标签goods_tag no字符串(32),商品标签、凭证或折扣功能的参数。详情请参考代金券或折扣指定的付款方式。limit _ pay No String(32)No _ credit No _ credit --指定信用卡支付授权码auth_code为String(128)120061098828009406扫码支付授权码。读取用户微信中条形码或二维码信息的设备示例如下:
& ltxml & gt& ltappid & gtwx 2421 B1 c 4370 EC 43 b & lt;/appid & gt;& lt附加& gt订单附加描述
返回结果名、变量名、所需类型、样本值描述
返回状态代码return_code是字符串(16)成功/失败。该字段是通信标识,而不是交易标识。交易是否成功需要检查result_code以确定返回信息return_msg是否未能签署字符串(128)返回信息。如果不为空,它将签署错误原因。当return_code成功时,它还将包括以下字段:
名称变量名必需的类型示例值描述
对公账户IDappID是String(32)wx 888888888调用接口提交的对公账户ID,商户号mch_id是String(32)190000109调用接口提交的商户号,device_info的设备号,String(32)0134670007045764调用接口提交的终端设备号。随机字符串nonce_str为string(32)5k 8264 iltk ch 16 CQ 2502 si 8 znmtm 67 vs微信返回的随机字符串签名为string(32)c 380 be 2 bfd 727 a 4b 6845133519 F3 ad 6微信。有关详细信息,请参见签名生成算法。业务结果result_code为字符串(16)成功/失败错误代码err_code无字符串(32)system error以了解详细信息。请参阅系统错误返回的错误列表错误代码描述err _ code _ des No String(128)信息描述。当返回代码和结果代码都成功时,将包括以下字段:
名称变量名必需的类型示例值描述
用户ID openid是商家appid下字符串(128)Y的唯一ID。is_subscribe为字符串(1)Y用户是否关注公众账号,仅在公众账号类型中有效,取值范围为Y或n;Y-注意;N-未关注交易类型trade_type为字符串(16),小额支付支付类型为小额支付(即扫码支付),支付银行bank_type为字符串(16)CMC银行类型,采用字符串类型的银行标识。有关值列表,请参考银行类型、货币类型、费用类型、无字符串(16)CNY、符合ISO 4217标准的三位数字母代码。默认值为人民币:CNY。有关其他值的列表,请参考货币类型。订单金额total_fee是Int888的订单总金额,单位是分钟,只能是整数。详情见付款金额。现金付款币种类型cash_fee _ TypeNo字符串(16)CNY符合ISO 4217的三位数字母代码。默认值为人民币:CNY。有关其他值的列表,请参见货币类型。现金支付金额Cash _ Fee是Int100订单的现金支付金额。详情见付款金额。微信支付订单号的transaction_id为字符串(32)121775250120140703323368018。商家订单号out_trade_no为字符串(32)12177525012014070323368018,与请求一致。商家数据包不附加字符串(128)123456商家数据包,支付完成时间按原样返回。time_end是字符串(14)20141030133525的订单生成时间,格式为yyyyMMddHHmmss。例如,2009年12月25日9点10分是20091225091010。详见时间规则。例子如下:
& ltxml & gt& ltreturn _ code & gt& lt!【CDATA【成功】】& gt& lt/return _ code & gt;& ltreturn _ msg & gt& lt!【CDATA【OK】】& gt;& lt/return _ msg & gt;& ltappid & gt& lt!【CDATA【wx 2421 B1 c 4370 EC 43 b】】& gt;& lt/appid & gt;& ltmch _ id & gt& lt!【CDATA【10000100】】& gt;& lt/mch _ id & gt;& lt设备信息& gt& lt!【CDATA【1000】】& gt;& lt/device _ info & gt;& ltnonce _ str & gt& lt!【CDATA【GOP 3 trymxzbmlkun】】& gt;& lt/nonce _ str & gt;& lt符号& gt& lt!【CDATA【d6c 76 CB 785 f 07992 CDE 05494 bb 7 df 7 FD】】& gt;& lt/sign & gt;& lt结果代码& gt& lt!【CDATA【成功】】& gt& lt/result _ code & gt;& ltopenid & gt& lt!【CDATA【oupf 8un 95-PTA AGS 6 e _ ROP G7 ag 0】】& gt;& lt/OpenID & gt;& ltis _ subscribe & gt& lt!【CDATA【Y】】& gt;& lt/is _ subscribe & gt;& lttrade_type>& lt!【CDATA【MICROPAY】】& gt;& lt/trade_type>。& ltbank_type>。& lt!【CDATA【CCB _ DEBIT】】& gt;& lt/bank_type>。& lttotal _ fee & gt1 & lt/total _ fee & gt;& ltcoupon _ fee & gt0 & lt/coupon _ fee & gt;& lt费用类型& gt& lt!【CDATA【CNY】】& gt;& lt/fee _ type & gt;& lttransaction _ id & gt& lt!【CDATA【100845074020141110005820873】】& gt;& lt/transaction _ id & gt;& ltout _ trade _ no & gt& lt!【CDATA【1415757673】】& gt;& lt/out _ trade _ no & gt;& lt附加& gt& lt!【CDATA【订单的附加说明】】& gt& lt/attach & gt;& lttime _ end & gt& lt!【CDATA【2014111170043】】& gt;& lt/time _ end & gt;& lt/XML & gt;二是实现了信用卡支付类。在微信支付原有的微信支付类文件中,新增信用卡支付类如下:
/* * *信用卡支付接口class */class micropay _ pub扩展wx pay _ client _ pub { function _ _ construct(){//设置接口链接$ this -& gt;url = & quothttps://api.mch.weixin.qq.com/pay/micropay";//设置卷曲超时$ this -& gt;CURL _ time out = WxPayConf _ pub::CURL _ time out;}/* * *生成接口参数XML */Function Create XML(){ Try {//检测所需参数if($ this -& gt;参数【& quotout _ trade _ no & quot】= = null){ throw new SDKRuntimeException(& quot;统一支付接口必需参数out_trade_no缺失!"。"& ltbr & gt");} else if($ this -& gt;参数【& quotbody & quot】= = null){ throw new SDKRuntimeException(& quot;统一支付接口必选参数体缺失!"。"& ltbr & gt");} else if($ this -& gt;参数【& quot总费用& quot】= = null){ throw new SDKRuntimeException(& quot;统一支付接口必需参数total_fee缺失!"。"& ltbr & gt");} else if($ this -& gt;参数【& quot授权代码& quot】= = null){ throw new SDKRuntimeException(& quot;统一支付接口必需参数auth_code缺失!"。"& ltbr & gt");} $ this -& gt;参数【& quotappid & quot】= WxPayConf _ pub::APPID;//公共帐户ID $ this -& gt;参数【& quotmch _ id & quot】= WxPayConf _ pub::MC hid;//商家编号$ this -& gt;参数【& quotspbill _ create _ ip & quot】= $ _ SERVER【& amp;#39;远程ADDR & amp;#39;];//终端IP $ this -& gt;参数【& quotnonce _ str & quot】= $ this -& gt;createnoncentr();//随机字符串$ this -& gt;参数【& quot签名& quot】= $ this -& gt;get sign($ this -& gt;参数);//签名//var _ dump($ this -& gt;参数);return $ this -& gt;arrayToXml($ this -》;参数);} catch(SDKRuntimeException $ e){ die($ E-& gt;error message());}}}原始的基本类和请求类也如下所示:
/* * *所有接口的基类*/class common _ util _ pub { function _ _ construct(){ }函数修整字符串($ value){ $ ret = null;if (null!= $ value){ $ ret = $ value;if(strlen($ ret)= = 0){ $ ret = null;} } return $ ret}/* * *函数:生成长度不超过32位的随机字符串*/public Function createnoncentr($ length = 32){ $ chars =“abcdefghijklmnopqrstuvwxyz 0123456789 & quot;;$ str = & quot";for($ I = 0;$ i & lt$ length$ i++){ $ str。= substr($ chars,mt _ rand(0,strlen($ chars)-1),1);} return $ str}/* * *函数:格式参数,签名过程需要使用*/Function formatbizqueryparamap($ paramap,$ urlencode){ $ buff =“& quot;;ksort($ paraMap);foreach($ paraMap as $ k = & gt;$ v){ if($ URL encode){ $ v = URL encode($ v);} //$buff= strtolow($ k)。"= & quot。$ v . & quot& amp";$buff。= $k。= & quot。$ v . & quot& amp";} $ reqParif(strlen($ buff)》0){ $ req par = substr($ buff,0,strlen($ buff)-1);} return $ reqPar}/* * *函数:生成签名*/公共函数get sign($ obj){ foreach($ objas $ k =》$ v){ $ Parameters【$ k】= $ v;}//签名第一步:按字典顺序对参数ksort($ Parameters)进行排序;$ String = $ this -& gt;formatBizQueryParaMap($ Parameters,false);//echo & amp;#39;【字符串1】& amp;#39;。$String。& amp#39;& lt/br & gt;& amp#39;;//签名第二步:在字符串后添加key $ string = $ string。& ampkey = & quot。WxPayConf _ pub::KEY;//echo & quot;【string 2】& quot;。$String。"& lt/br & gt;";//签名第三步:MD5加密$ String = MD5($ String);//echo & quot;【字符串3】& quot;。$String。"& lt/br & gt;";//签名第四步:所有字符都大写$ result _ = strtop($ string);//echo & quot;【结果】& quot。$result_。"& lt/br & gt;";返回$ result _;}/* * * Function:array to XML */Function arraytoxml($ arr){ $ XML =“& lt;xml & gt";foreach($ arr as $ key = & gt;$ val){ if(is _ numeric $ val)){ $ XML。= & quot& lt"。$key。"& gt"。瓦尔。"& lt/& quot;。$key。"& gt";} else $xml。= & quot& lt"。$key。"& gt& lt!【CDATA【& quot;。瓦尔。"】】》;& lt/& quot;。$key。"& gt";} $xml。= & quot& lt/XML & gt;";返回$ xml}/* * *函数:将xml转换为数组*/公共函数xmlto array($ XML){//将XML转换为数组$ array _ data = JSON _ decode(JSON _ encode(SimpleXML _ load _ string($ XML,&;#39;SimpleXMLElement & amp#39;,LIBXML_NOCDATA),true);返回$ array _ data}/* * *函数:将xml提交到对应的接口URL */公共函数postxmlurl($ XML,$ URL,$ second = 30){//初始化curl $ ch = curl _ init();//设置超时curl _ setopt($ ch,curl _ timeout,$ second);//在此设置代理(如果有的话)//curl _ Set opt($ ch,curl _ proxy,&;#39;8.8.8&。#39;);//curl _ setopt($ ch,CURLOPT_PROXYPORT,8080);curl _ setopt($ ch,CURLOPT_URL,$ URL);curl _ setopt($ ch,CURLOPT_SSL_VERIFYPEER,FALSE);curl _ setopt($ ch,CURLOPT_SSL_VERIFYHOST,FALSE);//Set header curl _ setopt($ ch,curl opt _ header,false);//要求结果为字符串并输出到屏幕curl _ set opt($ ch,curl opt _ return transfer,true);//post提交方法curl _ set opt($ ch,curl opt _ post,true);curl _ setopt($ ch,CURLOPT_POSTFIELDS,$ XML);//运行curl $ data = curl _ exec($ ch);curl _ close($ ch);//返回结果if($ data){ curl _ close($ ch);返回$ data} else { $ error = curl _ errno($ ch);回声& quot卷曲错误,错误代码:$ error & quot。"& ltbr & gt";回声& quot& lta href = & amp#39;http://curl.haxx.se/libcurl/c/libcurl-errors.html&第39名;& gt错误原因查询
其他参数自动生成或手动指定。
调用函数如下
//介绍微信支付类厂商(& amp global(&;#39;Wxpay。WxPayPubHelper . WxPayPubHelper & amp;#39;);//使用统一支付接口$ microPay = new \ microPay _ pub();//设置统一支付接口参数$ micropay -& gt;设置参数(& quotbody & quot,& quot方时报商户刷卡支付”);//产品描述$ micropay -》;设置参数(& quotout _ trade _ no & quot,& quot$ out _ trade _ no & quot);//商家订单号$ micropay -》;设置参数(& quot总费用& quot,$ total _ fee);//总金额$ micropay -》;设置参数(& quot授权代码& quot,$ authcode);//授权码//获取统一支付接口结果$ microPayResult = $ micropay -& gt;getResult();//3.判断异常if(!isset($ microPayResult【& quot;结果代码& quot】)| |($ microPayResult【& quot;结果代码& quot】= = = & quot;失败")){ $ this -》;resRpcError(isset($ microPayResult【& amp;#39;结果代码& amp#39;]) ?$ microPayResult【& amp;#39;错误代码。#39;】:$ microPayResult【& amp;#39;return _ msg & amp#39;】,& quot21000");}【相关推荐】
1.下载微信微信官方账号平台源代码。
2.分享微信微信官方账号开发信用卡支付的实例教程。
3.微信开发的微信支付
4.详细讲解微信小程序支付功能开发的错误总结。
这几篇文章你可能也喜欢:
- 暂无相关推荐文章
本文由主机参考刊发,转载请注明:详细讲解一下微信开发的信用卡支付的例子(微信开通信用卡支付)。 https://zhujicankao.com/113307.html
评论前必须登录!
注册