精华内容
下载资源
问答
  • (1)用户打开商户网页选购商品,发起支付,在网页通过JavaScript调用getBrandWCPayRequest接口,发起微信支付请求,用户进入支付流程。 (2)用户成功支付点击完成按钮后,商户的前端会收到JavaScript的返回值。...
  • **好了,多余的话不过多解释,下面咋们大家一起来看看微信的SDK接入文档 如果哥们急的话请调到:https://www.jianshu.com/p/1015841aae48(直接下载Demo填写正确信息直接调起支付) 更新第二版Demo:...

    **好了,多余的话不过多解释,下面咋们大家一起来看看微信的SDK接入文档
    如果哥们急的话请调到:https://www.jianshu.com/p/1015841aae48(直接下载Demo填写正确信息直接调起支付)
    更新第二版Demo:https://www.jianshu.com/p/1015841aae48
    排版2:http://www.jianshu.com/p/c417ce674eb3
    可能介入的不是太好,重在学习,学习哈,跟着我的思路来,一定要有耐心,微信坑很多,先看下参数(重要)
    给一个获取IP的地址: http://pv.sohu.com/cityjson?ie=utf-8
    测试微信数据接口 : https://pay.weixin.qq.com/wiki/tools/signverify/
    微信参数
    Demo:链接: https://pan.baidu.com/s/1eS1tyWM 密码: 3xih
    WRNING!!!
    在类:WX_DATA_XINHAO_HAN设置微信信息
    在类AliPay_XINHAO_HAN_DATA设置支付宝信息
    appid: 你的APPID
    mch_id : 商户号
    nonce_str : 生成的随机字符串
    body : 商品详情
    out_trade_no : 时间
    total_fee : 金额
    spbill_create_ip : IP地址
    notify_url : 回调成功后调用的地址
    trade_type : 支持类型(写死 “APP”)
    步骤1:你先去注册微信官网的一些信息然后获取以下这3个东西
    1.APPID 2.你的商户号 3.秘钥
    就这几个东西
    信息
    基础信息 nonce_str : 生成的随机字符串
    随机字符串生成:
    一般都是固定的,自己也懒得写所以找了一个,如果要自己写的话给你提供一些思路
    首先把 A-Z 0-9 写到一个String数组中,然后通过Random取索引 for 32次即可
    我们看下网上的吧
    MD5
    MD5方法
    代码复制
    排版真难受,这玩意连个代码引用都没有???
    这个使用方法是这样的
    MD5的使用方法
    代码复制

    //生成随机字符串
    public staticStringgenNonceStr() {
    Random random =newRandom();
    returnMD5.getMessageDigest(String.valueOf(random.nextInt(10000)).getBytes());
    }
    

    public final staticStringgetMessageDigest(byte[] buffer) {
    charhexDigits[] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
    try{
    MessageDigest mdTemp = MessageDigest.getInstance("MD5");
    mdTemp.update(buffer);
    byte[] md = mdTemp.digest();
    intj = md.length;
    charstr[] =new char[j *2];
    intk =0;
    for(inti =0;i < j;i++) {
    bytebyte0 = md[i];
    str[k++] = hexDigits[byte0 >>>4&0xf];
    str[k++] = hexDigits[byte0 &0xf];
    }
    return newString(str);
    }catch(Exception e) {
    return null;
    }
    }
    

    基础信息 out_trade_no : 时间
    这个应该都会把,就是使用JAVA获取你自己当前的时间格式为
    比如:2017年7月17日就写成2017717
    基础信息 spbill_create_ip : IP地址
    使用网路访问:http://pv.sohu.com/cityjson?ie=utf-8
    会给你返回 var returnCitySN = {“cip”: “219.144.202.177”, “cid”: “610100”, “cname”: “陕西省西安市”};
    你自己截取一下就OK了
    基础信息 notify_url : 回调成功后调用的地址
    后台暂时没有提供接口的话就随便写
    基础信息 mch_id : 商户号
    你的商户号
    基础信息 body : 商品详情
    随意写
    基础信息 total_fee : 金额
    随意写
    好了基本的功能数据都介绍完了
    导入微信的Sdk
    Android Studio适用

    compile’com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+’
    把刚才的几个参数生成一下sign
    签名生成
    到这里了,你会问OrederSendInfo info是个什么鬼???
    记住:WX_DATA_XINHAO_HAN.API_KEY 是你自己的秘钥
    别急老规矩先复制代码

    //生成预支付随机签名
    public staticStringgenSign(OrederSendInfo info) {
    StringBuffer sb =newStringBuffer(info.toString());
    if(WX_DATA_XINHAO_HAN.API_KEY.equals("")) {
    Toast.makeText(UIUtils.getContext(),"APP_ID为空",Toast.LENGTH_LONG).show();
    }
    //拼接密钥
    sb.append("key=");
    sb.append(WX_DATA_XINHAO_HAN.API_KEY);
    String appSign = MD5.getMessageDigest(sb.toString().getBytes());
    Log.e("Sign-------------","genSign: "+ appSign.toUpperCase());
    returnappSign.toUpperCase();
    }
    

    好了现在给你解释一下这个是个什么鬼OrederSendInfo info方法参数
    这个其实就是一个Bean
    看代码

    public classOrederSendInfo {
    privateStringappid;
    privateStringmch_id;
    privateStringnonce_str;
    privateStringbody;
    privateStringout_trade_no;
    privateStringtotal_fee;
    privateStringspbill_create_ip;
    privateStringnotify_url;
    privateStringtrade_type;
    privateStringsign;
    publicOrederSendInfo(String appid,String mch_id,String nonce_str,String body,String out_trade_no,String total_fee,String spbill_create_ip,String notify_url,String trade_type) {
    this.appid= appid;
    this.mch_id= mch_id;
    this.nonce_str= nonce_str;
    this.body= body;
    this.out_trade_no= out_trade_no;
    this.total_fee= total_fee;
    this.spbill_create_ip= spbill_create_ip;
    this.notify_url= notify_url;
    this.trade_type= trade_type;
    }
    publicStringgetAppid() {
    returnappid;
    }
    public voidsetAppid(String appid) {
    this.appid= appid;
    }
    publicStringgetMch_id() {
    returnmch_id;
    }
    public voidsetMch_id(String mch_id) {
    this.mch_id= mch_id;
    }
    publicStringgetNonce_str() {
    returnnonce_str;
    }
    public voidsetNonce_str(String nonce_str) {
    this.nonce_str= nonce_str;
    }
    publicStringgetBody() {
    returnbody;
    }
    public voidsetBody(String body) {
    this.body= body;
    }
    publicStringgetOut_trade_no() {
    returnout_trade_no;
    }
    public voidsetOut_trade_no(String out_trade_no) {
    this.out_trade_no= out_trade_no;
    }
    publicStringgetTotal_fee() {
    returntotal_fee;
    }
    public voidsetTotal_fee(String total_fee) {
    this.total_fee= total_fee;
    }
    publicStringgetSpbill_create_ip() {
    returnspbill_create_ip;
    }
    public voidsetSpbill_create_ip(String spbill_create_ip) {
    this.spbill_create_ip= spbill_create_ip;
    }
    publicStringgetNotify_url() {
    returnnotify_url;
    }
    public voidsetNotify_url(String notify_url) {
    this.notify_url= notify_url;
    }
    publicStringgetTrade_type() {
    returntrade_type;
    }
    public voidsetTrade_type(String trade_type) {
    this.trade_type= trade_type;
    }
    publicStringgetSign() {
    returnsign;
    }
    public voidsetSign(String sign) {
    this.sign= sign;
    }
    //注意排序规则ASCII排序(一般按照A-Z,a-z)就行
    @Override
    publicStringtoString() {
    return"appid="+appid+'&'+
    "body="+body+'&'+
    "mch_id="+mch_id+'&'+
    "nonce_str="+nonce_str+'&'+
    "notify_url="+notify_url+'&'+
    "out_trade_no="+out_trade_no+'&'+
    "spbill_create_ip="+spbill_create_ip+'&'+
    "total_fee="+total_fee+'&'+
    "trade_type="+trade_type+'&';
    }
    }
    

    //记住在你调用的时候一定要在这个Bean里边赋值,明白不,然后传递给sign的方法签名就生成成功了
    签名生成完成了
    开始上传数据获取预支付接口
    这里边有个XStream你可能找不到
    在Studio里边加入这段

    compile ('com.thoughtworks.xstream:xstream:1.4.7') {
    excludegroup:'xmlpull',module:'xmlpull'
    }
    

    重新编译一下
    代码复制

    public static voidUnfiedOrder(OrederSendInfo orederSendInfo, finalListerner listerner) {
    //生成sign签名
    String sign = WXpayUtils.genSign(orederSendInfo);
    //生成所需参数,为xml格式
    orederSendInfo.setSign(sign.toUpperCase());
    XStream xstream =newXStream();
    xstream.alias("xml",OrederSendInfo.class);
    finalString xml = xstream.toXML(orederSendInfo).replaceAll("__","_");
    Log.e("xml---------------","UnfiedOrder: "+ xml);
    //调起接口,获取预支付ID
    OkHttpUtils.ResultCallback resultCallback =newOkHttpUtils.ResultCallback() {
    @Override
    public voidonSuccess(String response) {
    Log.e("返回的数据","onSuccess: "+ response);
    String data = response;
    data = data.replaceAll("","");
    listerner.Success(data);
    }
    @Override
    public voidonFailure(Exception e) {
    listerner.Faiulre(e.toString());
    }
    };
    try{
    OkHttpUtils.post(WX_DATA_XINHAO_HAN.UNIFIED_ORDER,resultCallback, newString(xml.getBytes("UTF-8"),"ISO8859-1"));
    }catch(UnsupportedEncodingException e) {
    e.printStackTrace();
    }
    }
    

    至于里边的Listnener
    在这里
    接口
    代码复制

    public interfaceListerner {
    voidSuccess(String data);
    voidFaiulre(String data);
    }
    

    拿到微信端的数据之后,直接掉起微信支付
    调起微信支付
    开始填充数据
    填充数据
    特别感谢:掘墓人
    博客地址:http://www.jianshu.com/p/9a3127cfda4d
    我通过他所给的DEMO集成出了一套及简单的Demo
    下载地址: 链接: https://pan.baidu.com/s/1c2zURjq 密码: jpr5
    使用方法:你的这几个部位可能会报错注意,注意!!!
    WXActivity
    因为微信很吊,你必须按照人家的来,直接在我那个工具包下创建一个Activity名字叫WXEntryActivity
    你在你自己创建的Activity–>WXEntryActivity的这个方法下
    直接复制这段代码

    WxMain.setStringOnListener(WXEntryActivity.this);
    //如果是支付
    WxMain.WXMessage wxMessage;
    if(baseResp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
    intcode = baseResp.errCode;
    switch(code) {
    case0:
    if(wxMessage!=null)
    wxMessage.message("支付成功",0,"0.0");
    //支付成功
    break;
    case-1:
    if(wxMessage!=null)
    wxMessage.message("支付失败",-1,"0.0");
    //支付失败
    finish();
    break;
    case-2:
    if(wxMessage!=null)
    wxMessage.message("支付取消",-2,"0.0");
    //支付取消
    finish();
    break;
    default:
    if(wxMessage!=null)
    wxMessage.message("支付失败",-3,"0.0");
    //支付失败
    setResult(RESULT_OK);
    finish();
    break;
    }
    return;
    }
    

    使用是这样的:
    使用
    第一个为你的商品描述,第二个为金额,回调只有0是成功的
    0 成功
    -1 支付失败
    -2 支付取消
    -3 支付失败
    使用的话直接复制进去就可以了
    总而言之微信相比之下还要比支付宝麻烦加粗样式
    说白了就是加密数据发送再给你解析一下数据然后在调起支付,大致就这两个步骤
    工具可能会用到的东西
    compile’com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+’
    compile (‘com.thoughtworks.xstream:xstream:1.4.7’) {
    excludegroup:‘xmlpull’,module:‘xmlpull’
    }
    compile’com.zhy:okhttputils:2.4.1’
    第二个如果你自己想拼的话就不用了,工具里边是XML的解析器生成的XML
    有时间会给大家讲解一些OKHttp底层RXJAVA ,Kotlin,Android源码,
    一起加油,0.0哈哈.
    0.0**

    展开全文
  • 2、商户实际的支付目录必须和在微信支付商户平台设置的一致,否则会报错“当前页面的URL未注册:”支付授权目录设置说明:登录微信支付商户平台(pay.weixin.qq.com)-->产品中心-->开发配置,设置后一般5分钟内...

    支付授权目录说明:

    1、商户最后请求拉起微信支付收银台的页面地址我们称之为“支付目录”,例如:https://www.weixin.com/pay.php。

    2、商户实际的支付目录必须和在微信支付商户平台设置的一致,否则会报错“当前页面的URL未注册:”

    支付授权目录设置说明:

    登录微信支付商户平台(pay.weixin.qq.com)-->产品中心-->开发配置,设置后一般5分钟内生效。

    支付授权目录校验规则说明:

    1、如果支付授权目录设置为顶级域名(例如:https://www.weixin.com/ ),那么只校验顶级域名,不校验后缀;

    2、如果支付授权目录设置为多级目录,就会进行全匹配,例如设置支付授权目录为https://www.weixin.com/abc/123/,则实际请求页面目录不能为https://www.weixin.com/abc/,也不能为https://www.weixin.com/abc/123/pay/,必须为https://www.weixin.com/abc/123/

    图7.7 微信JSAPI支付-支付目录配置

    展开全文
  • 微信支付开发者文档(链接)

    千次阅读 2015-05-27 11:28:24
    微信支付开发者文档(链接) http://mch.weixin.qq.com/wiki/doc/api/index.php?chapter=9_7

    【微信支付】开发者文档(链接)

    http://mch.weixin.qq.com/wiki/doc/api/index.php?chapter=9_7

    展开全文
  • 一、概述为保证商户接入质量,提升交易安全及用户体验,微信支付的合作服务商在正式上线交易前,必须先根据本文指引完成验收。验收完成后,服务商在验收公众平台(微信号:WXPayAssist)提交验收通过申请,审核通过后...

    一、概述

    为保证商户接入质量,提升交易安全及用户体验,微信支付的合作服务商在正式上线交易前,必须先根据本文指引完成验收。验收完成后,服务商在验收公众平台(微信号:WXPayAssist)提交验收通过申请,审核通过后,才能开通相应的支付权限(如:付款码支付)。否则,请根据审核驳回提示,重新完成验收。

    注:仿真测试环境中的商户号(父子商户号)需使用真实商户号。

    二、仿真测试系统

    为降低商户测试门槛,微信支付团队开发了一套独立的仿真测试系统。该系统根据验收用例金额的不同返回不同的响应报文,以满足商户正常功能测试、安全/异常测试及性能测试的需求。

    图1 微信支付仿真测试系统

    图1为微信支付仿真测试系统(后简称仿真系统)的简化原理图。仿真系统的API协议与正式API完全相同(API接口文档)。商户开发者只需将正式API的调用URL增加一层sandboxnew路径,即可对接到仿真系统。

    例如,付款码支付URL:https://api.mch.weixin.qq.com/pay/micropay

    变更为:https://api.mch.weixin.qq.com/sandboxnew/pay/micropay。

    仿真系统与生产环境完全独立,包括存储层。商户在仿真系统所做的所有交易(如下单、支付、查询)均为无资金流的假数据,即:用户无需真实扣款,商户也不会有资金入账。代金券同理,沙箱环境中无需商户真实制券与发券,亦不会出现真实扣券情况。验收仿真测试系统的API验签密钥需从API获取:

    获取验签秘钥API:

    请求Url

    https://api.mch.weixin.qq.com/sandboxnew/pay/getsignkey

    是否需要证书

    请求方式

    POST

    请求参数:

    字段名

    字段

    必填

    示例值

    类型

    说明

    商户号

    mch_id

    1305638280

    String(32)

    微信支付分配的微信商户号

    随机字符串

    nonce_str

    5K8264ILTKCH16CQ2502SI8ZNMTM67VS

    String(32)

    随机字符串,不长于32位

    签名

    sign

    5K8264ILTKCH16CQ2502SI8ZNMTM67VS

    String(32)

    签名值

    返回参数:

    字段名

    字段

    必填

    示例值

    类型

    说明

    返回状态码

    return_code

    SUCCESS

    String(16)

    SUCCESS/FAIL 此字段是通信标识,非交易标识

    返回信息

    return_msg

    签名失败

    String(128)

    返回信息,如非空,为错误原因 ,签名失败 ,参数格式校验错误

    以下字段在return_code 为SUCCESS的时有返回。

    字段名

    字段

    必填

    示例值

    类型

    说明

    商户号

    mch_id

    1305638280

    String(32)

    微信支付分配的微信商户号

    沙箱密钥

    sandbox_signkey

    013467007045764

    String(32)

    返回的沙箱密钥

    商户接入仿真系统的交互流程示例:

    1. 商户发起付款码支付请求,使用POST方式调用

    https://api.mch.weixin.qq.com/sandboxnew/pay/micropay

    2. 带sandboxnew 的https请求会被nginx路由到仿真系统。仿真系统根据支付金额(total_fee字段)返回预期报文给商户。同时,落地该笔请求数据;

    3. 商户发起查单,调用

    https://api.mch.weixin.qq.com/sandboxnew/pay/orderquery,带上微信订单号(transaction_id)或商户内部单号(out_trade_no);

    4. 仿真系统收到查单请求后,根据单号及金额返回预期的查单结果给商户;

    5. 商户下载对账单,调用

    https://api.mch.weixin.qq.com/sandboxnew/pay/downloadbill,仿真系统返回固定的账单格式给商户。注:账单内容不一定与商户在仿真系统产生的交易完全相同。

    三、验收流程

    图2 商户接入验收流程

    如图2,商户在收到微信支付审核通过的邮件后,即可用邮件中提供的开发者信息,启动测试验收工作。验收开始后,验收负责人可按照下表步骤操作:

    步骤

    准备项

    说明

    1

    商户通过审核,收到审核通过的邮件。

    邮件中包含了商户的MCHID、APPID及密码等开发者信息。

    2

    测试硬件全部到位,且被测的APP已被成功安装在硬件。

    1、APP支付:测试手机(安卓/IOS/winphone)1台,被测app及微信已安装

    2、JSAPI支付:测试手机(安卓/IOS/winphone)1台,微信已安装且已关注被测公众号

    3、付款码支付:被测app已被安装至收银台平板,机具或扫码枪功能正常

    4、Native支付:联网PC一台,且网站已接入微信支付功能;手机1台,已安装微信

    3

    关注公众号“微信支付商户接入验收助手”( 微信号: WXPayAssist),在验收case栏,选择本次接入的支付类型,如付款码支付,即可看到全部验收用例。

    4

    修改代码或配置中所有微信支付api的链接,对接仿真系统。

    例如:付款码支付现网的api

    https://api.mch.weixin.qq.com/pay/micropay

    变更为:

    https://api.mch.weixin.qq.com/sandboxnew/pay/micropay

    5

    严格按照用例的顺序、金额执行用例,确保用例的检查点完全符合预期。

    注意:

    用例分必选和可选。必选是一定要验的,否则会直接导致验收审核不通过;可选是建议商户要做的,但不验也不会影响验收结果。

    6

    全部用例测试通过后,商户在公众号“我的验收”里提交验收通过申请。微信支付团队将在3个工作日内完成验收审核。

    验收审核通过后,商户会收到邮件通知,相关支付权限开通,可正式上线交易;对于验收不通过的原因,可在公众号“我的验收”里查询验收详细结果,对未通过的case回归测试。

    展开全文
  • XXE漏洞需要您在回调处理代码里面解析XML之前,加入禁用实体解析的代码,不同语言设置的内容不同,下面提供了几种主流开发语言的设置指引(您可以根据关键字找到xml解析组件采取对应方法升级):【PHP】 解析XML代码前...
  • 1、商户最后请求拉起微信支付收银台的页面地址我们称之为“支付目录”,例如:https://www.weixin.com/pay.php。 2、商户实际的支付目录必须和在微信支付商户平台设置的一致,否则会报错“当前页面的URL未注册:” ...
  • 总金额,代金券或立减优惠金额,微信退款单号,商户退款单号,退款金额, 代金券或立减优惠退款金额,退款类型,退款状态,商品名称,商户数据包,手续费,费率 当日成功支付的订单 交易时间,公众账号ID,商户号,子商户号,...
  • 微信浏览器里面打开H5网页中执行JS调起支付。接口输入输出数据格式为JSON。注意:WeixinJSBridge内置对象在其他浏览器中无效。getBrandWCPayRequest参数以及返回值定义:1、网页端接口请求参数列表(参数需要重新...
  • 微信浏览器里面打开H5网页中执行JS调起支付。接口输入输出数据格式为JSON。注意:WeixinJSBridge内置对象在其他浏览器中无效。getBrandWCPayRequest参数以及返回值定义:1、网页端接口请求参数列表(参数需要重新...
  • 发起该笔交易的微信支付商户号,8~10位数字 示例值:1234567890 子商户号 如果是普通受理模式下的交易,展示特约商户的商户号,8~10位数字 如果是直连模式交易,则展示成数字0 示例值:0 设备号 该笔交易下单时在...
  • 非常详细的微信支付流程,有源码、开发文档、截图,并且附有大部分的截图,因涉及到商业机密,图片重要部分均打有马赛克,望见谅!
  • 介于第一版本写的有点乱,所有才有了第二版本..... ...本文档主要是为了给你们一个我集成比较完美的一个Demo,便于大家开发,如果你要了解其中的原理请到我的第一个比较乱的文章吧....网址:https://www.jiansh...
  • 微信支付集成文档

    2016-12-29 15:33:09
    APP支付又称移动端支付,是商户通过在移动端应用APP中集成开放SDK调起微信支付模块完成支付的模式。 本文档旨在指导开发者快速集成微信APP支付,包括开发者帐号申请、服务器配置以及安卓端配置。
  • 3.2. API接入(含示例代码)本章节展示了如何使用微信支付服务端 SDK 快速接入小程序支付产品,完成与微信支付对接的部分。注意:文档中的代码示例是用来阐述 API 基本使用方法,代码中的示例参数需替换成商户自己账号...
  • 一、开通现金红包权限注意: ...操作路径:【登录微信支付商户平台——>产品中心——>现金红包——>开通】。说明:在开通时请如实选择你的使用场景,且在红包的发放过程中如实上报你的场景,如有作假,微信...
  • 付款方式◆ 支持API接口或网页操作,付款至目标用户。收款用户身份指定◆ 通过APPID+OPENID指定收款用户。◆ APPID需要为申请商户号时的APPID,或者与商户号有绑定关系。◆ OPENID的获取方式,可参照:...
  • 微信接口可能增加字段,验证签名时必须支持增加的扩展字段 第二步,在stringA最后拼接上key得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,再将得到的字符串所有字符转换为大写,得到sign值...
  • 微信支付

    千次阅读 2016-12-27 09:44:36
    需要相关文件和权限 微信支付需申请开通 微信公众平台开发者... 微信支付开发者文档:https://pay.weixin.qq.com/wiki/doc/api/index.html 微信支付SDK下载地址:https://pay.weixin.qq.com/wiki/doc/api/jsap
  • 操作路径:【登录微信支付商户平台——>产品中心——>小程序红包——>开通】。首次开通时需要选择一个具体的小程序进行权限申请,如下图所示:其他需要开通权限的小程序,可在页面自行设置。操作路径如下:...
  • 微信支付开发

    2020-08-03 21:49:52
    微信支付开发者文档中给出的API进行了封装。 com.github.wxpay.sdk.WXPay类下提供了对应的方法: 方法名 说明 microPay 刷卡支付 unifiedOrder 统一下单 orderQuery 查询订单 reverse 撤销订单 closeOrder 关闭...
  • php微信支付

    2016-09-25 09:43:05
    1.开发环境  Thinkphp 3.2.3  微信:服务号,已认证  开发域名:http://test.paywechat.com (自定义的域名,外网不可访问) 2.需要相关文件和权限  ...微信支付开发者文档:https://pay.weix
  • 微信支付 Java SDK

    2019-12-24 17:47:06
    微信支付开发者文档中给出的API进行了封装。 com.github.wxpay.sdk.WXPay类下提供了对应的方法: 方法名 说明 microPay 刷卡支付 unifiedOrder 统一下单 orderQuery 查询订单 reverse 撤销订单 ...
  • PHP微信支付开发

    2017-10-25 14:00:40
    1.开发环境 Thinkphp 3.2.3 微信:服务号,已认证 开发域名:http://test.paywechat.com (自定义的域名,外网不可访问) 2.需要相关文件和权限 微信支付需申请开通 ...微信支付开发者文档:https://pay.weixi

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 549
精华内容 219
关键字:

微信支付开发者文档