⾕歌⽀付服务端详细讲解(PHP)
前不久公司拓展海外市场,要接⼊google⽀付。刚开始⼀头雾⽔,相关的⽂档实在太少。⽽且很多东西都需要FQ,不过好在摸索⼏天后,总算调试通了。
前提:FQ
1、注册账号google账号
2、注册googleplay开发者账号
这⼀步骤需要Google账号和带有Visa或Master等标志的银⾏卡或者信⽤卡,资费25美元
3、新建auth2.0应⽤
4、get请求获取code
参数:
scope=leapis/auth/androidpublisher
response_type=code access_type=offline redirect_uri=上⼀步获取的 client_id=上⼀步获取的
浏览器访问:le/o/oauth2/auth?scope=leapis/auth/androidpublisher&response_type=code&access_type=offline&redirect_uri=test1fffff.firebaseapp/oauth2callback/oauth2callback&client 获得:test1fffff.firebaseapp/oauth2callback/oauth2callback?code=4/CpVOd8CljO_gxTRE1M5jtwEFwf8gRD44vrmKNDi4GSS.kr-GHuseD-oZEnp6UADFXm0E0MD3FlAI
该步骤获得code=4/CpVOd8CljO_gxTRE1M5jtwEFwf8gRD44vrmKNDi4GSS.kr-GHuseD-oZEnp6UADFXm0E0MD3FlAI
5、利⽤code 获取refresh_token  (post请求)
  地址: $refresh_token_url="le/o/oauth2/token";
  请求参数:
$data_tmp1 = array(
'grant_type'=>'authorization_code',
'code'=>'',//上⼀步获取的
南京有什么好玩的
'client_id'=>'',//第三步获取
'client_secret'=>'',//第三步获取
'redirect_uri'=>'',//第三步获取
);
$http = new http($refresh_token_url,'POST',5);
$http->setContent($data_tmp1);
$results = $http->exec();
echo $results;
会得到这样⼀个东西:端午朋友圈文案
{
"access_token" : "",高尔夫规则
营养健康饮食
"token_type" : "Bearer",
祛痘产品排行榜10强"expires_in" : 3600,
"refresh_token" : ""
}
注意:这个refresh_token只会返回⼀次,后⾯不会在有,⼀定要好好保存。
这⼀步也需要FQ的,如果在linux上可直接⽤
curl  -d  "grant_type=authorization_code&code=4/AA96BteP0IlQj4DW48_2Uw8nVCyAWXswO1FvLftI09q1aomYPaxEo5urHY_Ij9VxKDoNh8rs6cIS8&client_id=leusercontent&client_secret=wKskn 6、最后就可以开始写验证脚本了
1public function JpGooglePay(){
2$google_public_key    = "你的公钥(google后台在你的应⽤下获取)";
3$inapp_purchase_data  = $_REQUEST['signtureTemp'];
4$inapp_data_signature = $_REQUEST['signtureDataTemp'];
5$key        = "-----BEGIN PUBLIC KEY-----\n".chunk_split($google_public_key, 64,"\n").'-----END PUBLIC KEY-----';
6$key        = openssl_pkey_get_public($key);
7$signature  = base64_decode($inapp_data_signature);
8$ok        = openssl_verify($inapp_purchase_data,$signature,$key,OPENSSL_ALGO_SHA1);
9if (1 == $ok) {
10// ⽀付验证成功!
11            //进⾏⼆次验证,订单查询
12
13            // 1.获取access_token(3600秒有效期)
14$access_token_url = "le/o/oauth2/token";
15$data_tmp2 = array(
16                'grant_type'=>'refresh_token',
17                'refresh_token'=>'',//长效token
18                'client_id'=>'',    //客户端id
19                'client_secret'=>'',//客户端密钥
20                );
21$http = new http($access_token_url,'POST',5);
22$http->setContent($data_tmp2);
23$result = $http->exec();
24$result = json_decode($contents,true);
25$access_token = $result['access_token'];
26//2.通过获得access_token 就可以请求⾕歌的API接⼝,获得订单状态
向往的生活4播出时间
27$packageName=""//包名
28$productId="" //产品Id
29$purchaseToken=""
30$url = "leapis/androidpublisher/v2/applications/{$packageName}/purchases/products/{$productId}/tokens/{$purchaseToken}?access_token={$access_token}";
31$http = new http($url,'GET',5);
32$http->setContent($data);
33$contents = $http->exec();
34$contents = json_decode($contents,true);
35if($contents['consumptionState'] == 0 && $contents['purchaseState'] == 0){
36//验证成功购买成功并且没有消耗  google⽀付中客户端如果没有进⾏消耗是不能再次购买该商品
37                //处理游戏逻辑发钻⽯,通知客户端进⾏消耗
38            }else{
39//订单验证失败
40            }
41        }else{
42//签名验证失败
43
44        }
45    }