app微信支付我解约了 怎么在重新appstore绑定微信支付付啊

您所在的位置: &
微信怎么调整支付银行卡顺序?微信银行卡解绑方法
时间: 13:44:33
编辑:xwgod
来源:下载吧
许多微信用户都会在微信里绑定多张银行卡,那么,微信怎么调整支付银行卡顺序?在今天的微信教程中,小编就跟大家分享一下微信设置默认银行卡的方法和微信银行卡解绑方法,让大家不用每次进行微信支付的时候还需要一直选择某一张银行卡了!微信银行卡  微信怎么调整支付银行卡顺序?微信银行卡解绑方法:  微信支付银行卡的顺序是按照最近添加的银行卡来排列的。因此,如果你想要设置某一张银行卡为默认银行卡的话,可以选择下面两种方法。  方法1、微信上解除其他银行卡的绑定,只留下默认银行卡。  方法2、将想要设置为默认银行卡的银行卡先解除绑定,再都重新绑定到微信上就可以完成这个设置了。  下面,一起来看看微信怎么解除银行卡绑定吧!  微信解除某一张银行卡绑定的方法:  1.打开微信,选择【我】;  2.点击【钱包】;  3.点击【银行卡】;  4.选择要解除绑定的银行卡,点击进入该银行卡,  5、点击右上角【...】  6、选择【解除绑定】解除绑定  7.输入支付密码后即可。
分享给朋友:
微信支付银行卡顺序相关教程
微信支付银行卡顺序相关新闻
下载1228次
下载1443次
下载1500次
下载1242次
下载1565次
下载1429次
下载1887次
下载1630次
下载1833次
下载1285次
热门关键字app store 为什么我不能绑定微信支付?【iphone吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:2,028,243贴子:
app store 为什么我不能绑定微信支付?收藏
求大神解释
个性,开放,互联.欧洲技术,欧洲设计,全球制造,全球销售的高端汽车品牌LYNK & CO.将为中国消费者提供高标准的无忧购车,无忧用车的超值体验!
早几天库克不是刚和微信合作了么 为什么我没微信绑定选项
都没有这项
我手机是6 用了两年了 ios9.3.2
更新iOS后再试
新系统就有
系统是10.0以上的才能用
为什么你的付款上方式 有无这个 我的上面没有
苏宁易购品牌手机,官方授权,正品行货保证,买正品,就上苏宁易购网上商城!苏宁易购品牌手机,全国联保,货到付款!
我是10.3.3的系统也没有
10.1并没有
10.2.1也没有
我也没有 9.3.2
我有那个选项也绑定不了,点了去微信验证,跳转过去那个页面就没反应了 空白的 啥也不显示
我10.1.1。也没有啊
我的有没有
我是绑定不了支付宝....
我10.2.1也没有
我绑定了支付宝, 就想问问还能不能绑定微信, 我这里没有出现微信的绑定路径
10.3以上版本才行
我是有,但是绑定不了,显示无法验证
我就是不是很了解我这是怎么会回事
我也想知道
我是大陆身份证而且微信实名了,难不成还要我们绑定银行卡?
刚升IOS11也没找到
上官网,会有技术人员给你打电话的,然后就可以解决,我上次也是
不能绑定我的最新系统
我10.2.1前几步都正常 结果后面就变这样了
登录百度帐号推荐应用本帖最后由 孔方网络 于
13:32 编辑
经过了几天的痛苦煎熬,终于把微信支付调通,整个调试过程很痛苦,痛苦的主要来源是微信支付的调试真的是,以前调试公众号支付也是一波三折啊。好吧,开始!首先说明,我这里主要没有使用getToken,getOrder方法,我的所有参数全部是在后端生成传递给前端的,看了一下前面朋友分享的源代码,还用到了jquery,md5,sha对于新手来说简直是天文啊,而且jquery在apicloud中效率不好,所以放弃了研究那个代码,另外官方也说了,最好签名等参数全部服务器端生成,微信也是这么说的。
注意:微信本身在apicloud中config.xml文件你要先弄好
先看一下APP端的代码
function wx_pay()
{
& && &&&api.ajax(
& && &&&{
& && && && && & url : serverURL+&weixin/example/app.php&,
& && && && && & method : 'POST',
& && && && && & timeout : '30',
& && && && && & dataType : 'json',
& && && && && & returnAll : false,
& && && && && & cache :true,
& && && && && & data:
& && && && && & {
& && && && && && && && &values:{type:&login&}
& && && && && & }
& && &&&},
& && &&&function(ret, err)
& && &&&{
& && && && && & if (ret)
& && && && && & {
& && && && && && && && &var back_info=
& && && && && && && && &var weiXin = api.require('weiXin');
& && && && && && && && &weiXin.registerApp
& && && && && && && && &(
& && && && && && && && && & function(ret,err)
& && && && && && && && && & {
& && && && && && && && && && &&&if (ret.status)
& && && && && && && && && && &&&{
& && && && && && && && && && && && && & weiXin.payOrder(
& && && && && && && && && && && && && & {
& && && && && && && && && && &&&orderId:back_info.prepayid,
& && && && && && && && && && &&&partnerId:back_info.partnerid,
& && && && && && && && && && &&&nonceStr:back_info.noncestr,
& && && && && && && && && && &&&timeStamp:back_info.timestamp,
& && && && && && && && && && &&&package:back_info.package,& && &&&
& && && && && && && && && && &&&sign:back_info.sign
& && && && && && && && && && &&&},function(ret,err)
& && && && && && && && && && &&&{
& && && && && && && && && && && && & if (ret.status)
& && && && && && && && && && && && & {
& && && && && && && && && && && && && && && &$alert('支付成功');
& && && && && && && && && && && && & }
& && && && && && && && && && && && & else
& && && && && && && && && && && && & {
& && && && && && && && && && && && && && && &$alert(err.msg);
& && && && && && && && && && && && & }
& && && && && && && && && && &&&});
& && && && && && && && && && &&&}
& && && && && && && && && && &&&else
& && && && && && && && && && &&&{
& && && && && && && && && && && && && & $alert(err.msg);
& && && && && && && && && && &&&}
& && && && && && && && && & }
& && && && && && && && &);
& && && && && & }
& && && && && & else
& && && && && & {
& && && && && && && && &$alert(json2str(err));
& && && && && & }
& && &&&});
}复制代码完全按照apicloud写的,没有任何问题,大家可以直接复制过去用,其中的$alert是我自己封装的方法,就是弹出信息而已
下面主要是服务端,见附件
这个是从微信官方下载下来的,坑爹的微信给的事例太垃圾了,说明也不细致,统一下单的接口生成有了,但是app数据的生成没有,只有js的生成,只能自己写了,其中的签名,随机字符串,还有时间戳等等,每次请求,生产都要重新来一遍,更加可恶的一件事情是,竟然大小写不一致,我本以为直接将js的稍微修改修改就好了,结果不行,死活找不到原因,后来仔细对照文档看了一下,js调起支付的很多参数是有大小写的,但是app调起是全部小写的,具体文档见下方:
你们也可以仔细对比,太坑爹了。
好了,不埋怨了,看代码吧。
首先打开example/app.php,这个是我写的接口文件
&?php
ini_set('date.timezone','Asia/Shanghai');
//error_reporting(E_ERROR);
require_once &../lib/WxPay.Api.php&;
require_once &WxPay.AppPay.php&;
$notify = new AppPay();
/*首先生成prepayid*/
$input = new WxPayUnifiedOrder();
$input-&SetBody(&test1&);//商品或支付单简要描述(必须填写)
//$input-&SetAttach(&test2&);//附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据(不必填)
//$input-&SetDetail(&Ipad mini&&16G&&白色,黑色&);//商品名称明细列表(不必填)
$input-&SetOut_trade_no(WxPayConfig::MCHID.date(&YmdHis&));//订单号(必须填写)
$input-&SetTotal_fee(&1&);//订单金额(必须填写)
//$input-&SetTime_start(date(&YmdHis&));//交易起始时间(不必填)
//$input-&SetTime_expire(date(&YmdHis&,time()+600));//交易结束时间10分钟之内不必填)
$input-&SetGoods_tag(&test&);//商品标记(不必填)
$input-&SetNotify_url(&/app/weixin/example/****.php&);//回调URL(必须填写)
$input-&SetTrade_type(&APP&);//交易类型(必须填写)
//$input-&SetProduct_id(&&);//rade_type=NATIVE,此参数必传。此id为二维码中包含的商品ID,商户自行定义。
$order = WxPayApi::unifiedOrder($input);//获得订单的基本信息,包括prepayid
$appApiParameters = $notify-&GetAppApiParameters($order);//生成提交给app的一些参数
die($appApiParameters);
?&复制代码以上回调URL一定要写好,我这个附件中还没有做回调的处理,我处理完了继续跟帖上来。
1.交易类型必须是APP,如果你是申请的微信公众号的支付,而不是从这里申请的,就用不成
2.第一步是生成order,返回的是一个数组,保证这个数组里面要有prepay_id,如果没有,那你就要检查配置文件了lib/WxPay.Config.php
继续看代码
example/WxPay.AppPay.php
&?php
* APP支付实现类
* @author widyhu
*/
class AppPay
{& && &&&
& && &&&/**
& && && &*
& && && &* 参数数组转换为url参数
& && && &* @param array $urlObj
& && && &*/
& && &&&private function ToUrlParams($urlObj)
& && &&&{
& && && && && & $buff = &&;
& && && && && & foreach ($urlObj as $k =& $v)
& && && && && & {
& && && && && && && && &$buff .= $k . &=& . $v . &&&;
& && && && && & }
& && && && && &
& && && && && & $buff = trim($buff, &&&);
& && && && && & return $
& && &&&}
& && &&&
& && &&&/**
& && && &*
& && && &* 生成直接支付url,支付url有效期为2小时,模式二
& && && &* @param UnifiedOrderInput $input
& && && &*/
& && &&&public function GetPayPrepayId($input)
& && &&&{
& && && && && & if($input-&GetTrade_type()==&APP&)
& && && && && & {
& && && && && && && && &$result = WxPayApi::unifiedOrder($input);
& && && && && && && && &return $
& && && && && & }
& && &&&}
& && &&&/*生成APP提交数据*/
& && &&&public function GetAppApiParameters($UnifiedOrderResult)
& && &&&{
& && && && && & if(!array_key_exists(&appid&, $UnifiedOrderResult)
& && && && && & || !array_key_exists(&prepay_id&, $UnifiedOrderResult)
& && && && && & || $UnifiedOrderResult['prepay_id'] == &&)
& && && && && & {
& && && && && && && && &throw new WxPayException(&参数错误&);
& && && && && & }
& && && && && & $appapi = new WxPayAppApiPay();
& && && && && & $appapi-&SetAppid($UnifiedOrderResult[&appid&]);
& && && && && & $appapi-&SetPartnerId($UnifiedOrderResult[&mch_id&]);
& && && && && & $appapi-&SetPrepayId($UnifiedOrderResult[&prepay_id&]);
& && && && && & $timeStamp = time();
& && && && && & $appapi-&SetTimeStamp($timeStamp);
& && && && && & $appapi-&SetNonceStr(WxPayApi::getNonceStr());
& && && && && & $appapi-&SetPackage(&Sign=WXPay&);
& && && && && & $appapi-&SetSign($appapi-&MakeSign());
& && && && && & $back_arr=$appapi-&GetValues();
& && && && && & $back_arr['prepay_id']=$UnifiedOrderResult[&prepay_id&];
& && && && && & $parameters = json_encode($appapi-&GetValues());
& && && && && & return $
& && &&&}
}复制代码这个文件不是官方提供的,是我自己写的,仿照WxPay.NativePay.php这个文件写的,主要看42行GetAppApiParameters这个函数
由此生成了app提交的很多基础数据,在这个文件中又引用了一个类WxPayAppApiPay,在lib/WxPay.Data.php中,最后一个函数
现在我们来看一下配置文件吧/lib/WxPay.Config.php
&?php
/**
*& && && &配置账号信息
*/
class WxPayConfig
{
& && &&&//=======【基本信息设置】=====================================
& && &&&//
& && &&&/**
& && && &* TODO: 修改这里配置为您自己申请的商户信息
& && && &* 微信公众号信息配置
& && && &*
& && && &* APPID:绑定支付的APPID(必须配置,开户邮件中可查看)
& && && &*
& && && &* MCHID:商户号(必须配置,开户邮件中可查看)
& && && &*
& && && &* KEY:商户支付密钥,参考开户邮件设置(必须配置,登录商户平台自行设置)
& && && &* 设置地址:https://pay./index.php/account/api_cert
& && && &*
& && && &* APPSECRET:公众帐号secert(仅JSAPI支付的时候需要配置, 登录公众平台,进入开发者中心可设置),
& && && &* 获取地址:https://mp./advanced/advanced?action=dev&t=advanced/dev&token=&lang=zh_CN
& && && &* @var string
& && && &*/
& && &&&const APPID = 'wxd3ae8cc5ab312345';
& && &&&const MCHID = '';
& && &&&const KEY = '14e1b600b1fd579fd85111';
& && &&&const APPSECRET = 'e176356adbf';
& && &&&
& && &&&
& && &&&/*公众号(如果你申请的微信公众号支付而不是微信支付就用这个,但是这个没有办法在app中使用,只能通过扫码或者js)
& && &&&const APPID = 'wx223c1e5d831c94a5';
& && &&&const MCHID = '';
& && &&&const KEY = '14e1b600b1fd579fd85291';
& && &&&const APPSECRET = '8d95f857aee0749c3aad2';*/
& && &&&
& && &&&//=======【证书路径设置】=====================================
& && &&&/**
& && && &* TODO:设置商户证书路径
& && && &* 证书路径,注意应该填写绝对路径(仅退款、撤销订单时需要,可登录商户平台下载,
& && && &* API证书下载地址:https://pay./index.php/account/api_cert,下载之前需要安装商户操作证书)
& && && &* @var path
& && && &*/
& && &&&const SSLCERT_PATH = '../cert/apiclient_cert.pem';
& && &&&const SSLKEY_PATH = '../cert/apiclient_key.pem';
& && &&&
& && &&&//=======【curl代理设置】===================================
& && &&&/**
& && && &* TODO:这里设置代理机器,只有需要代理的时候才设置,不需要代理,请设置为0.0.0.0和0
& && && &* 本例程通过curl使用HTTP POST方法,此处可修改代理服务器,
& && && &* 默认CURL_PROXY_HOST=0.0.0.0和CURL_PROXY_PORT=0,此时不开启代理(如有需要才设置)
& && && &* @var unknown_type
& && && &*/
& && &&&const CURL_PROXY_HOST = &0.0.0.0&;//&10.152.18.220&;
& && &&&const CURL_PROXY_PORT = 0;//8080;
& && &&&
& && &&&//=======【上报信息配置】===================================
& && &&&/**
& && && &* TODO:接口调用上报等级,默认紧错误上报(注意:上报超时间为【1s】,上报无论成败【永不抛出异常】,
& && && &* 不会影响接口调用流程),开启上报之后,方便微信监控请求调用的质量,建议至少
& && && &* 开启错误上报。
& && && &* 上报等级,0.关闭上报; 1.仅错误出错上报; 2.全量上报
& && && &* @var int
& && && &*/
& && &&&const REPORT_LEVENL = 1;
}
复制代码主要是修改
const APPID = 'wxd3ae8cc5ab312345';
const MCHID = '';
const KEY = '14e1b600b1fd579fd85111';
const APPSECRET = 'e176356adbf';复制代码其他的不要动就行了
就这么多了,我现在继续写回调处理的url,写好了继续上吧
相信很多人都遇到了问题,不然怎么可能在论坛里面搜索微信支付没有一个可以实际解决问题的呢。
我是雷锋,欢迎交流
本帖子中包含更多资源&&&&您需要
才可以下载或查看,没有帐号?
<p id="rate_" onmouseover="showTip(this)" tip="赞一个!&云币 + 10
" class="mtn mbn">
谢谢雷锋同志!
谢谢.雷锋. 已经收藏
增加了回调,看代码,把以下代码覆盖到/lib/example/notify.php这个文件就可以了
&?php
ini_set('date.timezone','Asia/Shanghai');
error_reporting(E_ERROR);
require_once &../lib/WxPay.Api.php&;
require_once '../lib/WxPay.Notify.php';
require_once 'log.php';
//初始化日志
$logHandler= new CLogFileHandler(&../logs/&.date('Y-m-d').'.log');
$log = Log::Init($logHandler, 15);
class PayNotifyCallBack extends WxPayNotify
{
& && &&&//查询订单
& && &&&public function Queryorder($transaction_id)
& && &&&{
& && && && && & $input = new WxPayOrderQuery();
& && && && && & $input-&SetTransaction_id($transaction_id);
& && && && && & $result = WxPayApi::orderQuery($input);
& && && && && & Log::DEBUG(&query:& . json_encode($result));
& && && && && & if(array_key_exists(&return_code&, $result)
& && && && && && && && &&& array_key_exists(&result_code&, $result)
& && && && && && && && &&& $result[&return_code&] == &SUCCESS&
& && && && && && && && &&& $result[&result_code&] == &SUCCESS&)
& && && && && & {
& && && && && && && && &$out_trade_no=$result['out_trade_no'];//私有订单号,你就用这个订单号来进行你自己订单的各种更新吧
& && && && && && && && &$mch_id=$result['mch_id'];//商户号
& && && && && && && && &$total_fee=$result['total_fee'];//支付金额,出来的金额要除以100
& && && && && && && && &$transaction_id=$result['transaction_id'];//微信内部的订单流水号
& && && && && && && && &$openid=$result['openid'];//微信加密的用户身份识别,app支付的话其实意义不大了
& && && && && && && && &/*以下两行用做调试,会自动生成in_test.txt文件而且后期内容会自动追加到这个文件*/
& && && && && && && && &$fp = fopen('in_test.txt','a+');
& && && && && && && && &fwrite($fp,date(&Y-m-d H:i:s&).json_encode($result) . &|&.$transaction_id.& 成功了!rn&);
& && && && && && && && &/**/
& && && && && && && && &//这个很重要,微信的异步请求,当你执行完了你的内部处理以后给他返回true,微信就认为你的内部处理完成了,就不会再次请求你了,否则他会一直请求你这个文件,知道超时。
& && && && && & }
& && && && && &
& && &&&}
& && &&&
& && &&&//重写回调处理函数
& && &&&public function NotifyProcess($data, &$msg)
& && &&&{
& && && && && & Log::DEBUG(&call back:& . json_encode($data));
& && && && && & $notfiyOutput = array();
& && && && && &
& && && && && & if(!array_key_exists(&transaction_id&, $data)){
& && && && && && && && &$msg = &输入参数不正确&;
& && && && && && && && &
& && && && && & }
& && && && && & //查询订单,判断订单真实性
& && && && && & if(!$this-&Queryorder($data[&transaction_id&])){
& && && && && && && && &$msg = &订单查询失败&;
& && && && && && && && &
& && && && && & }
& && && && && &
& && &&&}
}
Log::DEBUG(&begin notify&);
$notify = new PayNotifyCallBack();
$notify-&Handle(false);
复制代码
感谢雷锋同志
太感谢啦,雷锋同志
非常感谢,我正需要做这一功能呢
好东西,非常详细,谢谢分享!
我们一岁了!
APICloud粉丝
我为APICloud代言!
特别贡献的版主
端午节勋章
(C) 2014 APICloud63538人阅读
Android开发(1048)
首先我们先看一个android微信支付时遇到的一个错误提示:onPayFinish, errCode = -1&当你参数签名都没有问题的时候,出现这个提示,请按照如下操作:在你的项目测试android微信的组件(微信分享、微信支付等)的时候,一定要用你自己的keystore签名出来测试,如果用debug.keystore肯定是不成功的!1,在微信开放平台申请app_id,app_key我就不在这里叙述了,稍后我会把开发文档一并上传的,你也可以去微信开放平台自行查看(差不多一个周才会通过审核)&2,下面我就来说一说微信支付开发时需要注意的地方:2.1 首先来看一下,微信支付的架构和流程图&&&3.2 再来看一下成功调起微信支付的界面&&3下面开始讲解配置工程3.1 这里必须要有wxapi这个包名,同时必须有WXPayEntryActivity这个类名,否则无法调起微信支付,(开发文档没有标注,废了好大周章)&3.2 支付成功通知:在WXPayEntryActivity的OnResp中处理,不能以微信返回的通知界面为准(我遇到的情况,网络不稳定的时候,微信返回界面提示支付失败,但是收到微信通知其实已经支付成功了),必须要去自己的服务器查询支付状态,这里微信建议用轮循机制去查询(最好听微信劝,O(∩_∩)O哈哈~) @Override
public void onResp(BaseResp resp) {
Log.d(TAG, &onPayFinish, errCode = & + resp.errCode);
if (resp.getType() == MAND_PAY_BY_WX) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(R.string.app_tip);
builder.setMessage(getString(R.string.pay_result_callback_msg, resp.errStr +&;code=& + String.valueOf(resp.errCode)));
builder.show();
}3.3 生成prepay_id,在服务器完成,由服务器去跟微信服务器交互,客户端不需要参与 /**
* 获取预支付订单号:
* prepay_id(服务器完成)!!!
* 注意:如果服务端开发文档跟客户端demo里的参数不一样,以demo里的参数为准,
* 否则服务器传过来的参数无法调起微信支付!!!
private String genProductArgs() {
StringBuffer xml = new StringBuffer();
nonceStr = genNonceStr();
xml.append(&&/xml&&);
List&NameValuePair& packageParams = new LinkedList&NameValuePair&();
packageParams.add(new BasicNameValuePair(&appid&, Constants.APP_ID));
packageParams.add(new BasicNameValuePair(&body&, &APP pay test&));
/**这里用的是mach_id,跟sign签名时参数名不同,一定要注意*/
packageParams.add(new BasicNameValuePair(&mch_id&, Constants.MCH_ID));
packageParams.add(new BasicNameValuePair(&nonce_str&, nonceStr));
packageParams.add(new BasicNameValuePair(&notify_url&, &http://121.40.35.3/test&));
packageParams.add(new BasicNameValuePair(&out_trade_no&,genOutTradNo()));
packageParams.add(new BasicNameValuePair(&spbill_create_ip&,&127.0.0.1&));
packageParams.add(new BasicNameValuePair(&total_fee&, &1&));
packageParams.add(new BasicNameValuePair(&trade_type&, &APP&));
String sign = genPackageSign(packageParams);
packageParams.add(new BasicNameValuePair(&sign&, sign));
String xmlstring =toXml(packageParams);
} catch (Exception e) {
Log.e(TAG, &genProductArgs fail, ex = & + e.getMessage());
}3.4 获取二次签名signprivate void genPayReq() {
req.appId = Constants.APP_ID;
req.partnerId = Constants.MCH_ID;
req.prepayId = resultunifiedorder.get(&prepay_id&);
req.packageValue = &prepay_id=&+resultunifiedorder.get(&prepay_id&);
req.packageValue = &Sign=WXPay&;
req.nonceStr = genNonceStr();
req.timeStamp = String.valueOf(genTimeStamp());
List&NameValuePair& signParams = new LinkedList&NameValuePair&();
signParams.add(new BasicNameValuePair(&appid&, req.appId));
signParams.add(new BasicNameValuePair(&noncestr&, req.nonceStr));
* 这里的package参数值必须是Sign=WXPay,否则IOS端调不起微信支付,
* (参数值是&prepay_id=&+resultunifiedorder.get(&prepay_id&)的时候Android可以,IOS不可以)
signParams.add(new BasicNameValuePair(&package&, req.packageValue));
/**注意二次签名这里不再是mch_id,变成了*/
signParams.add(new BasicNameValuePair(&partnerid&, req.partnerId));
signParams.add(new BasicNameValuePair(&prepayid&, req.prepayId));
signParams.add(new BasicNameValuePair(&timestamp&, req.timeStamp));
req.sign = genAppSign(signParams);
sb.append(&sign\n&+req.sign+&\n\n&);
show.setText(sb.toString());
Log.e(&orion&, signParams.toString());
}3.5 起调微信支付private void sendPayReq() {
msgApi.registerApp(Constants.APP_ID);
msgApi.sendReq(req);
}3.6 配置Manifest.xml,权限什么的按照文档的配置就行了 &activity
android:name=&.PayActivity&
android:label=&@string/app_name&
android:exported=&true&
android:launchMode=&singleTop&&
&intent-filter&
&action android:name=&android.intent.action.MAIN& /&
&category android:name=&android.intent.category.LAUNCHER& /&
&/intent-filter&
&!--这个intent-filter不要忘了--&
&intent-filter&
&action android:name=&android.intent.action.VIEW&/&
&category android:name=&android.intent.category.DEFAULT&/&
&data android:scheme=&wxd930ea5d5a258f4f&/&
&/intent-filter&
&/activity&4,支付通知接口和退款接口按照开发文档即可,这里不再赘述5, 在你的项目测试微信支付的时候,一定要用你自己的keystore签名出来测试,如果用debug.keystore肯定是不成功的,切记,切记,不要闹乌龙!!!好了,就写这么多吧,以此文来祭奠我和同事被腾讯坑死的那几天,如果有不懂的童鞋可以给我留言,或者QQ:联系我,大家可以去这个地址下载微信支付v3.0版本的开发文档和demo,以及一个成功的微信支付demo app,轮询事件大家可以参考我的下一篇blog,从别人那里转来的,写的挺详细的&补充问题:微信支付v3 body中文无法支付问题String nonceStr = genNonceStr();xml.append(&&/xml&&);// Yuebai Steam Car Wash Service&List&NameValuePair& packageParams = new LinkedList&NameValuePair&();packageParams.add(new BasicNameValuePair(&appid&, Constants.APP_ID));packageParams.add(new BasicNameValuePair(&body&, &月白洗车&));// 这个一改就无法支付packageParams.add(new BasicNameValuePair(&mch_id&, Constants.MCH_ID));packageParams.add(new BasicNameValuePair(&nonce_str&, nonceStr));packageParams.add(new BasicNameValuePair(&notify_url&, HttpConstant.wxapi));packageParams.add(new BasicNameValuePair(&out_trade_no&, orderid));packageParams.add(new BasicNameValuePair(&spbill_create_ip&, &127.0.0.1&));int a = (int) (Integer.parseInt(m) * 100);packageParams.add(new BasicNameValuePair(&total_fee&, a + &&));packageParams.add(new BasicNameValuePair(&trade_type&, &APP&));String sign = genPackageSign(packageParams);packageParams.add(new BasicNameValuePair(&sign&, sign));String xmlstring = toXml(packageParams);&return&new String(xmlstring.toString().getBytes(), &ISO8859-1&);//这句加上就可以了吧xml转码下&另外说明的是,如果想增加参数,请先看看下面的内容。签名算法签名生成的通用步骤如下:第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。特别注意以下重要规则:◆ 参数名ASCII码从小到大排序(字典序);◆ 如果参数的值为空不参与签名;◆ 参数名区分大小写;◆ 验证调用返回或微信主动通知签名时,传送的sign参数不参与签名,将生成的签名与该sign值作校验。◆ 微信接口可能增加字段,验证签名时必须支持增加的扩展字段第二步,在stringA最后拼接上key得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,再将得到的字符串所有字符转换为大写,得到sign值signValue。key设置路径:微信商户平台(pay.)--&账户设置--&API安全--&密钥设置举例:假设传送的参数如下:appid: wxd930ea5d5a258f4fmch_id: device_info: 1000body: testnonce_str: ibuaiVcKdpRxkhJA第一步:对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:stringA=&appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_id=&nonce_str=ibuaiVcKdpRxkhJA&;第二步:拼接API密钥:stringSignTemp=&stringA&key=c09247ec02edce69f6a2d&sign=MD5(stringSignTemp).toUpperCase()=&9A0AA9CF3B7&最终得到最终发送的数据:&xml&&appid&wxd930ea5d5a258f4f&/appid&&mch_id&&/mch_id&&device_info&1000&device_info&&body&test&/body&&nonce_str&ibuaiVcKdpRxkhJA&/nonce_str&&sign&9A0AA9CF3B7&/sign&&xml&微信提供相关接口在线签名验证工具:。&&所以,如果我们增加两个参数:attach、device_info就必须根据参数名ASCII字典序增加,如下图位置。如果将参数attach放在trade_type之后肯定就会报签名错误。List&NameValuePair& packageParams = new LinkedList&NameValuePair&();
packageParams.add(new BasicNameValuePair(&appid&, Constant.weixin_appID));
packageParams.add(new BasicNameValuePair(&attach&, mOrderNo));
packageParams.add(new BasicNameValuePair(&body&, &订单-& + mOrderNo)); //商品描述
packageParams.add(new BasicNameValuePair(&device_info&, &ANDROID&));
packageParams.add(new BasicNameValuePair(&mch_id&, Constant.MCH_ID));
packageParams.add(new BasicNameValuePair(&nonce_str&, nonceStr));
packageParams.add(new BasicNameValuePair(&notify_url&, &/wechat_notify.php&));
packageParams.add(new BasicNameValuePair(&out_trade_no&,genOutTradNo()));
packageParams.add(new BasicNameValuePair(&spbill_create_ip&, &127.0.0.1&));
packageParams.add(new BasicNameValuePair(&total_fee&, String.valueOf((int) (mMoney * 100))));//商品金额,以分为单位
packageParams.add(new BasicNameValuePair(&trade_type&, &APP&));&最后再为大家分享点干货。在计算订单总价的时候,有时会出现***.99998的现象,这个是浮点数计算出现的问题,得需要&BigDecimal解决高精度计算。下面是我的解决方法,大家有更好的可以分享下。/*
* 总订单的价格(不包含运费)
public double calculatingTotalPriceNoFreight() {
double total = 0.00;
for (ShopCartItem cartItem : getDataList()) {
double orderPrice = calculatingOrderPrice(cartItem);
total += orderP
//double值保留 2 位小数,使用银行家舍入法
return MathUtil.round(total, 2, BigDecimal.ROUND_HALF_EVEN) ;
}MathUtil.javapackage com.haier.cabinet.customer.
import java.math.BigD
public class MathUtil {
* 对double数据进行取精度.
* @param value
double数据.
* @param scale
精度位数(保留的小数位数).
* @param roundingMode
精度取值方式.
* @return 精度计算后的数据.
public static double round(double value, int scale,
int roundingMode) {
BigDecimal bd = new BigDecimal(value);
bd = bd.setScale(scale, roundingMode);
double d = bd.doubleValue();
* double 相加
* @param d1
* @param d2
public static double sum(double d1,double d2){
BigDecimal bd1 = new BigDecimal(Double.toString(d1));
BigDecimal bd2 = new BigDecimal(Double.toString(d2));
return bd1.add(bd2).doubleValue();
* double 相减
* @param d1
* @param d2
public static double sub(double d1,double d2){
BigDecimal bd1 = new BigDecimal(Double.toString(d1));
BigDecimal bd2 = new BigDecimal(Double.toString(d2));
return bd1.subtract(bd2).doubleValue();
* double 乘法
* @param d1
* @param d2
public static double mul(double d1,double d2){
BigDecimal bd1 = new BigDecimal(Double.toString(d1));
BigDecimal bd2 = new BigDecimal(Double.toString(d2));
return bd1.multiply(bd2).doubleValue();
* double 乘法
* @param n
* @param d2
public static double mul(int n,double d2){
BigDecimal bd1 = new BigDecimal(Integer.toString(n));
BigDecimal bd2 = new BigDecimal(Double.toString(d2));
return bd1.multiply(bd2).doubleValue();
* double 除法
* @param d1
* @param d2
* @param scale 四舍五入 小数点位数
public static double div(double d1,double d2,int scale){
当然在此之前,你要判断分母是否为0,
为0你可以根据实际需求做相应的处理
BigDecimal bd1 = new BigDecimal(Double.toString(d1));
BigDecimal bd2 = new BigDecimal(Double.toString(d2));
return bd1.divide
(bd2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
* 将double类型数据转为字符串
* @param d
public static String double2String(double d){
BigDecimal bg = new BigDecimal(d * 100);
double doubleValue = bg.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
String.valueOf((int)doubleValue);
补充:微信官网上对于支付返回-1是&&我犯的错和他描述的都不一样。1、新建一个微信支付demo的工程,将包名和签名上传给微信。并保证apk是通过keystore方式打了签名的,用官方的工具做签名。2、将官方的demo示例参考一下,权限部分:&!-- WeixinPay --&
&uses-permission android:name=&android.permission.INTERNET& /&
&uses-permission android:name=&android.permission.MODIFY_AUDIO_SETTINGS&/&
&uses-permission android:name=&android.permission.WRITE_EXTERNAL_STORAGE&
&activity android:name=&.MainActivity&
android:exported=&true&&
&intent-filter&
&action android:name=&android.intent.action.MAIN& /&
&category android:name=&android.intent.category.LAUNCHER& /&
&/intent-filter&
&intent-filter&
&action android:name=&android.intent.action.VIEW&/&
&category android:name=&android.intent.category.DEFAULT&/&
&data android:scheme=&wxd31ef1f4dd******&/&
&/intent-filter&
&/activity&
&activity android:name=&.AlipayH5Activity&&&/activity&
&activity android:name=&com.*******.paydemo.wxapi.WXPayEntryActivity&
android:exported=&true&
android:launchMode=&singleTop&&
&/activity&&/span&Activity部分的逻辑代码:IWXAPI api = WXAPIFactory.createWXAPI(MainActivity.this, null);//通过工厂创建对象
api.registerApp(ConstUtil.APP_ID);
PayReq request = new PayReq();
request.appId = ConstUtil.APP_ID;
request.partnerId = ConstUtil.PARTNER_ID;
request.prepayId = wxPrepayEntity.getPrepay_id();
request.nonceStr = wxPrepayEntity.getReq_noncestr();
request.timeStamp = wxPrepayEntity.getReq_timestamp();
request.packageValue = wxPrepayEntity.getReq_package();
request.sign = wxPrepayEntity.getReq_sign();
request.extData = &app data&; // optional
// 在支付之前,如果应用没有注册到微信,应该先调用IWXMsg.registerApp将应用注册到微信
api.sendReq(request);每一个参数都很关键的,如果签名和包名确定都没有问题,那么基本上是传递的参数有问题。最好跟做后台的同事一起看看就能解决问题。比如partnerId传错了就会出现签名错误,再比如timeStamp,你用了自定义的时间戳与服务器的不一致,也会出现错误。排查错误最好把sign这个字段的值打印出来,与服务器生成的信息做比较,参数值没有问题才会不出问题!1.第一种原因就是上边的这些参数有问题。一般都是秘钥有问题。需自己登陆商家版后台修改&&2.需要知道支付是需要打包才能运行。这也是蛋疼的一点,测试只能通过log和Toast来推断。掉不起来可以去微信开放平台看自己配置的参数是否正确。3.微信支付跟支付宝支付不一样。微信支付同一订单不会第二次跳到支付页面 提示支付失败,同一订单第二次支付的时候直接在请求遇支付订单的时候就会返回preayid为空。所以童鞋们应该在吊起支付这一步判断一下 ,比较服务器很容易出错导致订单状态没有改,让用户一直付款。4.无法接受回调结果是因为微信规定接受支付那个类的必须在manifest里配置的包名+.wxapi里& 所以这也是比较蛋疼的一点。5.微信支付支付过的订单再次获取prepare_id为null 无法掉起支付。6. 微信支付同一订单只能绑定一个价格 列如: &33订单最初的价格为1,这是获取prepareid可以获取到值,如果对33的价格进行修改,如果没有生成过预支付订单可以获取,如果已经生成过则获取到的prepareid为null &不可以调起支付Android快速实现微信支付如果你已经成功集成了微信登录和分享,那么此文将助你快速集成微信支付,此文基于微信支付SDK3.1.1,也就是目前为止最新的SDK资源下载不过我相信,即便你看了微信的官方文档,你依然不知道微信支付怎么集成,因为微信支付的官方文档简直太.....如果你已经准备好了资源包,接下来正式开始集成我们需要的资源其实有以下几样,在开始前,就这些转备好吧1)微信支付的APPID2)微信支付依赖包 &&& libammsdk.jar3)一个Activity类 &&& WXPayEntryActivity.java这里需要特别说明一下,这个Activity类,直接从上下载到的范例代码中copy到自己的工程中即可,这个页面是在你调起微信支付完成支付(或取消或失败)后,再回到你的App时会调用的一个页面。页面的布局可以是你自定义的布局,直接放图讲解:先说一下这个类的路径,网上也有一大堆介绍了,我直接放图,路径一定,而且必须是这样的:WXPayEntryActivity 的路径在这个类中需要注意的地方有两个:1、这个类中的布局是可以自定义的,如果你不需要展示什么布局,而是要跳转页面,把这段代码删除即可回调页面的布局2、回调结果的处理,下面是官方的处理方式,直接给了一个dialog,很多人会摸不着头脑,如果你不需要这个dialog,直接删除就好了,不需要把官方demo中的布局和资源都复制过来官方的处理方式下面是我自定义的处理方式,比较简单,就是土司显示了一下支付结果,如果你需要支付成功后跳转,那么直接在这里startActivity即可,别忘记最后要将这个页面finish()自定义的处理方式这个类中的其余的回调方法,我们都不需要去操作然后我们就可以开始支付了,支付很简单,真的很简单参数列表这是微信支付需要我们携带的参数,对于新人来说,可能比较困惑的是我怎么生成这些参数呢?其实这些参数都是服务器返回给我们的,APPID我们可以自己保存在本地一份,其余的都是服务器返回给我们的,大概介绍一下流程:发起支付的流程,提交订单的时候的参数根据项目需要配置最后,服务器返回给我们微信支付的参数后,我们就可以愉快的支付了,这里是关键一步,注意!!发起支付的关键步骤至此我们已经可以调起微信支付页面来支付了最后还有一个需要注意的是,很多人被这一步坑了,就是关于微信开放平台签名的问题。其实只要你手机上的程序的签名和你在微信平台登记的签名一致即可,无论是debug版本,还是release版本参考文章:/p/ce
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
积分:73076
积分:73076
排名:第24名
原创:504篇
转载:916篇
评论:2732条
如果您认为本博客不错,读后觉得有收获,不妨打赏赞助我一下,让我有动力继续写出高质量的博客。
赠人玫瑰,手有余香。分享技术,传递快乐。
QQ交流群:
有心课堂会员,请加入VIP QQ交流群:
文章:28篇
阅读:105431
文章:69篇
阅读:516742}

我要回帖

更多关于 app store绑定微信 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信