2017-07-19 13:19:00 fjnjxr 阅读数 12597
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27836 人正在学习 去看看 秦子恒

微信开放平台网址:https://open.weixin.qq.com

申请微信开放平台的主要目的:实现APP或者网站的微信登录。

所以要实现APP或者网站的微信登录,必须通过微信开放平台开发者资质认证(一年需要交纳300元)才能获得接口权限。


现在很多企业都已经实现了三证合一,这主要记录下三证合一填写申请时候的一些注意事项。


1、组织机构代码证
目前仅支持中国大陆企业;
注: 若由于三证合一原因没有组织机构代码证时可填统一社会信用代码;
2、企业工商营业执照(副本)
中国大陆工商局或市场监督管理局颁发的工商营业执照必须在有效期内,且须是当前企业最新的工商营业执照。
注: 三证合一统一社会信用代码18位,可在营业执照注册号位置上填写“注册号”或“统一社会信用代码”;
3、申请公函
请下载申请认证公函(模版参考示例)
填写认证公函需要提供公众号的原始ID,去我的账户信息查看原始ID。
上传加盖企业公章的原件照片或扫描件
4、其他证明材料
可提交其他证明材料。
注:上传文件需加盖企业公章的原件照片或扫描件
支持.jpg .jpeg .bmp .gif .png格式照片,大小不超过2M。

2018-07-20 15:49:11 qq_34190023 阅读数 47632
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27836 人正在学习 去看看 秦子恒

微信开放平台开发系列文章:

微信开放平台开发第三方授权登陆(一):开发前期准备

微信开放平台开发第三方授权登陆(二):PC网页端

微信开放平台开发第三方授权登陆(三):Android客户端

微信开放平台开发第三方授权登陆(四):微信公众号

微信开放平台开发第三方授权登陆(五):微信小程序

 

目录

一、前期准备流程

二、具体实现步骤

1、注册邮箱账号

2、注册微信开放平台账号、完善开发者资料

3、申请开发者资质认证

1)申请开发者资质认证

2)选定类型

3)填写“认证资料”

4)填写“管理员信息”

5)上传“企业基本信息”材料:

6)进入填写发票及支付费用

4、创建应用

1)创建网站应用

2)创建移动应用

5、申请微信登陆功能

三、注意事项

四.主要提供材料

五、特殊情况处理方案


据微信开放平台“开发资源”中网站应用微信登陆功能开发指南描述:进行授权登陆接入前,需要先注册一个开发者账号,并拥有一个已经审核通过的网站应用,并获取AppID和APPSecret,然后申请微信登陆并通过审核后,可以接入流程进行开发。

据开发者资质认证处介绍:开发者资质认证通过后,微信开放平台帐号下的应用,将获得微信登录、智能接口、第三方平台开发等高级能力。

所以在微信第三方授权登陆获取用户信息开发前,需要做一些前期准备。目的是获取到AppID以及AppSecret,并成功申请微信登陆功能

一、前期准备流程

1、注册邮箱账号。

2、根据邮箱账号注册微信开放平台账号,完善开发者资料。

3、申请开发者资质认证、填写相关资料、填写发票、支付认证金额。提交并等待认证结果

4、认证成功后,创建网站应用,填写基本信息、下载网站信息登记表填写并上传扫描件、填写授权回调域等。提交审核等待结果。

5、认证成功后,创建移动应用,至少选择安卓、IOS、WP8其中一种平台

6、创建应用成功后,申请微信登陆,等待审核结果,待审核通过后,可进行微信登陆的开发。

注:创建应用和开发者资质认证可同时进行

准备工作大致流程图

二、具体实现步骤

1、注册邮箱账号

支持网易邮箱、QQ邮箱等常规邮箱。此邮箱将成为日后登陆开放平台的账号

 

2、注册微信开放平台账号、完善开发者资料

1)填写邮箱进行注册、开放平台将发送邮件到填写邮箱中,点击邮件上的地址进行开发者资料的完善。(开放平台注册地址:https://open.weixin.qq.com/cgi-bin/readtemplate?t=regist/regist_tmpl&lang=zh_CN

2)开发者资料完善:主要填写注册人信息。如真实姓名、真实手机号码、联系地址、身份证号码。使用注册人的微信扫码绑定为管理员。提交信息。(邮件信息包含地址,点击后进行资料完善)

3)完善资料后,根据邮箱及密码进行登录

 

3、申请开发者资质认证

1)申请开发者资质认证

登录后,点击右上角邮箱号进入“基本资料”,点击“开发者资质认证”,显示未认证,点击“现在申请”。

认证成功后,这里将变成认证成功:

2)选定类型

同意“微信开放平台开发者资质认证服务协议”,点击下一步。选择类型为“企业”,点击确定。

注:类型包含了企业、网店商家、媒体(事业单位媒体、其他媒体)、政府及事业单位、其他组织(社会团体、民办非企业、其他组织)

3)填写“认证资料”

包括企业全称、组织机构代码、工商执照注册号、法定代表人/企业负责人姓名、经营范围(一般经营范围)、企业规模(选填)、企业开户名称、企业开户银行、企业银行账号。

4)填写“管理员信息”

包括账号管理员姓名、账号管理员部门与职位、账号管理员手机号、管理员座机、管理员电子邮件、身份证号。最后需要使用管理员的微信进行扫码。

5)上传“企业基本信息”材料:

需要准备的材料及要求如下

I.组织机构代码证

组织机构代码证必须在有效期范围内。必须是原件照片、扫描件或复印件加盖企业公章后的扫描件。图片不超2M

II.企业工商营业执照

中国大陆工商局或市场监督管理局颁发的工商营业执照,且必须在有效期内。要求原件照片、扫描件或者复印件加盖企业公章后的扫描件

III.申请公函下载打印

如果是一般企业需要先下载“一般企业申请认证公函”,个体下载“个体工商户申请认证公函”(见附件中“一般企业申请认证公函.doc”及“个体工商户申请认证公函.doc”或于网站中下载)。对下载的申请公函进行打印。

IV.填写申请公函信息

填写内容主要有(根据不同企业类型进行填写,只需要填写其中一个就可以):

A.一般企业申请认证公函:

a.企业信息:申请企业全称、官网(可缺省)、办公电话、办公地址、企业规模、企业简介(要说明企业经营范围,重要历程,主要产品和服务及覆盖区域等事项)、

b.法定代表信息:法定代表人姓名、身份证号码、应用的Appid(这时还没有Appid,此项不填)、登陆Email、

c.申请相关信息:申请认证理由、提供的服务、

d.账号运营者信息 : 账号运营者姓名、部门及职位、身份证号、手机号、办公联系电话、电子邮箱

e.填写认证申请公函:最后运营者签字并加盖企业章

B.个体工商户申请认证公函:

a.个体工商户信息:个体工商户全称、官网(可缺省)、办公电话、办公地址、规模、简介(主要说明经营范围,重要历程,主要产品和服务及覆盖区域等事项)

b.经营者信息:经营者姓名、身份证号码、应用的Appid(这时还没有Appid,此项不填)、登陆Email

c.申请相关信息:申请认证理由、提供的服务、

d.账号运营者信息:账号运营者姓名、部门及职位、身份证号、手机号、办公联系电话、电子邮箱

e.填写认证申请公函:最后运营者签字并加盖企业章

V.对填写好的申请公函进行上传图片:

上传加盖企业公章的原件照片或扫描件

点击下一步。

6)进入填写发票及支付费用

等待认证结果。

注:开发者认证费用为300.有效期一年,可在最后三个月申请年审续期

 

4、创建应用

1)创建网站应用

进入开放平台首页(https://open.weixin.qq.com),点击上方“管理中心”,点击“网站应用”,点击“创建网站应用

I.填写基本信息

包括网站应用名称、英文名(选填)、应用简介、英文简介(选填)、应用官网。

II.上传网站信息登记表扫描件及网站应用图片

       A. 网站信息登记表

先下载《微信开放平台网站信息登记表》(见附件”微信开放平台网站信息登记表.doc”).然后进行填写打印。最后盖章,上传扫描件。图片不超过2M

网站开放平台信息登记表填写内容包括:

a. 网站信息:

1)网站网址:要创建第三方准备使用的网址。

2)网站备案号/许可证号

3)主板单位名称/个人姓名

4)单位/个人官网网址

5)单位/个人所在地: 

6)单位/个人简介:

b. 开发者账户信息

1)邮箱:注册微信开放平台的注册邮箱

2)网站应用名称:与开放平台填写的网站应用名称一致

c. 负责人信息

1)  姓名

2)  职务

3)  联系人手机

4)  责任人个人邮箱

然后填写责任人签名。职务。以及填写日期,最后盖上申请公司的章

       B. 网站应用图片

上传网站应用水印招聘。28*28像素以及108*108像素的png图片,大小不超过300k。

上传完成后,点击下一步

III.填写授权回调域

填写合法的域名。第三方授权登陆后,只能回调到该域名下的页面。(即,开发的网站上线后的域名)

审核时间大概7个工作日内(审核资料完整正确的话,大概3天左右能审核通过)

审核不通过的话,会显示驳回,并且告知哪个环节审核不通过,可以重新修改再审,

审核成功页面:

2)创建移动应用

进入开放平台首页(https://open.weixin.qq.com),点击上方“管理中心”,点击“移动应用”,点击“创建移动应用

I.填写基本信息

包括移动应用名称、英文名(选填)、应用简介、英文简介(选填)、应用官网。

II.上传移动应用图片

    上传移动应用水印图片28*28像素的png图片,以及移动应用高清图片108*108像素的png图片。大小均不超过300k

III.填写平台信息

     选择平台,一共有三种平台:ISO应用、Android应用和WP8应用

     至少选择一个平台,可以多选。

A. IOS应用

       细分为iPhone和iPad,可多选

       这两种设备类型均需要提供“Bundle ID”(ISO应用唯一标识)、“测试版本Bundle ID”(ISO应用测试版本的BundleID)、“AppStore下载地址”(选填)

B.Android应用

        需要提供 “应用签名” 和 “应用包名”,以及“应用下载地址(选填)”

     应用签名可以使用签名生成工具直接从安装当前应用的手机获取,应用签名由开发者签名该应用的keystore文件决定

     应用包名在manifest文件里声明,要和正式发布应用的包名一致。

C.WP8 应用

        WP8应用只需要填写“应用下载地址(选填)”就可以了。

注意:应用若还没有提交到应用市场,下载地址等可以暂时为空,提交到应用市场后,可修改下载地址。

 

注:

1.审核将在三个工作日内完成,目前只审核开发者的资质和真实性,不涉及应用内容本部,不需要开发者提交ipa文件或将含微信SDK的版本在AppStore上线后再审核,但要求开发者提供该应用已经上线的版本的下载地址

2.同一应用在不同平台的版本应共用一个AppID

审核成功后的页面(Android)

5、申请微信登陆功能

成功创建应用并审核通过后,点击应用右方“查看”可以查看应用详情。

在“接口信息”一栏中,查看当前应用拥有的接口权限。

选中“微信登陆”接口,点击右方申请开通,开通微信登陆功能。

 

三、注意事项

1、开发者资质认证结果只有成功或失败两种情况。审核费用与最终是否审核通过无关。每申请一次,就需要支付一次审核服务费用

2、我方在完成在线申请及资料提交流程,并完成审核服务费用支付后,腾讯会在15个工作日内展开认证工作,我方应积极配合腾讯及第三方审核公司的认证需求,并有权随时了解、查询认证进度

3.认证失败原因可能情况:

1)由于我方原因,经腾讯三次系统通知用户调整申请内容,我方仍未能满足开发者资质认证要求的;

2)由于我方原因:自用户付费之日起三十日,我方仍未能满足开发者资质认证要求之一;

3)因其他原因而不能认证成功的情形

4、网站应用和移动应用一个开发者最多只能登记10个。

 

四.主要提供材料

主要提供材料,详情见“具体实现步骤

  1. 微信开放平台登陆邮箱
  2. 开发者个人详细信息
  3. 企业信息及法人(负责人)信息(包括官网等)
  4. 企业账号管理员信息(包括微信扫码)
  5. 企业章
  6. 应用官网及备案号/许可证。 应用图标。

 

五、特殊情况处理方案

1.若我方向腾讯或者第三方审核机构提供的资料和信息如有变更的,应当及时采取以下措施:

1)如处于认证过程中的资料和信息发生变更,用户应立即通知腾讯或负责认证订单的第三方审核机构更新有关资料及信息;

2)如认证成功后资料和信息发生变更,用户应及时申请补充订单变更有关资料及信息;

3)如认证成功后腾讯发现资料和信息存在错误,用户应及时申请补充订单更正有关资料及信息。

2016-09-21 10:33:47 qq_31927865 阅读数 9440
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27836 人正在学习 去看看 秦子恒

 

微信支付前的准备工作

1 开发者资质认证

 微信支付开发第一步就是使用公司管理者/高层帐号登录微信开放平台,进入“账号中心”,进行开发者资质认证,需要填写公司资料,包括但不限于,公司注册号,公 司营业执照,公司对外办公电话,公司对公银行卡信息(卡号,发卡行)。审核时间一般是1~7个工作日,我们一天就审核通过了,这一步非常简单。


备注:1、因为从2015年10月1日起,国家实行三证(组织机构代码证,企业营业执照,税务登记证)合一,所以组织机构代码处填写-工商执照注册号,同样,组织机构代码证,上传-企业工商营业执照。 
备注2:进行开发者资质认证需要支付300元人名币/年,只有具备开发者资质认证的开发者才能够使用app支付,授权登录等接口。

2、我们申请的微信支付审核通过以后,会收到一个来自官方的邮件,在新版本里面已经不会直接附上KEY,而是需要用户进入商户平台设置自己的KEY。

2  创建应用

 根据所提示的信息填写即可。

申请通过之后就会有AppIDAppSecret  此时的appid不能直接拿来做微信支付,因为还有一个重要的一步要开通微信支付。

3  开通微信支付

详情请查阅微信APP支付接入商户服务中心

 

点击申请开通微信支付

根据提示填写相关的信息,开通微信支付审核比较严格,觉得有点坑,注意第三方支付公司和demo一定是审核不通过的!!!!

注意:如果app还没有上线而且界面还没有完善,可以用美工做好的图上传上去。审核时间一般7个工作日。

微信团队会在7个工作日给出审核结果,结果会发送到开放平台通知中心邮箱中,通过审核后,商户将收到邮件通知,邮件中包含商户号和登录密码,请牢记申请时填写的邮箱地址。后台也要绑定相关的商户号。

4  验证结算账户,在线签署协议

1)验证账户,签署协议:

微信支付会向申请时提交的结算账户汇入一笔金额随机的验证款,登陆商户平台 回填验证款,并签署在线协议,开启结算功能。

2)开始开发工作:

开发文档:微信支付App支付开发文档

 

 

 

微信支付详细步骤    

     1.获取订单信息

    2.根据订单信息和支付相关的账号生成sign,并且生成支付参数

   3.将支付参数信息POST到微信服务器,获取返回信息

   4.根据返回信息生成相应的支付代码(微信内部)或是支付二维码(非微信内),完成支付。

1、后台设置

商户在微信开放平台申请开发应用后,微信开放平台会生成APP的唯一标识APPID。由于需要保证支付安全,需要在开放平台绑定商户应用包名和应用签名,设置好后才能正常发起支付。设置界面在【开放平台】中的栏目【管理中心 / 修改应用 / 修改开发信息】里面,如图红框内所示。

 

应用包名:是在APP项目配置文件AndroidManifest.xml中声明的package值,例如DEMO中的package="net.sourceforge.simcpux"。

应用签名:根据项目的应用包名和编译使用的keystore,可由签名工具生成一个32位的md5串,在调试的手机上安装签名工具后,运行可生成应用签名串,如图所示,绿色串即应用签名。签名工具下载地址https://open.weixin.qq.com/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android.apk

 

2   添加依赖包

Android Studio环境下:在build.gradle文件中,添加如下依赖即可:

dependencies {
    compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
}

dependencies {
    compile 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
}

3、注册APPID

商户APP工程中引入微信JAR包,调用API前,需要先向微信注册您的APPID,代码如下:

final IWXAPI msgApi = WXAPIFactory.createWXAPI(context, null);

// 将该app注册到微信

msgApi.registerApp("wxd930ea5d5a258f4f");

4 获取微信支付参数 

把订单信息提交给后台,后台返回微信支付所用的值,比如paysing签名信息

5、调起支付


IWXAPI api;
PayReq request = new PayReq();
request.appId = "wxd930ea5d5a258f4f";
request.partnerId = "1900000109";
request.prepayId= "1101000000140415649af9fc314aa427",;
request.packageValue = "Sign=WXPay";
request.nonceStr= "1101000000140429eb40476f8896f4c9";
request.timeStamp= "1398746574";
request.sign= "7FFECB600D7157C5AA49810D2D8F28BC2811827B";
api.sendReq(request);

注意:该sign生成字段名列表见调起支付API

6、支付结果回调

在app包下新建wxapi包,比如app包名为com.test.app,那个新建的包路径为com.test.app.wxapi,该包下新建WXPayEntryActivity,继承自任意Activity。该Activity用以接收支付结果回调,清单声明此Activity的格式为(包名或类名不一致会造成无法回调)

 

在WXPayEntryActivity类中实现onResp函数,支付完成后,微信APP会返回到商户APP并回调onResp函数,开发者需要在该函数中接收通知,判断返回错误码,如果支付成功则去后台查询支付结果再展示用户实际支付结果。注意一定不能以客户端返回作为用户支付的结果,应以服务器端的接收的支付通知或查询API返回的结果为准。代码示例如下:


public void onResp(BaseRespresp){
  	if(resp.getType()==ConstantsAPI.COMMAND_PAY_BY_WX){
  		Log.d(TAG,"onPayFinish,errCode="+resp.errCode);
  		AlertDialog.Builderbuilder=newAlertDialog.Builder(this);
  		builder.setTitle(R.string.app_tip);
  	}
}

回调中errCode值列表:

名称 描述 解决方案
0 成功 展示成功页面
-1 错误 可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。
-2 用户取消 无需处理。发生场景:用户不支付了,点击取消,返回APP。

WXPayEntryActivity代码示例

 

public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler
{
    
    private static final String TAG = "MicroMsg.SDKSample.WXPayEntryActivity";
    private IWXAPI api;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.allscore_pay_result);
    
        api.handleIntent(getIntent(), this);


    }
    
    @Override
    protected void onNewIntent(Intent intent)
    {
        super.onNewIntent(intent);
        setIntent(intent);

    }
    
    @Override
    public void onReq(BaseReq req)
    {
    }
    
    @Override
    public void onResp(BaseResp resp)
    {
        if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX)
        {
            // resp.errCode == -1 原因:支付错误,可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等
            // resp.errCode == -2 原因 用户取消,无需处理。发生场景:用户不支付了,点击取消,返回APP
            if (resp.errCode == 0) // 支付成功
            {
                Toast.makeText(this, "支付成功", Toast.LENGTH_SHORT).show();

            }
            else
            {
                Toast.makeText(this, "支付取消" , Toast.LENGTH_SHORT).show();


            }
            finish();
        }
    }



}


好了,微信支付的详细流程已经完成,如果最终结果掉不起来就看自己的包名,签名(微信支付必须正式打包测试

最方便的一种形式在build.gradle中写上你的签名包就可以啦~

//签名信息配置

    signingConfigs {
        release {
            storeFile file("./keystore/jxshop.jks")
            keyAlias "all"
            storePassword "all123"
            keyPassword "all123"
        }
        debug {
            storeFile file("./keystore/jxshop.jks")
            keyAlias "all"
            storePassword "all123"
            keyPassword "all123"
        }

    }

 

 

 

 


 

 

 

2017-08-18 16:47:02 lkjfyy 阅读数 856
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27836 人正在学习 去看看 秦子恒

最近公司项目要用到微信支付,看了官方文档,发现好多坑,按着他们的步骤来,十有八九会栽在那,于是,记录下我踩得坑,免得以后再摔跟头。

强烈吐槽:微信开发文档写的不是一般的糟心!好了,废话不多说了,开始正文:

一、前期准备工作:

首先去微信开放平台默认你已经注册了微信开发平台账号,微信支付需要开发者资质验证好像是300大洋大笑,一般由公司提供账号)创建应用,如下图,在管理中心创建应用,按提示操作进行就行,没什么难的


其中最重要的就是你填写的包名一定要跟你要集成的APP的包名一致,也就是你项目下,AndroidManifest文件下的pakage或者build.gradle文件下的applicationid,如下图:



然后需要在手机上安装你的APP和微信提供的获取签名的工具,输入上述包名,拿到签名,然后微信会分配给你AppID和AppSecret。

微信支付需要你还要再申请一次,过程省略了,按照官方说明就行,很简单的;

二、微信支付接入(默认已拿到所有的微信支付所需的信息,比如商户号,商户秘钥等)

不知道公司什么逻辑,把微信支付的所有的逻辑全写在客户端了,建议提交订单给微信端,获取微信预支付订单的操作在后台完成!

1、统一下单,拿到微信预支付订单

//调用微信支付
private void wxPay() {
    String ipAddress= NetUtils.getIPAddress(this).trim();//获取本机ip地址
    String random=MD5Util.mCreateRandom().trim();//生成随机数
    int total_fee= (int) (money*100);
    String stringA="appid="+Constants.APP_ID+"&body="+text+"&mch_id="+Constants.mch_id+"&nonce_str="+random+
            "&notify_url=http://wxpay.wxutil.com/pub_v2/pay/notify.v2.php&out_trade_no="+orderID+
            "&spbill_create_ip="+ipAddress+"&total_fee="+total_fee+"&trade_type=APP";
    String stringSignTemp=stringA+"&key="+Constants.key;//注:key为商户平台设置的密钥key
    String sign=MD5Util.md5(stringSignTemp).toUpperCase(); //注:MD5签名方式
    Log.e("获取stringSignTemp",stringSignTemp);
    Log.e("获取签名:",sign);
    Log.e("获取随机数:",random);
    String xml="<xml>\n" +
            "   <appid>"+Constants.APP_ID+"</appid>\n" +
            "   <body>"+text+"</body>\n" +
            "   <mch_id>"+Constants.mch_id+"</mch_id>\n" +
            "   <nonce_str>"+random+"</nonce_str>\n" +
            "   <notify_url>http://wxpay.wxutil.com/pub_v2/pay/notify.v2.php</notify_url>\n" +
            "   <out_trade_no>"+orderID+"</out_trade_no>\n" +
            "   <spbill_create_ip>"+ipAddress+"</spbill_create_ip>\n" +
            "   <total_fee>"+total_fee+"</total_fee>\n" +
            "   <trade_type>APP</trade_type>\n" +
            "   <sign>"+sign+"</sign>\n" +
            "</xml>";
    if (TextUtils.isEmpty(ipAddress)){
        ShowUtil.mToast(_this,"当前无网络连接");
    }else {
        Log.e("获取ip地址:",ipAddress);
        OkGo.<String>post(wxPayUrl)
                .tag(this)
                .upString(xml, MediaType.parse("application/xml"))
                .execute(new StringCallback() {
                    @Override
                    public void onSuccess(Response<String> response) {
                        String result=response.body().trim();
                        Map<String,String> map=XmlToMap.decodeXml(result);//把微信返回的xml封装进map
                        String prepay_id=MapUtils.get(map,"prepay_id","");//获取微信预支付订单
                        Log.e("微信支付请求结果:",result);
                        Log.e("获取微信预支付订单:",prepay_id);
                        if (TextUtils.isEmpty(prepay_id)){
                            ShowUtil.mToast(_this,"微信提交订单失败");
                        }else {
                            sendWXPayRep(prepay_id);//调起微信支付页面
                        }
                    }

                    @Override
                    public void onError(Response<String> response) {
                        super.onError(response);
                    }
                });
    }
}

这里要看清每个字段的名称,大小写都不要错,排序也不要错,否则拿不到预支付订单

2、调起微信支付界面

这里要用到一个类WXPayEntryActivity,这个类从官方提供的文档里复制过来用就行,但是注意一定要放在wxapi包下,wxapi包一定要放在你建项目的根包下,一定不能错,否则调不起!!!注意别忘记在AndroidManifest里注册WXPayEntryActivity!

//调起微信支付页面
private void sendWXPayRep(String prepayId) {

    String timeStamp=MD5Util.getTimeStamp()+"";
    Log.e("时间戳:",timeStamp);
    String random=MD5Util.mCreateRandom().trim();
    String stringA="appid="+Constants.APP_ID+"&noncestr="+random+"&package=Sign=WXPay&partnerid="+Constants.mch_id+
            "&prepayid="+prepayId+"&timestamp="+timeStamp;
    String stringSignTemp=stringA+"&key="+Constants.key;//注:key为商户平台设置的密钥key
    String sign=MD5Util.md5(stringSignTemp).toUpperCase(); //注:MD5签名方式

    //注册到微信
    IWXAPI api= WXAPIFactory.createWXAPI(this, Constants.APP_ID);
    api.registerApp(Constants.APP_ID);
    //设置商品信息
    PayReq payReq=new PayReq();
    payReq.appId=Constants.APP_ID;
    payReq.partnerId=Constants.mch_id;
    payReq.prepayId=prepayId;
    payReq.packageValue = "Sign=WXPay";
    payReq.nonceStr=random ;
    payReq.timeStamp=timeStamp;
    payReq.sign= sign;
    api.sendReq(payReq);
}

注意这里获取签名时,拼接的字段名跟要传递的参数字段名并不一致(坑),如appid并不是appId,partnerid并不是partnerId;

到这里应该能成功调起微信支付界面了,这个activity界面可以自己定义,自己布置view就行。

祝君成功!!!


2018-02-05 11:04:06 fudeluan 阅读数 15638
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27836 人正在学习 去看看 秦子恒

作为个人开发者,为自己的辛苦开发的项目配上支付功能,才有盈利的盼头!

现有一个支付方案推荐给大家。

无需身份证、无需微信账号密码、无资金中转,只要有一台电脑,即时实现个人支付功能!

因为无需任何资质,也无需资金中转直接到你的微信账号,所有安全可靠

因为以面对面付款,实现支付功能,所有一次接入永久可用

官方网站www.haoxiangyouxi.com

 

没有更多推荐了,返回首页