该文章或问题已被删除

5+APP 支付宝支付 功能介绍

在APP中要使用支付宝功能,需要在 支付宝开放平台申请相关支付功能:https://open.alipay.com/platform/home.htm

支付宝支付,相比微信支付简单多,不需要在APP客户端填写相关参数,直接在服务器端操作,返回相关参数到客户端,然后调起支付宝支付窗口。

支付宝比微信支付好,不需要重复申请,申请一个,多个应用共用都可以。

1.要使用支付宝支付功能,前端跟微信支付一样,勾选支付宝支付,支付宝不需要填写相关参数

 2.  获得 5+APP 支付的方法,通过 plus.payment.getChannels 方法获取相关支付通道,如果勾选到微信支付和支付宝,它将会循环出来。

 // 获取支付通道, 这里的支付通道,主要是官方支持的一些支付方法,可以在SDK配置,微信和支付宝相关参数

var pays=[]; //储存相关支付通道的信息

plus.payment.getChannels(function(channels)
{

for(var i in channels)
{
var channel=channels[i];
if(channel.id=='qhpay'||channel.id=='qihoo')
{	// 过滤掉不支持的支付通道
continue;
}
console.log("支付方式:"+channel.id); //
pays[channel.id]=channel;

}	
});	

3. 例如后端PHP 的支付宝API 生成相关参数返回前端,调起支付宝支付窗口

 首页先下载支付宝的PHP 支付SDK文件,然后修改下相关参数

<?php
require_once ('AopSdk.php');

class Alipay
{
    /**
     * 应用ID
     */
    const APPID = '2018012402052286';
    /**
     *请填写开发者私钥去头去尾去回车,一行字符串
     */
    const RSA_PRIVATE_KEY = 'MIIEowIBAAKCAQEAuY/PUdR3XKuYCzYXxP2WNamBa03xNrzIlNljyi5vUsJl6rNgCC4tCxQOyl9bFd+yJu5hzoDRoB+674oLSKi6ErG6g0F3YjvfE7Ff5oK3P6GkovOsRZ6cGCp3eQua7lPSdtUnq8jUKgi03LJmcg2Nq9Vz9GRmlDAiE1RNU9PjlPBy5yKT/c4Lt83zpGnMU6ZKAqLeJyD+21Pd6Wj0K/uYtVMD0O4lpra2jl14J9u6I7Shcq9QwlCFURbtPBbIWQhcZ1FZNW08ophl1aC0b+J5FmGYD8IwbPDBipfDAXwVDteODJWweS1NB2oLr9zpwOucKqWgEpXdX8MHs/TdJGZyUQIDAQABAoIBAQCpwzSDg6KTyHS4RQun7+vdOi8psUvtrPbAnsWZsbOs/iZpeyNvOHeC/B2v7V8Seu2sikg2uUmOeZj3Ds7V8W8SLUEaVelXmLi0doDrDUmC0GojnlRL+RiLT0awGfrq8QrKJqY9pIgt0HtHX9MzosyqmQSVYMkr54E1N9nqyB4cIfNuP6OidzZ8QB2i0/ArfPs4Dwq10lNLGlx5aTg4WoAKb4XMKTDwim1WE1n1lyXh1o+xSczQ7pXrqfFioqLu8SjPPCi22gg0v24a5KhHnuWGwPpEGwwkB+LApkKiBsJ+1jVZHKWd9YgsPXrzK6PoK38BAvVnW1BPU0wQ6xlFYmsxAoGBAOSDdy5yvbnWTZbrPfA9ySgATNpOJvERCH7j/JYqC738SeVWLZ0sCgWL7EqZn1xdAM+s7IP44VlT1WnQhTGKul7NKTn7LYkA+1a4RA9qDWs7ygLQ8gUPseHDeRs/sTQfoBZT/FJ3nd78psVQ3LTfkCidWc9utw7wcjJzH610b6l9AoGBAM/hvua5LW1Bobnws3DMVHXMTkZmfyhn5mk4+ABs7uaKqxK0d0137F3MiKt6h9K7izHqIfRirExBKYe0W+HNGI5aTq+19OrMD3eNAxG8xJbkaiPkbiTaQkG10rIWqQEyvmCe2TAe+3mHUQQlFW5Y7MiZNF9XcYUXTAlUhz7x/yRlAoGABXpNShTADYtgksSS2IZyov3W2cjT0CWLYZdPf74ESAqbLt8w+rqKhvWCtYsXMdyc312S0dsOc9i5ne68sqJTs2ARo+0se0NFwx9pqkDtj2uAfS7LDmoA5puL9KZDNi+n48EhpExvwV+nE8XLdJ6DUyXqeDl8M+R5qFHwKXVIE/UCgYBVwe8bB3FyDQ1Gw8GC2whMwEfaSxZR+OrYpaPJqSa0/KeuQ7yjvMFJwMLw2s+FY9D8enYfd0VU/9y+Gu18rTtgHmkvm4S6CAypaQbHHnSLOxd+TxIRKekDaprM1QRLdj+LZHx8mYtsiyIk75dzukOUTX+JhW1TVlUL1E8m7HYw8QKBgHQgPDBrqTKH0YR5zYdYQdWroMhws83HuJvpPEcUNr76cDm5cxSsAY7mDBjXLnqIY2WmH2luvijJUbYqXNp+0Kco/ev8RC2yQelUjTokUkcQLkU6niQAGguxG+G1wlwj3fBpH+ZEIG8oyWe36Nnx/kbyLUGDygfDJ43f+Cfrkbpd';
    /**
     *请填写支付宝公钥,一行字符串
     */
    const ALIPAY_RSA_PUBLIC_KEY = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArXEW1vnwcp54Y6JFuUnxtJTT0O/AVwgzHNFYo77RbPkU8pi2j7wL/13A0NNs6Ls+SEPHpWKhyvy3fSAWGVNNgCqeip6vP7aqL8sY9qDMN7l8Gz7ht2uqRW6K7p6fezcEtugDlZqE//Fblg1TIdGejAZ+iwEaH+fcyLe6pqxNi3rQh3BlfoXJMgcCyxx1k27r7tnctTiuiXGR3Yfr6wP6x+QB6WSLNQaUsEDiUTmlnxoybrFnh4SsSWxYwvvINguCBoWCjC0jtgcMAdxK85o3EfbE4M02oaBJqYMy1wlv4kKaMBCI5OuRdcmlRyjMsTD/LR3eWhRa5bDGo2p5JNQHqwIDDAQAB';
    /**
     * 支付宝服务器主动通知商户服务器里指定的页面
     * @var string
     */
    private $callback = "http://app.html5-app.com/alipay_notify.php";

    /**
     *生成APP支付订单信息
     * @param string $orderId   商品订单ID
     * @param string $subject   支付商品的标题
     * @param string $body      支付商品描述
     * @param float $pre_price  商品总支付金额
     * @param int $expire       支付交易时间
     * @return bool|string  返回支付宝签名后订单信息,否则返回false
     */
     function unifiedorder($orderId, $subject,$body,$pre_price)
	 {
		 
		// return "fffff";
		// exit();
        try{
            $aop = new \AopClient();
            $aop->gatewayUrl = "https://openapi.alipay.com/gateway.do";
            $aop->appId = self::APPID;
            $aop->rsaPrivateKey = self::RSA_PRIVATE_KEY;
            $aop->format = "json";
            $aop->charset = "UTF-8";
            $aop->signType = "RSA2";
            $aop->alipayrsaPublicKey = self::ALIPAY_RSA_PUBLIC_KEY;
            //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
            $request = new \AlipayTradeAppPayRequest();
            //SDK已经封装掉了公共参数,这里只需要传入业务参数
           /* $bizcontent = "{\"body\":\"{$body}\","      //支付商品描述
                . "\"subject\":\"{$subject}\","        //支付商品的标题
                . "\"out_trade_no\":\"{$orderId}\","   //商户网站唯一订单号
                . "\"timeout_express\":\"{$expire}m\","       //该笔订单允许的最晚付款时间,逾期将关闭交易
                . "\"total_amount\":\"{$pre_price}\"," //订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000]
                . "\"product_code\":\"QUICK_MSECURITY_PAY\""
                . "}";*/
				
			$bizcontent = json_encode(array(
            'body'=>$body,

            'subject' => $subject,//支付的标题,

            'out_trade_no' => $orderId,//支付宝订单号必须是唯一的,不能在支付宝再次使用,必须重新生成,哪怕是同一个订单,不能重复。否则二次支付时候会失败,订单号可以在自己订单那里保持一致,但支付宝那里必须要唯一,具体处理自己操作!

            'timeout_express' => '30m',//過期時間(分钟)

            'total_amount' =>$pre_price,//金額最好能要保留小数点后两位数

            'product_code' => 'QUICK_MSECURITY_PAY'
           ));	
				
            $request->setNotifyUrl($this->callback);
            $request->setBizContent($bizcontent);
            //这里和普通的接口调用不同,使用的是sdkExecute
            $response = $aop->sdkExecute($request);
            //htmlspecialchars是为了输出到页面时防止被浏览器将关键参数html转义,实际打印到日志以及http传输不会有这个问题
            return $response;//就是orderString 可以直接给客户端请求,无需再做处理。
        }catch (\Exception $e){
            return false;
        }

    }
}
 ?>


然后调用此方法类

$alipay=new Alipay();
$getalipay=$alipay->unifiedorder("订单号","商品标题","商品描述","金额"); 
$arr["datas"]=$getalipay; 

 5.APP前端返回数据后,通过 plus.payment.request 调起支付宝支付窗口

假如: 返回的是支付宝支付信息
 
plus.payment.request(pays["alipay"],data["datas"],function(returns)
{
 //支付成功
},function(e)
{
 // plus.nativeUI.alert(JSON.stringify(e));
//用户取消支付或出错
});
点赞 0      收藏 0

0 个评论

正在加载...

这里空空如也,快来补一刀!

加载更多

回答问题或评论文章请先 或者 注册