ios 微信支付官方demoo测试闪退问题,如何解决?

  &&& 最近一个项目要增加微信支付的功能,想来这个东西出来这么久了,按微信提供的应该可以很快搞定的,结果提供的demo( JS API网页支付)中各种坑,咨询他们的客服,态度倒是非常好,就是解决不了问题,最后让我发邮件,一想,这个邮件一来一回至少又得好几个小时,没有办法只能根据开发文档一个一个核对,再加上些猜想,终于完成了。为了别的朋友少踩些坑,特此小文,希望对一此朋友有所帮助。
&&&&&&&& 当然,要集成微信支付,首先还是要先有一个微网站,熟悉的请飘过,不了解的,可以参考下我之前的一篇小文
更多信息可以登录
  && 目前的情况应该是,只有认证的服务号可以申请微信支付功能。相关认证、申请的操作,登录微信公众平台一看就知道了,在此就不细说了。要特别注意的就是要填写相关请求目录,请求url时,要特别注意,目前微信公众平台是不能自己修改的,只能发邮件给:,让他们修改,邮件格式可以向客服咨询。
  & 当然,还有一个最重要的准备工作,就是先获取他们的文档和demo.& 要注意的就是,他们的demo中有很多坑哦。不过,他们的文档我没有看到问题,细读这些文档还是少不了的。
测试相关配置
&&&&&&& 如果你的帐号现在处于支付测试状态下,需要进行相关配置。请根据下图操作。
                            图(1)
                图(2)
demo( JS API网页支付)中可能有问题的地方
&&&&&&& 下面我就把我在微信提供的demo基础上,说明下要修改的地方。之前一直提示什么订单数据验证失败,当看下图时就知道OK了。
   jsapi.aspx.cs& 第50行,增加参数:&packageReqHandler.setParameter(&bank_type&, &WX&);&& &//固定为&WX&;
&&&&&&& /tenpayLib/TenpayUtil.cs& 中的key 其实是 PartnerKey,一开始我还以为是appkey。
&&&&&&& /tenpayLib/RequestHandler.cs 中的 key一定要赋值为 &TenpayUtil.key,默认是空的。
&&&&&&& /tenpayLib/ResponseHandler.cs 中的 key 和appkey 一定要赋值为 TenpayUtil.key和TenpayUtil.
&&&&&&& 如果你的项目是utf-8的,还要修改以下内容:
   TenpayUtil.cs.getNoncestr 变成
   public static string getNoncestr()&&&&&&& {&&&&&&&&&&& Random random = new Random();&&&&&&&&&&& return MD5Util.GetMD5(random.Next(1000).ToString(), charset);&&&&&&& }
&&&&&& /tenpayLib/ResponseHandler.cs 中的charset
&&&&&& 所有用到charset的地方修改成utf-8。
&&&&& 原本是一个简单的事儿,可由于官方demo的一些问题,用去了我和他们客服的时间,所以希望对在集成或者准备集成的微信支付的朋友有点帮助,做为程序员,我们的时间应该是用在更有意义的地方。为了方便大家,我把自己最后的支付相关代码也做了整理,虽然不能直接用,其实也是稍微修改下里面的逻辑就可以直接用,另外,鄙人能力有限,写得不好,有不对的地方,也请大家海涵哈!
&&&& 成为一名优秀的程序员!转自:/jijunjian/p/3850999
如非特别注明,本站内容均为原创,转载请务必注明作者和原始出处。
本文地址:
Android是一个开源的,基于Linux 的移动设备操作系统。Android 提供了一个统一的应用程序开发方法,这意味着开发人员只需要开发Android,并且他们的应用程序应该能够运行在不同搭载Android移动设备。微信支付Demo测试闪退问题,怎么解决?_百度知道
微信支付Demo测试闪退问题,怎么解决?
您的回答被采纳后将获得:
系统奖励20(财富值+经验值)+难题奖励20(财富值+经验值)
我有更好的答案
其他类似问题
为您推荐:
demo的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁微信支付开发当前URL未注册的解决方案 - ThinkPHP框架
微信支付开发当前URL未注册的解决方案流程实现
1. OAuth2.0授权
JSAPI 支付前需要调用 登录授权接口获取到用户的 Openid 。所以需要做一次授权,这次授权是不弹出确认框的。
其实质就是在用户访问http://www.fangbei.org/wxpay/js_api_call.php时跳转到https://open./connect/oauth2/authorize?appid=wx8888&redirect_uri=http://www.fangbei.org/wxpay/js_api_call.php&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect以此来获得code参数,并根据code来获得授权access_token及openid
其实现的详细流程可参考 微信公众平台开发(71)OAuth2.0网页授权
在微信支付的Demo中,其代码为
1&//使用jsapi接口
&2&$jsApi&=&new&JsApi_pub();
&4&//=========步骤1:网页授权获取用户openid============
&5&//通过code获得openid
&6&if&(!isset($_GET['code']))
&8&&&&&//触发微信返回code码
&9&&&&&$url&=&$jsApi-&createOauthUrlForCode(WxPayConf_pub::JS_API_CALL_URL);
10&&&&&Header(&Location:&$url&);&
13&&&&&//获取code码,以获取openid
14&&&&&$code&=&$_GET['code'];
15&&&&&$jsApi-&setCode($code);
16&&&&&$openid&=&$jsApi-&getOpenId();
17&}这一步的最终结果就是获得了当前用户的openidou9dHt0L8qFLI1foP-kj5x1mDWsM
2. 统一支付
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返回预支付订单号的接口,目前微信支付所有场景均使用这一接口
统一支付中以下参数从配置中获取,或由类自动生成,不需要用户填写$this-&parameters[&appid&]&=&WxPayConf_pub::APPID;//公众账号ID
$this-&parameters[&mch_id&]&=&WxPayConf_pub::MCHID;//商户号
$this-&parameters[&spbill_create_ip&]&=&$_SERVER['REMOTE_ADDR'];//终端ip&&&&&&&&
$this-&parameters[&nonce_str&]&=&$this-&createNoncestr();//随机字符串
$this-&parameters[&sign&]&=&$this-&getSign($this-&parameters);//签名在JSAPI支付中,另外填写以下参数//统一支付接口中,trade_type为JSAPI时,openid为必填参数!
$unifiedOrder-&setParameter(&openid&,&$openid&);//商品描述
$unifiedOrder-&setParameter(&body&,&方倍工作室&);//商品描述
//自定义订单号,此处仅作举例
$timeStamp&=&time();
$out_trade_no&=&WxPayConf_pub::APPID.&$timeStamp&;
$unifiedOrder-&setParameter(&out_trade_no&,&$out_trade_no&);//商户订单号&
$unifiedOrder-&setParameter(&total_fee&,&1&);//总金额
$unifiedOrder-&setParameter(&notify_url&,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这些参数最终组成了这样的xml数据,&xml&
&&&openid&&![CDATA[ou9dHt0L8qFLI1foP-kj5x1mDWsM]]&&/openid&
&&&body&&![CDATA[方倍工作室]]&&/body&
&&&out_trade_no&&![CDATA[wx79]]&&/out_trade_no&
&&&total_fee&1&/total_fee&
&&&notify_url&&![CDATA[http://www.fangbei.org/wxpay/notify_url.php]]&&/notify_url&
&&&trade_type&&![CDATA[JSAPI]]&&/trade_type&
&&&appid&&![CDATA[wx8888]]&&/appid&
&&&mch_id&&/mch_id&
&&&spbill_create_ip&&![CDATA[61.50.221.43]]&&/spbill_create_ip&
&&&nonce_str&&![CDATA[60uf9sh6nmppr9azveb2bn7arhy79izk]]&&/nonce_str&
&&&sign&&![CDATA[2D8ABBA23D0F]]&&/sign&
&/xml&将这些数据提交给统一支付接口https://api.mch./pay/unifiedorder将获得返回 如下数据&xml&
&&&return_code&&![CDATA[SUCCESS]]&&/return_code&&&
&&&return_msg&&![CDATA[OK]]&&/return_msg&&&
&&&appid&&![CDATA[wx8888]]&&/appid&&&
&&&mch_id&&![CDATA[]]&&/mch_id&&&
&&&nonce_str&&![CDATA[Be8YX7gjCdtCT7cr]]&&/nonce_str&&&
&&&sign&&![CDATA[885B6D8EF753A00C8EEDB]]&&/sign&&&
&&&result_code&&![CDATA[SUCCESS]]&&/result_code&&&
&&&prepay_id&&![CDATA[wx]]&&/prepay_id&&&
&&&trade_type&&![CDATA[JSAPI]]&&/trade_type&&
&/xml&其中包含了最重要的预支付ID参数,prepay_id,值为 wx
3、JS API支付
前面的准备工作做好了以后,JS API根据prepay_id生成jsapi支付参数
生成代码如下
//=========步骤3:使用jsapi调起支付============$jsApi-&setPrepayId($prepay_id);
$jsApiParameters&=&$jsApi-&getParameters();生成的json数据如下{
&&&&&appId&:&&wx8888&,
&&&&&timeStamp&:&&&,
&&&&&nonceStr&:&&gbwr71b5no6q6ne18c8up1u7l7he2y75&,
&&&&&package&:&&prepay_id=wx&,
&&&&&signType&:&&MD5&,
&&&&&paySign&:&&9CF851EBF6C7D&
}在微信浏览器中调试起js接口,代码如下&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);
&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&);
&&&&&&&&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&当用户点击“贡献一下”按钮时,将弹出微信支付插件,用户可以开始支付。
4、支付通知
支付成功后,通知接口中也将收到支付成功的xml通知&xml&
&&&appid&&![CDATA[wx8888]]&&/appid&&&
&&&bank_type&&![CDATA[CFT]]&&/bank_type&&&
&&&fee_type&&![CDATA[CNY]]&&/fee_type&&&
&&&is_subscribe&&![CDATA[Y]]&&/is_subscribe&&&
&&&mch_id&&![CDATA[]]&&/mch_id&&&
&&&nonce_str&&![CDATA[60uf9sh6nmppr9azveb2bn7arhy79izk]]&&/nonce_str&&&
&&&openid&&![CDATA[ou9dHt0L8qFLI1foP-kj5x1mDWsM]]&&/openid&&&
&&&out_trade_no&&![CDATA[wx79]]&&/out_trade_no&&&
&&&result_code&&![CDATA[SUCCESS]]&&/result_code&&&
&&&return_code&&![CDATA[SUCCESS]]&&/return_code&&&
&&&sign&&![CDATA[0C1D7F550A5A138F0CEB]]&&/sign&&&
&&&sub_mch_id&&![CDATA[]]&&/sub_mch_id&&&
&&&time_end&&![CDATA[58]]&&/time_end&&&
&&&total_fee&1&/total_fee&&&
&&&trade_type&&![CDATA[JSAPI]]&&/trade_type&&&
&&&transaction_id&&![CDATA[4026]]&&/transaction_id&&
&/xml&当然这是所有的支付流程,我们还需要去微信公众号后台去设置。支付授权目录
这里很重要我就是在这里折腾了很久。怎么设置呢,首先要看你支付的当前页面URL
比如是:http://www.fangbei.org/wxpay/js_api_call.php你就必须填写:http://www.fangbei.org/wxpay/假如是:http://www.fangbei.org/wxpay/order/id/56.html你就必须写:http://www.fangbei.org/wxpay/order/id/看出规律了吧,就是把最后一个反斜杠后面的内容去掉就OK了。如果还有什么问题可以留言问我。
积分:1237
ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

我要回帖

更多关于 微信app支付官方demo 的文章

 

随机推荐